]> diplodocus.org Git - nmh/blobdiff - uip/fmttest.c
Add basic support for the STLS command in POP
[nmh] / uip / fmttest.c
index 39f4ecc42d3e1e20f7b9e82e06ff72102bc42d0f..1076be4841aefc0957f8da08c9d9297b07ab8ee9 100644 (file)
@@ -6,6 +6,14 @@
  */
 
 #include "h/mh.h"
+#include "sbr/fmt_new.h"
+#include "scansbr.h"
+#include "sbr/m_name.h"
+#include "sbr/m_getfld.h"
+#include "sbr/getarguments.h"
+#include "sbr/seq_setprev.h"
+#include "sbr/seq_save.h"
+#include "sbr/smatch.h"
 #include "sbr/snprintb.h"
 #include "sbr/getcpy.h"
 #include "sbr/m_convert.h"
@@ -25,7 +33,6 @@
 #include "h/fmt_scan.h"
 #include "h/fmt_compile.h"
 #include "h/utils.h"
-#include "h/scansbr.h"
 #include "h/addrsbr.h"
 #include "h/done.h"
 #include "sbr/m_maildir.h"
@@ -134,7 +141,6 @@ main (int argc, char **argv)
     struct msgs_array msgs = { 0, 0, NULL }, compargs = { 0, 0, NULL};
     bool dump = false;
     int i;
-    int outputsize = 0;
     bool dupaddrs = true;
     bool trace = false;
     int files = 0;
@@ -148,6 +154,8 @@ main (int argc, char **argv)
     arguments = getarguments (invo_name, argc, argv, 1);
     argp = arguments;
 
+    bool outputsize_given = false;
+    int outputsize;
     while ((cp = *argp++)) {
        if (*cp == '-') {
            /*
@@ -183,6 +191,7 @@ main (int argc, char **argv)
                    continue;
 
                case OUTSIZESW:
+                    outputsize_given = true;
                    if (!(cp = *argp++) || *cp == '-')
                        die("missing argument to %s", argp[-2]);
                    if (strcmp(cp, "max") == 0)
@@ -338,11 +347,8 @@ main (int argc, char **argv)
 
     buffer = charstring_create(BUFSIZ);
 
-    if (outputsize == 0) {
-       if (mode == MESSAGE)
-           outputsize = sc_width();
-       else
-           outputsize = INT_MAX;
+    if (!outputsize_given) {
+        outputsize = mode == MESSAGE ? sc_width() : INT_MAX;
     }
 
     dat[0] = msgnum;
@@ -466,6 +472,7 @@ process_addresses(struct format *fmt, struct msgs_array *addrs,
 
            fmt_scan(fmt, buffer, outwidth, dat, cb);
            fputs(charstring_buffer(buffer), stdout);
+            charstring_clear(buffer);
            mlistfree();
 
             free(p->pq_text);
@@ -692,6 +699,7 @@ finished:
     }
     fmt_scan(fmt, buffer, outwidth, dat, cb);
     fputs(charstring_buffer (buffer), stdout);
+    charstring_clear(buffer);
     mlistfree();
 }
 
@@ -725,6 +733,7 @@ process_raw(struct format *fmt, struct msgs_array *text, charstring_t buffer,
 
        fmt_scan(fmt, buffer, outwidth, dat, cb);
        fputs(charstring_buffer (buffer), stdout);
+        charstring_clear(buffer);
        mlistfree();
     }
 }