- use read instead of fgetc for input (works now on Mac OS X)

This commit is contained in:
zolliker
2005-10-11 11:18:21 +00:00
parent 60cef01ba4
commit 7aa5e0679f

View File

@ -34,6 +34,18 @@ void sys_keys_off(void) {
} }
} }
static int getChar(void) {
unsigned char c;
int rt;
rt = read(STDIN_FILENO, &c, 1);
if (rt<=0) {
return EOF;
} else {
return c;
}
}
int sys_select_or_key(fd_set *mask, int msecTmo, int *key) { int sys_select_or_key(fd_set *mask, int msecTmo, int *key) {
int fd, iret, fd1, chr; int fd, iret, fd1, chr;
struct timeval tmo, tmo0={0,0}; struct timeval tmo, tmo0={0,0};
@ -47,8 +59,9 @@ int sys_select_or_key(fd_set *mask, int msecTmo, int *key) {
perror("error in select"); perror("error in select");
} }
fd1=STDIN_FILENO; fd1=STDIN_FILENO;
chr=fgetc(stdin); /* chr=fgetc(stdin); */
if (chr==EOF && iret==0) { chr = getChar();
if (chr == EOF && iret==0) { /* */
rmask=*mask; rmask=*mask;
FD_SET(STDIN_FILENO, &rmask); FD_SET(STDIN_FILENO, &rmask);
if (msecTmo>=0) { if (msecTmo>=0) {
@ -68,7 +81,8 @@ int sys_select_or_key(fd_set *mask, int msecTmo, int *key) {
perror("error in select"); perror("error in select");
} }
if (FD_ISSET(STDIN_FILENO, &rmask)) { if (FD_ISSET(STDIN_FILENO, &rmask)) {
chr=fgetc(stdin); chr = getChar();
/* chr=fgetc(stdin); */
} }
FD_CLR(STDIN_FILENO, &rmask); FD_CLR(STDIN_FILENO, &rmask);
} }