fix dedicated server stdin console (#4009)

This commit is contained in:
Ludwig Nussel 2009-05-03 20:05:16 +00:00
parent 732c405e15
commit 799150ffc1

View file

@ -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 // general flag to tell about tty console mode
static qboolean ttycon_on = qfalse; static qboolean ttycon_on = qfalse;
static int ttycon_hide = 0; static int ttycon_hide = 0;
@ -254,6 +255,7 @@ Initialize the console input (tty mode if possible)
void CON_Init( void ) void CON_Init( void )
{ {
struct termios tc; struct termios tc;
const char* term = getenv("TERM");
// If the process is backgrounded (running non interactively) // If the process is backgrounded (running non interactively)
// then SIGTTIN or SIGTOU is emitted, if not caught, turns into a SIGSTP // 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 // Make stdin reads non-blocking
fcntl( 0, F_SETFL, fcntl( 0, F_GETFL, 0 ) | O_NONBLOCK ); 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; ttycon_on = qfalse;
stdin_active = qtrue;
return; return;
} }
@ -408,18 +412,11 @@ char *CON_Input( void )
return NULL; return NULL;
} }
else else if (stdin_active)
{ {
int len; int len;
fd_set fdset; fd_set fdset;
struct timeval timeout; struct timeval timeout;
static qboolean stdin_active;
if (!com_dedicated || !com_dedicated->value)
return NULL;
if (!stdin_active)
return NULL;
FD_ZERO(&fdset); FD_ZERO(&fdset);
FD_SET(0, &fdset); // stdin FD_SET(0, &fdset); // stdin
@ -443,6 +440,7 @@ char *CON_Input( void )
return text; return text;
} }
return NULL;
} }
/* /*