]> diplodocus.org Git - nmh/blobdiff - uip/mhshowsbr.c
Removed a local variable from m_Eom().
[nmh] / uip / mhshowsbr.c
index 3db2348f8811b791f8fff410e4dd40c9efe48b21..6f8a978f4a8499af145e27cee484749dd35d3cc0 100644 (file)
@@ -1,6 +1,4 @@
-
-/*
- * mhshowsbr.c -- routines to display the contents of MIME messages
+/* mhshowsbr.c -- routines to display the contents of MIME messages
  *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
@@ -17,6 +15,8 @@
 #include <h/mhparse.h>
 #include <h/fmt_scan.h>
 #include <h/utils.h>
+#include "mhshowsbr.h"
+#include "../sbr/m_mktemp.h"
 #ifdef HAVE_ICONV
 #   include <iconv.h>
 #endif /* ! HAVE_ICONV */
@@ -98,7 +98,7 @@ static struct param_comp_list *dispo_pc_list = NULL;
  */
 
 void
-show_all_messages (CT *cts, int concatsw, int textonly, int inlineonly)
+show_all_messages(CT *cts, int concat, int textonly, int inlineonly)
 {
     CT ct, *ctp;
     struct format *hfmt, *mfmt;
@@ -129,7 +129,7 @@ show_all_messages (CT *cts, int concatsw, int textonly, int inlineonly)
        if (type_ok (ct, 1)) {
            if (headersw) output_header(ct, hfmt);
 
-           show_single_message (ct, formsw, concatsw, textonly, inlineonly,
+           show_single_message (ct, formsw, concat, textonly, inlineonly,
                                 mfmt);
        }
     }
@@ -344,7 +344,7 @@ show_content_aux (CT ct, int alternate, char *cp, char *cracked, struct format *
 {
     int fd;
     int xstdin = 0, xlist = 0;
-    char *file = NULL, buffer[BUFSIZ];
+    char *file = NULL, buffer[NMH_BUFSIZ];
 
     if (!ct->c_ceopenfnx) {
        if (!alternate)
@@ -370,9 +370,9 @@ show_content_aux (CT ct, int alternate, char *cp, char *cracked, struct format *
                 return NOTOK;
         } else {
             char *charset = content_charset (ct);
-            admonish (NULL, "unable to convert character set%s%s from %s",
+            inform("unable to convert character set%s%s from %s, continuing...",
                       ct->c_partno  ?  " of part "  :  "",
-                      ct->c_partno  ?  ct->c_partno  :  "",
+                      FENDNULL(ct->c_partno),
                       charset);
             free (charset);
         }
@@ -385,7 +385,7 @@ show_content_aux (CT ct, int alternate, char *cp, char *cracked, struct format *
 
     if (parse_display_string (ct, cp, &xstdin, &xlist, file, buffer,
                              sizeof(buffer) - 1, 0)) {
-       admonish (NULL, "Buffer overflow constructing show command!\n");
+       inform("Buffer overflow constructing show command, continuing...");
        return NOTOK;
     }
 
@@ -499,11 +499,15 @@ show_content_aux2 (CT ct, int alternate, char *cracked, char *buffer,
 
        default: {
            int status;
+            char *display_prog = vecp > 2  &&  vec[2][0] != '\0'
+                /* Copy the real display program name.  This relies on the
+                   specific construction of vec[] by argsplit(). */
+                ?  vec[2]
+                :  NULL;
 
-           arglist_free(file, vec);
-
-           pidcheck ((status = pidXwait (child_id, NULL)));
+            pidcheck ((status = pidXwait (child_id, display_prog)));
 
+            arglist_free(file, vec);
            if (fd != NOTOK)
                (*ct->c_ceclosefnx) (ct);
            return (alternate ? OK : status);
@@ -720,7 +724,7 @@ show_multi_aux (CT ct, int alternate, char *cp, struct format *fmt)
 
     if (parse_display_string (ct, cp, &xstdin, &xlist, file,
                              buffer, sizeof(buffer) - 1, 1)) {
-       admonish (NULL, "Buffer overflow constructing show command!\n");
+       inform("Buffer overflow constructing show command, continuing...");
        return NOTOK;
     }
 
@@ -943,8 +947,7 @@ parse_display_string (CT ct, char *cp, int *xstdin, int *xlist,
                    /* This will get confused if there are multiple %{}'s,
                       but its real purpose is to avoid doing bad things
                       above if a closing brace wasn't found. */
-                   admonish(NULL,
-                            "no closing brace for display string escape %s",
+                   inform("no closing brace for display string escape %s, continuing...",
                             cp);
                }
                break;
@@ -993,8 +996,8 @@ parse_display_string (CT ct, char *cp, int *xstdin, int *xlist,
                           quote. */
                        memmove (pp, pp-1, len+1);
                        *(pp++-1) = '\\';
-                       buflen -= 1;
-                       bp += 1;
+                       buflen--;
+                       bp++;
                    }
                }
                /* If pp is still set, that means we ran out of space. */
@@ -1179,11 +1182,10 @@ iconv_start:
                    inform("convert_charset: errno = %d", errno);
                     status = NOTOK;
                     break;
-                } else {
-                    if (write (fd, dest_buffer, outbytes_before - outbytes)
-                        < 0) {
-                        advise (dest, "write");
-                    }
+                }
+
+                if (write (fd, dest_buffer, outbytes_before - outbytes) < 0) {
+                    advise (dest, "write");
                 }
             }