mirror of
https://github.com/UberGames/lilium-voyager.git
synced 2025-01-18 21:51:37 +00:00
fix dedicated server stdin console (#4009)
This commit is contained in:
parent
732c405e15
commit
799150ffc1
1 changed files with 8 additions and 10 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue