Fix uip/whom.c for C89 compatibility
[mmh] / uip / mhlistsbr.c
index 1777cf4..dd6264b 100644 (file)
@@ -9,13 +9,13 @@
 
 #include <h/mh.h>
 #include <fcntl.h>
-#include <h/signals.h>
 #include <errno.h>
-#include <signal.h>
 #include <h/tws.h>
 #include <h/mime.h>
 #include <h/mhparse.h>
 #include <h/utils.h>
+#include <sys/stat.h>
+#include <sysexits.h>
 
 /* mhmisc.c */
 int part_ok(CT, int);
@@ -25,17 +25,17 @@ void flush_errors(void);
 /*
 ** prototypes
 */
-void list_all_messages(CT *, int, int, int, int);
-int list_switch(CT, int, int, int, int);
-int list_content(CT, int, int, int, int);
+void list_all_messages(CT *, int, int);
+int list_switch(CT, int, int, int);
+int list_content(CT, int, int, int);
 
 /*
 ** static prototypes
 */
-static void list_single_message(CT, int, int, int);
+static void list_single_message(CT, int, int);
 static int list_debug(CT);
-static int list_multi(CT, int, int, int, int);
-static int list_partial(CT, int, int, int, int);
+static int list_multi(CT, int, int, int);
+static int list_partial(CT, int, int, int);
 static int list_encoding(CT);
 
 
@@ -57,19 +57,15 @@ static int list_encoding(CT);
 ** Top level entry point to list group of messages
 */
 void
-list_all_messages(CT *cts, int headers, int realsize, int verbose, int debug)
+list_all_messages(CT *cts, int verbose, int debug)
 {
        CT ct, *ctp;
 
-       if (headers)
-               printf(LSTFMT1, "msg", "part", "type/subtype", "size",
-                               "description");
-
+       printf(LSTFMT1, "msg", "part", "type/subtype", "size", "description");
        for (ctp = cts; *ctp; ctp++) {
                ct = *ctp;
-               list_single_message(ct, realsize, verbose, debug);
+               list_single_message(ct, verbose, debug);
        }
-
        flush_errors();
 }
 
@@ -78,11 +74,11 @@ list_all_messages(CT *cts, int headers, int realsize, int verbose, int debug)
 ** Entry point to list a single message
 */
 static void
-list_single_message(CT ct, int realsize, int verbose, int debug)
+list_single_message(CT ct, int verbose, int debug)
 {
        if (type_ok(ct, 1)) {
                umask(ct->c_umask);
-               list_switch(ct, 1, realsize, verbose, debug);
+               list_switch(ct, 1, verbose, debug);
                if (ct->c_fp) {
                        fclose(ct->c_fp);
                        ct->c_fp = NULL;
@@ -97,20 +93,18 @@ list_single_message(CT ct, int realsize, int verbose, int debug)
 ** Primary switching routine to list information about a content
 */
 int
-list_switch(CT ct, int toplevel, int realsize, int verbose, int debug)
+list_switch(CT ct, int toplevel, int verbose, int debug)
 {
        switch (ct->c_type) {
        case CT_MULTIPART:
-               return list_multi(ct, toplevel, realsize, verbose, debug);
+               return list_multi(ct, toplevel, verbose, debug);
                break;
 
        case CT_MESSAGE:
                if (ct->c_subtype == MESSAGE_PARTIAL) {
-                       return list_partial(ct, toplevel, realsize, verbose,
-                                               debug);
+                       return list_partial(ct, toplevel, verbose, debug);
                } else {
-                       return list_content(ct, toplevel, realsize, verbose,
-                                               debug);
+                       return list_content(ct, toplevel, verbose, debug);
                }
                break;
 
@@ -119,12 +113,12 @@ list_switch(CT ct, int toplevel, int realsize, int verbose, int debug)
        case CT_IMAGE:
        case CT_VIDEO:
        case CT_APPLICATION:
-               return list_content(ct, toplevel, realsize, verbose, debug);
+               return list_content(ct, toplevel, verbose, debug);
                break;
 
        default:
                /* list_debug (ct); */
-               adios(NULL, "unknown content type %d", ct->c_type);
+               adios(EX_DATAERR, NULL, "unknown content type %d", ct->c_type);
                break;
        }
 
@@ -138,7 +132,7 @@ list_switch(CT ct, int toplevel, int realsize, int verbose, int debug)
 ** Method for listing information about a simple/generic content
 */
 int
-list_content(CT ct, int toplevel, int realsize, int verbose, int debug)
+list_content(CT ct, int toplevel, int verbose, int debug)
 {
        unsigned long size;
        char *cp, buffer[BUFSIZ];
@@ -150,7 +144,7 @@ list_content(CT ct, int toplevel, int realsize, int verbose, int debug)
                        empty(ci->ci_subtype));
        printf(LSTFMT2b, empty(ct->c_partno), buffer);
 
-       if (ct->c_cesizefnx && realsize)
+       if (ct->c_cesizefnx)
                size = (*ct->c_cesizefnx) (ct);
        else
                size = ct->c_end - ct->c_begin;
@@ -180,11 +174,10 @@ list_content(CT ct, int toplevel, int realsize, int verbose, int debug)
        /* print Content-Description */
        if (ct->c_descr) {
                char *dp;
-
-               dp = trimcpy(cp = getcpy(ct->c_descr));
-               free(cp);
+               dp = trimcpy(cp = mh_xstrdup(ct->c_descr));
+               mh_free0(&cp);
                printf(LSTFMT2d1, dp);
-               free(dp);
+               mh_free0(&dp);
        }
 
        printf("\n");
@@ -207,7 +200,7 @@ list_content(CT ct, int toplevel, int realsize, int verbose, int debug)
                        dp = trimcpy(cp = add(ci->ci_comment, NULL));
                        free (cp);
                        snprintf(buffer, sizeof(buffer), "(%s)", dp);
-                       free(dp);
+                       mh_free0(&dp);
                        printf(LSTFMT2d2, buffer);
                }
        }
@@ -255,8 +248,8 @@ list_debug(CT ct)
                         ct->c_type, ct->c_subtype,
                         (unsigned int)(unsigned long) ct->c_ctparams);
 
+       fprintf(stderr, "    charset  \"%s\"\n", empty(ct->c_charset));
        fprintf(stderr, "    showproc  \"%s\"\n", empty(ct->c_showproc));
-       fprintf(stderr, "    termproc  \"%s\"\n", empty(ct->c_termproc));
        fprintf(stderr, "    storeproc \"%s\"\n", empty(ct->c_storeproc));
 
        /* print transfer encoding information */
@@ -293,20 +286,20 @@ list_debug(CT ct)
 ** list content information for type "multipart"
 */
 static int
-list_multi(CT ct, int toplevel, int realsize, int verbose, int debug)
+list_multi(CT ct, int toplevel, int verbose, int debug)
 {
        struct multipart *m = (struct multipart *) ct->c_ctparams;
        struct part *part;
 
        /* list the content for toplevel of this multipart */
-       list_content(ct, toplevel, realsize, verbose, debug);
+       list_content(ct, toplevel, verbose, debug);
 
        /* now list for all the subparts */
        for (part = m->mp_parts; part; part = part->mp_next) {
                CT p = part->mp_part;
 
                if (part_ok(p, 1) && type_ok(p, 1))
-                       list_switch(p, 0, realsize, verbose, debug);
+                       list_switch(p, 0, verbose, debug);
        }
 
        return OK;
@@ -317,11 +310,11 @@ list_multi(CT ct, int toplevel, int realsize, int verbose, int debug)
 ** list content information for type "message/partial"
 */
 static int
-list_partial(CT ct, int toplevel, int realsize, int verbose, int debug)
+list_partial(CT ct, int toplevel, int verbose, int debug)
 {
        struct partial *p = (struct partial *) ct->c_ctparams;
 
-       list_content(ct, toplevel, realsize, verbose, debug);
+       list_content(ct, toplevel, verbose, debug);
        if (verbose) {
                printf("\t     [message %s, part %d",
                                p->pm_partid, p->pm_partno);