]> diplodocus.org Git - nmh/blobdiff - uip/mhlsbr.c
print_sw.c: Move interface to own file.
[nmh] / uip / mhlsbr.c
index bf3ed232abc606d0541c5c68dcc214b8fbcc0648..cb90726187d5d2446107e664bdea91b4df2ec51c 100644 (file)
@@ -5,12 +5,16 @@
  * complete copyright information.
  */
 
  * complete copyright information.
  */
 
-#include <h/mh.h>
-#include <h/signals.h>
-#include <h/addrsbr.h>
-#include <h/fmt_scan.h>
-#include <h/tws.h>
-#include <h/utils.h>
+#include "h/mh.h"
+#include "sbr/print_help.h"
+#include "sbr/arglist.h"
+#include "sbr/error.h"
+#include "h/signals.h"
+#include "h/addrsbr.h"
+#include "h/fmt_scan.h"
+#include "h/tws.h"
+#include "h/done.h"
+#include "h/utils.h"
 #include "sbr/m_popen.h"
 #include <setjmp.h>
 #include <sys/types.h>
 #include "sbr/m_popen.h"
 #include <setjmp.h>
 #include <sys/types.h>
@@ -259,9 +263,9 @@ static char *addrcomps[] = {
 static int bellflg   = 0;
 static int clearflg  = 0;
 static int dashstuff = 0;
 static int bellflg   = 0;
 static int clearflg  = 0;
 static int dashstuff = 0;
-static int dobody    = 1;
-static int forwflg   = 0;
-static int forwall   = 0;
+static bool dobody = true;
+static bool forwflg;
+static bool forwall;
 
 static int sleepsw = NOTOK;
 
 
 static int sleepsw = NOTOK;
 
@@ -270,7 +274,7 @@ static int volume = 0;
 static int issue = 0;
 
 static int exitstat = 0;
 static int issue = 0;
 
 static int exitstat = 0;
-static int mhldebug = 0;
+static bool mhldebug;
 
 static int filesize = 0;
 
 
 static int filesize = 0;
 
@@ -298,14 +302,11 @@ static int num_ignores = 0;
 static char *ignores[MAXARGS];
 
 static  jmp_buf env;
 static char *ignores[MAXARGS];
 
 static  jmp_buf env;
-static  jmp_buf mhlenv;
 
 static char delim3[] =         /* from forw.c */
     "\n----------------------------------------------------------------------\n\n";
 static char delim4[] = "\n------------------------------\n\n";
 
 
 static char delim3[] =         /* from forw.c */
     "\n----------------------------------------------------------------------\n\n";
 static char delim4[] = "\n------------------------------\n\n";
 
-static FILE *(*mhl_action)(char *);
-
 /*
  * prototypes
  */
 /*
  * prototypes
  */
@@ -340,7 +341,8 @@ static void compile_filterargs (void);
 int
 mhl (int argc, char **argv)
 {
 int
 mhl (int argc, char **argv)
 {
-    int length = 0, nomore = 0;
+    int length = 0;
+    bool nomore = false;
     unsigned int i, vecp = 0;
     int width = 0;
     char *cp, *folder = NULL, *form = NULL;
     unsigned int i, vecp = 0;
     int width = 0;
     char *cp, *folder = NULL, *form = NULL;
@@ -354,7 +356,7 @@ mhl (int argc, char **argv)
     argp = arguments;
 
     if ((cp = getenv ("MHLDEBUG")) && *cp)
     argp = arguments;
 
     if ((cp = getenv ("MHLDEBUG")) && *cp)
-       mhldebug++;
+       mhldebug = true;
 
     while ((cp = *argp++)) {
        if (*cp == '-') {
 
     while ((cp = *argp++)) {
        if (*cp == '-') {
@@ -407,7 +409,7 @@ mhl (int argc, char **argv)
                        mhladios (NULL, "missing argument to %s", argp[-2]);
                    continue;
                case NPROGSW:
                        mhladios (NULL, "missing argument to %s", argp[-2]);
                    continue;
                case NPROGSW:
-                   nomore++;
+                   nomore = true;
                    continue;
 
                case FMTPROCSW:
                    continue;
 
                case FMTPROCSW:
@@ -449,10 +451,10 @@ mhl (int argc, char **argv)
                    continue;
 
                case FORW2SW: 
                    continue;
 
                case FORW2SW: 
-                   forwall++;
+                   forwall = true;
                    /* FALLTHRU */
                case FORW1SW: 
                    /* FALLTHRU */
                case FORW1SW: 
-                   forwflg++;
+                   forwflg = true;
                    clearflg = -1;/* XXX */
                    continue;
 
                    clearflg = -1;/* XXX */
                    continue;
 
@@ -464,7 +466,7 @@ mhl (int argc, char **argv)
                    continue;
 
                case NBODYSW: 
                    continue;
 
                case NBODYSW: 
-                   dobody = 0;
+                   dobody = false;
                    continue;
            }
        }
                    continue;
            }
        }
@@ -476,12 +478,8 @@ mhl (int argc, char **argv)
 
     if (isatty (fileno (stdout))) {
        if (!nomore && moreproc && *moreproc != '\0') {
 
     if (isatty (fileno (stdout))) {
        if (!nomore && moreproc && *moreproc != '\0') {
-           if (mhl_action) {
-               SIGNAL (SIGINT, SIG_IGN);
-               SIGNAL2 (SIGQUIT, quitser);
-           }
            SIGNAL2 (SIGPIPE, pipeser);
            SIGNAL2 (SIGPIPE, pipeser);
-           m_popen (moreproc, mhl_action != NULL);
+           m_popen(moreproc, false);
            ontty = PITTY;
        } else {
            SIGNAL (SIGINT, SIG_IGN);
            ontty = PITTY;
        } else {
            SIGNAL (SIGINT, SIG_IGN);
@@ -880,7 +878,7 @@ process (char *folder, char *fname, int ofilen, int ofilec)
     switch (setjmp (env)) {
        case OK: 
            if (fname) {
     switch (setjmp (env)) {
        case OK: 
            if (fname) {
-               fp = mhl_action ? (*mhl_action) (fname) : fopen (fname, "r");
+               fp = fopen(fname, "r");
                if (fp == NULL) {
                    advise (fname, "unable to open");
                    exitstat++;
                if (fp == NULL) {
                    advise (fname, "unable to open");
                    exitstat++;
@@ -912,7 +910,7 @@ process (char *folder, char *fname, int ofilen, int ofilec)
        default:
            if (ontty != PITTY)
                SIGNAL (SIGINT, SIG_IGN);
        default:
            if (ontty != PITTY)
                SIGNAL (SIGINT, SIG_IGN);
-           if (mhl_action == NULL && fp != stdin && fp != NULL)
+           if (fp != stdin && fp != NULL)
                fclose (fp);
             free(holder.c_text);
             holder.c_text = NULL;
                fclose (fp);
             free(holder.c_text);
             holder.c_text = NULL;
@@ -939,7 +937,7 @@ mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
        if (digest)
            fputs(ofilen == 1 ? delim3 : delim4, stdout);
        else {
        if (digest)
            fputs(ofilen == 1 ? delim3 : delim4, stdout);
        else {
-           printf ("\n-------");
+           fputs("\n-------", stdout);
            if (ofilen == 1)
                printf (" Forwarded Message%s", PLURALS(ofilec));
            else
            if (ofilen == 1)
                printf (" Forwarded Message%s", PLURALS(ofilec));
            else
@@ -1273,7 +1271,8 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
 {
     char *text; /* c1's text, or the name as a fallback. */
     char *trimmed_prefix;
 {
     char *text; /* c1's text, or the name as a fallback. */
     char *trimmed_prefix;
-    int count, cchdr;
+    int count;
+    bool cchdr;
     char *cp;
     const int utf8 = strcasecmp(get_charset(), "UTF-8") == 0;
 
     char *cp;
     const int utf8 = strcasecmp(get_charset(), "UTF-8") == 0;
 
@@ -1288,7 +1287,7 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
      * blank lines. */
     trimmed_prefix = rtrim(mh_xstrdup(FENDNULL(text)));
 
      * blank lines. */
     trimmed_prefix = rtrim(mh_xstrdup(FENDNULL(text)));
 
-    cchdr = 0;
+    cchdr = false;
     lm = 0;
     llim = c1->c_length ? c1->c_length : -1;
     wid = c1->c_width ? c1->c_width : global.c_width;
     lm = 0;
     llim = c1->c_length ? c1->c_length : -1;
     wid = c1->c_width ? c1->c_width : global.c_width;
@@ -1331,7 +1330,7 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
            if (!(c1->c_flags & SPLIT))
                c1->c_flags |= HDROUTPUT;
 
            if (!(c1->c_flags & SPLIT))
                c1->c_flags |= HDROUTPUT;
 
-       cchdr++;
+       cchdr = true;
        if ((count = c1->c_cwidth - strlen(text) - 2) > 0)
            while (count--)
                putstr (" ", c1->c_flags);
        if ((count = c1->c_cwidth - strlen(text) - 2) > 0)
            while (count--)
                putstr (" ", c1->c_flags);
@@ -1350,7 +1349,7 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
        if (!(c1->c_flags & SPLIT))
            c2->c_flags |= HDROUTPUT;
 
        if (!(c1->c_flags & SPLIT))
            c2->c_flags |= HDROUTPUT;
 
-       cchdr++;
+       cchdr = true;
        if ((count = c1->c_cwidth - strlen (c2->c_name) - 2) > 0)
            while (count--)
                putstr (" ", c1->c_flags);
        if ((count = c1->c_cwidth - strlen (c2->c_name) - 2) > 0)
            while (count--)
                putstr (" ", c1->c_flags);
@@ -1403,7 +1402,7 @@ putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
 static char *
 oneline (char *stuff, unsigned long flags)
 {
 static char *
 oneline (char *stuff, unsigned long flags)
 {
-    int spc;
+    bool spc;
     char *cp, *ret;
 
     if (onelp == NULL)
     char *cp, *ret;
 
     if (onelp == NULL)
@@ -1414,7 +1413,7 @@ oneline (char *stuff, unsigned long flags)
     ret = onelp;
     term = 0;
     if (flags & COMPRESS) {
     ret = onelp;
     term = 0;
     if (flags & COMPRESS) {
-       for (spc = 1, cp = ret; *onelp; onelp++)
+       for (spc = true, cp = ret; *onelp; onelp++)
            if (isspace ((unsigned char) *onelp)) {
                if (*onelp == '\n' && (!onelp[1] || (flags & ADDRFMT))) {
                    term = '\n';
            if (isspace ((unsigned char) *onelp)) {
                if (*onelp == '\n' && (!onelp[1] || (flags & ADDRFMT))) {
                    term = '\n';
@@ -1423,12 +1422,12 @@ oneline (char *stuff, unsigned long flags)
                }
                 if (!spc) {
                     *cp++ = ' ';
                }
                 if (!spc) {
                     *cp++ = ' ';
-                    spc++;
+                    spc = true;
                 }
            }
            else {
                *cp++ = *onelp;
                 }
            }
            else {
                *cp++ = *onelp;
-               spc = 0;
+               spc = false;
            }
 
        *cp = 0;
            }
 
        *cp = 0;
@@ -1600,7 +1599,8 @@ putch (char ch, unsigned long flags)
  * Either way, the result depends on ASCII LF, either from typing Enter
  * or an escaped Ctrl-J, being amongst the read characters.
  */
  * Either way, the result depends on ASCII LF, either from typing Enter
  * or an escaped Ctrl-J, being amongst the read characters.
  */
-static bool linefeed_typed(void)
+static bool
+linefeed_typed(void)
 {
     char buf[128];
     ssize_t n;
 {
     char buf[128];
     ssize_t n;
@@ -1662,8 +1662,6 @@ static void
 mhldone (int status)
 {
     exitstat = status;
 mhldone (int status)
 {
     exitstat = status;
-    if (mhl_action)
-       longjmp (mhlenv, DONE);
     done (exitstat);
 }
 
     done (exitstat);
 }
 
@@ -1750,11 +1748,11 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state,
      */
 
     if (pipe(fdinput) < 0) {
      */
 
     if (pipe(fdinput) < 0) {
-       adios(NULL, "Unable to create input pipe");
+       die("Unable to create input pipe");
     }
 
     if (pipe(fdoutput) < 0) {
     }
 
     if (pipe(fdoutput) < 0) {
-       adios(NULL, "Unable to create output pipe");
+       die("Unable to create output pipe");
     }
 
     /*
     }
 
     /*
@@ -1809,7 +1807,7 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state,
         */
        _exit(0);
     case -1:
         */
        _exit(0);
     case -1:
-       adios(NULL, "Unable to fork for filter writer process");
+       die("Unable to fork for filter writer process");
        break;
     }
 
        break;
     }
 
@@ -1884,7 +1882,7 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state,
        break;
 
     case -1:
        break;
 
     case -1:
-       adios(NULL, "Unable to fork format program");
+       die("Unable to fork format program");
     }
 
     /*
     }
 
     /*
@@ -1907,7 +1905,7 @@ filterbody (struct mcomp *c1, char *buf, int bufsz, int state,
     }
 
     if (cc < 0) {
     }
 
     if (cc < 0) {
-       adios(NULL, "reading from formatproc");
+       die("reading from formatproc");
     }
 
     /*
     }
 
     /*