mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2024-11-13 00:34:11 +00:00
* sys_sdl.c: Added a Sys_ConsoleInput implementation from uhexen2.
Only for unix for the time being. git-svn-id: http://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@189 af15c1b1-3010-417e-b628-4374ebc0bcbd
This commit is contained in:
parent
4ca09587ec
commit
47ec80a33a
1 changed files with 57 additions and 4 deletions
|
@ -20,16 +20,21 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "quakedef.h"
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
#include <direct.h>
|
#include <direct.h>
|
||||||
|
#include <errno.h>
|
||||||
#else
|
#else
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <time.h>
|
||||||
#endif
|
#endif
|
||||||
#include "errno.h"
|
|
||||||
|
|
||||||
#include "quakedef.h"
|
|
||||||
|
|
||||||
#define CONSOLE_ERROR_TIMEOUT 60.0 /* # of seconds to wait on Sys_Error running */
|
#define CONSOLE_ERROR_TIMEOUT 60.0 /* # of seconds to wait on Sys_Error running */
|
||||||
qboolean isDedicated;
|
qboolean isDedicated;
|
||||||
|
@ -248,7 +253,55 @@ double Sys_FloatTime (void)
|
||||||
|
|
||||||
char *Sys_ConsoleInput (void)
|
char *Sys_ConsoleInput (void)
|
||||||
{
|
{
|
||||||
return 0;
|
#if !defined(_WIN32)
|
||||||
|
static char con_text[256];
|
||||||
|
static int textlen;
|
||||||
|
char c;
|
||||||
|
fd_set set;
|
||||||
|
struct timeval timeout;
|
||||||
|
|
||||||
|
if (!isDedicated)
|
||||||
|
return NULL; // no stdin necessary in graphical mode
|
||||||
|
|
||||||
|
FD_ZERO (&set);
|
||||||
|
FD_SET (0, &set); // stdin
|
||||||
|
timeout.tv_sec = 0;
|
||||||
|
timeout.tv_usec = 0;
|
||||||
|
|
||||||
|
while (select (1, &set, NULL, NULL, &timeout))
|
||||||
|
{
|
||||||
|
read (0, &c, 1);
|
||||||
|
if (c == '\n' || c == '\r')
|
||||||
|
{
|
||||||
|
con_text[textlen] = '\0';
|
||||||
|
textlen = 0;
|
||||||
|
return con_text;
|
||||||
|
}
|
||||||
|
else if (c == 8)
|
||||||
|
{
|
||||||
|
if (textlen)
|
||||||
|
{
|
||||||
|
textlen--;
|
||||||
|
con_text[textlen] = '\0';
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
con_text[textlen] = c;
|
||||||
|
textlen++;
|
||||||
|
if (textlen < sizeof(con_text))
|
||||||
|
con_text[textlen] = '\0';
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// buffer is full
|
||||||
|
textlen = 0;
|
||||||
|
con_text[0] = '\0';
|
||||||
|
Sys_Printf("\nConsole input too long!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* ! _WIN32 */
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sys_Sleep (void)
|
void Sys_Sleep (void)
|
||||||
|
|
Loading…
Reference in a new issue