X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Fgetansreadline.c;h=fc03c97c6b711336e865d7101036d468542f8700;hb=bfad64befb4d6696fdfb63b119666eec4bac6fb3;hp=2fd06186d29a0ac890a3459e3b999df9616f82d0;hpb=64cb93375ef41ea4e0870d248746756545ceaad6;p=mmh diff --git a/sbr/getansreadline.c b/sbr/getansreadline.c index 2fd0618..fc03c97 100644 --- a/sbr/getansreadline.c +++ b/sbr/getansreadline.c @@ -24,100 +24,6 @@ static char **nmh_completion(const char *, int, int); static void initialize_readline(void); static char ansbuf[BUFSIZ]; -#if 0 -static sigjmp_buf sigenv; - -/* - * static prototypes - */ -static void intrser (int); - - -char ** -getans (char *prompt, struct swit *ansp) -{ - int i; - SIGNAL_HANDLER istat = NULL; - char *cp, **cpp; - - if (!(sigsetjmp(sigenv, 1))) { - istat = SIGNAL (SIGINT, intrser); - } else { - SIGNAL (SIGINT, istat); - return NULL; - } - - for (;;) { - printf ("%s", prompt); - fflush (stdout); - cp = ansbuf; - while ((i = getchar ()) != '\n') { - if (i == EOF) { - /* - * If we get an EOF, return - */ - if (feof(stdin)) - siglongjmp (sigenv, 1); - - /* - * For errors, if we get an EINTR that means that we got - * a signal and we should retry. If we get another error, - * then just return. - */ - - else if (ferror(stdin)) { - if (errno == EINTR) { - clearerr(stdin); - continue; - } - fprintf(stderr, "\nError %s during read\n", - strerror(errno)); - siglongjmp (sigenv, 1); - } else { - /* - * Just for completeness's sake ... - */ - - fprintf(stderr, "\nUnknown problem in getchar()\n"); - siglongjmp (sigenv, 1); - } - } - if (cp < &ansbuf[sizeof ansbuf - 1]) - *cp++ = i; - } - *cp = '\0'; - if (ansbuf[0] == '?' || cp == ansbuf) { - printf ("Options are:\n"); - print_sw (ALL, ansp, "", stdout); - continue; - } - cpp = brkstring (ansbuf, " ", NULL); - switch (smatch (*cpp, ansp)) { - case AMBIGSW: - ambigsw (*cpp, ansp); - continue; - case UNKWNSW: - printf (" -%s unknown. Hit for help.\n", *cpp); - continue; - default: - SIGNAL (SIGINT, istat); - return cpp; - } - } -} - - -static void -intrser (int i) -{ - NMH_UNUSED (i); - - /* - * should this be siglongjmp? - */ - siglongjmp (sigenv, 1); -} -#endif /* * getans, but with readline support