X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fgetans.c;h=3e38d873a090d84332102eeef750eb71bdc17bfd;hp=deb884e18ad15a34b0f1d0b8ecb07dcbb1f7a40a;hb=ced6090a330d3d83d0bce709f756aa3d7d65fea4;hpb=6b7218e1ae606329bf2e45b08e2e46cb9f0fc998 diff --git a/sbr/getans.c b/sbr/getans.c index deb884e..3e38d87 100644 --- a/sbr/getans.c +++ b/sbr/getans.c @@ -1,13 +1,10 @@ - /* - * getans.c -- get an answer from the user and return a string array - * - * $Id$ - * - * 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 @@ -18,62 +15,62 @@ static char ansbuf[BUFSIZ]; static jmp_buf sigenv; /* - * static prototypes - */ +** static prototypes +*/ static RETSIGTYPE intrser (int); char ** getans (char *prompt, struct swit *ansp) { - int i; - SIGNAL_HANDLER istat = NULL; - char *cp, **cpp; - - if (!(setjmp (sigenv))) { - istat = SIGNAL (SIGINT, intrser); - } else { - SIGNAL (SIGINT, istat); - return NULL; - } + int i; + SIGNAL_HANDLER istat = NULL; + char *cp, **cpp; - for (;;) { - printf ("%s", prompt); - fflush (stdout); - cp = ansbuf; - while ((i = getchar ()) != '\n') { - if (i == EOF) - 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); - 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: + if (!(setjmp (sigenv))) { + istat = SIGNAL (SIGINT, intrser); + } else { SIGNAL (SIGINT, istat); - return cpp; + return NULL; + } + + for (;;) { + printf ("%s", prompt); + fflush (stdout); + cp = ansbuf; + while ((i = getchar ()) != '\n') { + if (i == EOF) + 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); + 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 RETSIGTYPE intrser (int i) { - /* - * should this be siglongjmp? - */ - longjmp (sigenv, 1); + /* + ** should this be siglongjmp? + */ + longjmp (sigenv, 1); }