diff options
Diffstat (limited to 'code/sys')
| -rw-r--r-- | code/sys/con_tty.c | 18 | 
1 files changed, 8 insertions, 10 deletions
diff --git a/code/sys/con_tty.c b/code/sys/con_tty.c index 28f1fd4..f65f5f7 100644 --- a/code/sys/con_tty.c +++ b/code/sys/con_tty.c @@ -40,6 +40,7 @@ called before and after a stdout or stderr output  =============================================================  */ +static qboolean stdin_active;  // general flag to tell about tty console mode  static qboolean ttycon_on = qfalse;  static int ttycon_hide = 0; @@ -254,6 +255,7 @@ Initialize the console input (tty mode if possible)  void CON_Init( void )  {  	struct termios tc; +	const char* term = getenv("TERM");  	// If the process is backgrounded (running non interactively)  	// then SIGTTIN or SIGTOU is emitted, if not caught, turns into a SIGSTP @@ -263,10 +265,12 @@ void CON_Init( void )  	// Make stdin reads non-blocking  	fcntl( 0, F_SETFL, fcntl( 0, F_GETFL, 0 ) | O_NONBLOCK ); -	if (isatty(STDIN_FILENO)!=1) +	if (isatty(STDIN_FILENO) != 1 +	|| (term && (!strcmp(term, "raw") || !strcmp(term, "dumb"))))  	{ -		Com_Printf( "stdin is not a tty, tty console mode disabled\n"); +		Com_Printf("tty console mode disabled\n");  		ttycon_on = qfalse; +		stdin_active = qtrue;  		return;  	} @@ -408,18 +412,11 @@ char *CON_Input( void )  		return NULL;  	} -	else +	else if (stdin_active)  	{  		int     len;  		fd_set  fdset;  		struct timeval timeout; -		static qboolean stdin_active; - -		if (!com_dedicated || !com_dedicated->value) -			return NULL; - -		if (!stdin_active) -			return NULL;  		FD_ZERO(&fdset);  		FD_SET(0, &fdset); // stdin @@ -443,6 +440,7 @@ char *CON_Input( void )  		return text;  	} +	return NULL;  }  /*  | 
