summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/timegetc.c
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2008-01-27 11:37:44 +0100
committerTobias Klauser <tklauser@xenon.tklauser.home>2008-01-27 11:37:44 +0100
commit7e0f021a9aec35fd8e6725e87e3313b101d26f5e (patch)
treeb1cacc4b24393f517aeb4610e9e1021f954307a8 /reference/C/CONTRIB/SNIP/timegetc.c
Initial import (2.0.2-6)2.0.2-6
Diffstat (limited to 'reference/C/CONTRIB/SNIP/timegetc.c')
-rwxr-xr-xreference/C/CONTRIB/SNIP/timegetc.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/SNIP/timegetc.c b/reference/C/CONTRIB/SNIP/timegetc.c
new file mode 100755
index 0000000..c41c45b
--- /dev/null
+++ b/reference/C/CONTRIB/SNIP/timegetc.c
@@ -0,0 +1,44 @@
+/*
+** TIMEGETC.C - waits for a given number of seconds for the user to press
+** a key. Returns the key pressed, or EOF if time expires
+**
+** by Bob Jarvis
+*/
+
+#include <stdio.h>
+#include <time.h>
+#include <conio.h>
+
+int timed_getch(int n_seconds)
+{
+ time_t start, now;
+
+ start = time(NULL);
+ now = start;
+
+ while(difftime(now, start) < (double)n_seconds && !kbhit())
+ {
+ now = time(NULL);
+ }
+
+ if(kbhit())
+ return getch();
+ else return EOF;
+}
+
+#ifdef TEST
+
+void main(void)
+{
+ int c;
+
+ printf("Starting a 5 second delay...\n");
+
+ c = timed_getch(5);
+
+ if(c == EOF)
+ printf("Timer expired\n");
+ else printf("Key was pressed, c = '%c'\n", c);
+}
+
+#endif /* TEST */