From e6d28cc5aaeabd53ed652eec63c2c22bb3f7e97c Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Thu, 2 Sep 1999 00:57:26 +0000 Subject: add interactive prompt to make Cristian & Preston happy --- src/getkey.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/getkey.c (limited to 'src/getkey.c') diff --git a/src/getkey.c b/src/getkey.c new file mode 100644 index 00000000..b17558a3 --- /dev/null +++ b/src/getkey.c @@ -0,0 +1,47 @@ + +#include +#include +#include +#include +#include + +/* A very simple keygrabber. */ + +struct termios tp; + +void reset_term(int x) { + tcsetattr(0,TCSANOW,&tp); + exit(x); +} + +int main(int argc, char **argv) { + char foo[2]; + int tp_if,tp_of,tp_lf; + int x; + + if (argc>1) { + for (x=0;argv[1][x];x++) argv[1][x]=toupper(argv[1][x]); + } + foo[0]=foo[1]='\0'; + signal(SIGTERM,reset_term); + tcgetattr(0,&tp); + tp_if=tp.c_iflag; + tp_of=tp.c_oflag; + tp_lf=tp.c_lflag; + tp.c_iflag=0; + tp.c_oflag &= ~OPOST; + tp.c_lflag &= ~(ISIG | ICANON); + tcsetattr(0,TCSANOW,&tp); + tp.c_iflag=tp_if; + tp.c_oflag=tp_of; + tp.c_lflag=tp_lf; + while (1) { + read(0,foo,1); + foo[0]=toupper(foo[0]); + /* Die if we get a control-c or control-d */ + if (foo[0]==3 || foo[0]==4) reset_term(1); + if ((!argv[1]) || strstr(argv[1],foo)) { + reset_term(0); + } + } +} -- cgit v1.2.1