X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fgetans.c;h=f3cea2733b9fe5c5ba6fd29da03bd41ad0aa2789;hp=befbd9a9249b14ca87ca1267d827de2e97a5d6a0;hb=f78e7c6e6e616cc4ff2bee8a726365fafef2d8ce;hpb=a485ed478abbd599d8c9aab48934e7a26733ecb1 diff --git a/sbr/getans.c b/sbr/getans.c index befbd9a..f3cea27 100644 --- a/sbr/getans.c +++ b/sbr/getans.c @@ -1,76 +1,77 @@ /* - * getans.c -- get an answer from the user and return a string array - * - * This code is Copyright (c) 2002, by the authors of nmh. See the - * COPYRIGHT file in the root directory of the nmh distribution for - * complete copyright information. - */ +** getans.c -- get an answer from the user and return a string array +** +** This code is Copyright (c) 2002, by the authors of nmh. See the +** COPYRIGHT file in the root directory of the nmh distribution for +** complete copyright information. +*/ #include #include #include #include +#include static char ansbuf[BUFSIZ]; static jmp_buf sigenv; /* - * static prototypes - */ -static RETSIGTYPE intrser (int); +** static prototypes +*/ +static void intrser(int); char ** -getans (char *prompt, struct swit *ansp) +getans(char *prompt, struct swit *ansp) { int i; SIGNAL_HANDLER istat = NULL; char *cp, **cpp; - if (!(setjmp (sigenv))) { - istat = SIGNAL (SIGINT, intrser); + if (!(setjmp(sigenv))) { + istat = SIGNAL(SIGINT, intrser); } else { - SIGNAL (SIGINT, istat); + SIGNAL(SIGINT, istat); return NULL; } for (;;) { - printf ("%s", prompt); - fflush (stdout); + printf("%s", prompt); + fflush(stdout); cp = ansbuf; - while ((i = getchar ()) != '\n') { + while ((i = getchar()) != '\n') { if (i == EOF) - longjmp (sigenv, 1); + longjmp(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); + 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; + 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 RETSIGTYPE -intrser (int i) +static void +intrser(int i) { /* - * should this be siglongjmp? - */ - longjmp (sigenv, 1); + ** should this be siglongjmp? + */ + close(STDIN_FILENO); }