diff options
Diffstat (limited to 'sdk/dev/waitfor.c')
-rw-r--r-- | sdk/dev/waitfor.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/sdk/dev/waitfor.c b/sdk/dev/waitfor.c new file mode 100644 index 0000000..36fabec --- /dev/null +++ b/sdk/dev/waitfor.c @@ -0,0 +1,39 @@ +/* + * Wait for specified input from device. + * $Id$ + * Copyright (c) 1997 by Tycho Softworks. + * For conditions on redistribution and reuse see product license. + */ + +#include <dev/tty.h> +#include <std/string.h> + +int waitfor(int fd, uchar *list, size_t len, int timeout, ulong max) +{ + int key; + int idx = 0; + uchar *mem = (uchar *)malloc(len); + + while(max--) + { + key = inkey(fd, timeout); + if(key < 0) + return key; + + if(idx < len) + mem[idx++] = (uchar)(key & 0xff); + else + { + for(idx = 0; idx < len; ++idx) + mem[idx] = mem[idx + 1]; + + mem[len - 1] = (uchar)(key & 0xff); + } + if(!memcmp(mem, list, len)) + return 0; + } + return -1; +} + + + |