Add a timed getche function
This commit is contained in:
parent
ddeede0ebe
commit
286b508f10
14
MD_Getc.c
14
MD_Getc.c
@ -17,6 +17,15 @@ extern time_t mdtimeout;
|
||||
extern time_t mdtimeremaining;
|
||||
|
||||
char md_getc() {
|
||||
char c;
|
||||
do {
|
||||
c = md_getche(60, 0);
|
||||
} while(c == -1);
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
char md_getche(uint32_t sec, uint32_t usec) {
|
||||
char c = 'x';
|
||||
int ret;
|
||||
int rs;
|
||||
@ -34,8 +43,8 @@ char md_getc() {
|
||||
FD_SET(mdcontrol.socket, &rfd);
|
||||
}
|
||||
|
||||
tv.tv_sec = 60;
|
||||
tv.tv_usec = 0;
|
||||
tv.tv_sec = sec;
|
||||
tv.tv_usec = usec;
|
||||
|
||||
if (mdcontrol.socket == -1) {
|
||||
rs = select(STDIN_FILENO + 1, &rfd, NULL, NULL, &tv);
|
||||
@ -52,6 +61,7 @@ char md_getc() {
|
||||
md_printf("\r\nOut of time!\r\n");
|
||||
md_exit(0);
|
||||
}
|
||||
return -1;
|
||||
} else if (rs == -1 && errno != EINTR) {
|
||||
md_exit(0);
|
||||
} else if (mdcontrol.socket != -1 && FD_ISSET(mdcontrol.socket, &rfd)) {
|
||||
|
@ -24,7 +24,7 @@ typedef struct MDDoorControl {
|
||||
extern MDDoorControl_t mdcontrol;
|
||||
|
||||
|
||||
|
||||
extern char md_getche(uint32_t sec, uint32_t usec);
|
||||
extern void md_init(const char* dropfile, int socket);
|
||||
extern void md_exit(int exitcode);
|
||||
extern void md_putchar(char c);
|
||||
|
Loading…
x
Reference in New Issue
Block a user