- 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 fd, iret, fd1, chr;
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");
}
fd1=STDIN_FILENO;
chr=fgetc(stdin);
if (chr==EOF && iret==0) {
/* chr=fgetc(stdin); */
chr = getChar();
if (chr == EOF && iret==0) { /* */
rmask=*mask;
FD_SET(STDIN_FILENO, &rmask);
if (msecTmo>=0) {
@ -68,7 +81,8 @@ int sys_select_or_key(fd_set *mask, int msecTmo, int *key) {
perror("error in select");
}
if (FD_ISSET(STDIN_FILENO, &rmask)) {
chr=fgetc(stdin);
chr = getChar();
/* chr=fgetc(stdin); */
}
FD_CLR(STDIN_FILENO, &rmask);
}