- use read instead of fgetc for input (works now on Mac OS X)
This commit is contained in:
@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user