]> diplodocus.org Git - nmh/blobdiff - sbr/read_switch_multiword.c
m_backup.c: Move interface to own file.
[nmh] / sbr / read_switch_multiword.c
index 5c83eec83cbf42c1876cfc5565cd56045a2202f3..d13ae7a1df1432f83e4186c5f87638ca68d4e515 100644 (file)
@@ -1,13 +1,15 @@
-/*
- * read_switch_multiword.c -- get an answer from the user and return a string array
+/* read_switch_multiword.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 <h/mh.h>
-#include <h/signals.h>
+#include "h/mh.h"
+#include "brkstring.h"
+#include "ambigsw.h"
+#include "print_sw.h"
+#include "h/signals.h"
 #include <setjmp.h>
 
 static char ansbuf[BUFSIZ];
@@ -26,12 +28,11 @@ read_switch_multiword (const char *prompt, const struct swit *ansp)
     SIGNAL_HANDLER istat = NULL;
     char *cp, **cpp;
 
-    if (!(sigsetjmp(sigenv, 1))) {
-       istat = SIGNAL (SIGINT, intrser);
-    } else {
+    if (sigsetjmp(sigenv, 1)) {
        SIGNAL (SIGINT, istat);
        return NULL;
     }
+    istat = SIGNAL (SIGINT, intrser);
 
     for (;;) {
        fputs(prompt, stdout);
@@ -51,7 +52,7 @@ read_switch_multiword (const char *prompt, const struct swit *ansp)
                 * then just return.
                 */
 
-               else if (ferror(stdin)) {
+               if (ferror(stdin)) {
                    if (errno == EINTR) {
                        clearerr(stdin);
                        continue;
@@ -59,14 +60,11 @@ read_switch_multiword (const char *prompt, const struct swit *ansp)
                    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);
                }
+
+                /* Just for completeness's sake... */
+                fprintf(stderr, "\nUnknown problem in getchar()\n");
+                siglongjmp(sigenv, 1);
            }
            if (cp < &ansbuf[sizeof ansbuf - 1])
                *cp++ = i;
@@ -98,8 +96,5 @@ intrser (int i)
 {
     NMH_UNUSED (i);
 
-    /*
-     * should this be siglongjmp?
-     */
     siglongjmp (sigenv, 1);
 }