]> diplodocus.org Git - nmh/blobdiff - uip/mhshowsbr.c
mhlsbr.c: Don't need to `else' after longjmp() at end of then-block.
[nmh] / uip / mhshowsbr.c
index 20de87cc6dce222c927801db7e93ef394e2b7bfd..60cd35b8483596fa56f4d82c6ee0b083f8b6da12 100644 (file)
@@ -15,6 +15,7 @@
 #include <h/mhparse.h>
 #include <h/fmt_scan.h>
 #include <h/utils.h>
+#include "mhmisc.h"
 #include "mhshowsbr.h"
 #include "../sbr/m_mktemp.h"
 #ifdef HAVE_ICONV
@@ -22,8 +23,6 @@
 #endif /* ! HAVE_ICONV */
 
 extern int debugsw;
-extern int npart;
-extern int ntype;
 
 int nolist   = 0;
 
@@ -40,13 +39,6 @@ char *headerform;
 int headersw = -1;
 
 
-/* mhmisc.c */
-int part_ok (CT);
-int part_exact (CT);
-int type_ok (CT, int);
-void content_error (char *, CT, char *, ...);
-void flush_errors (void);
-
 /*
  * static prototypes
  */
@@ -344,7 +336,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)
@@ -499,11 +491,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);
@@ -710,7 +706,7 @@ show_multi_aux (CT ct, int alternate, char *cp, struct format *fmt)
            if ((*p->c_ceopenfnx) (p, &file) == NOTOK)
                return NOTOK;
 
-           p->c_storage = add (file, NULL);
+           p->c_storage = mh_xstrdup(FENDNULL(file));
 
            if (p->c_showproc && !strcmp (p->c_showproc, "true"))
                return OK;
@@ -1216,7 +1212,7 @@ iconv_start:
                replace_param(&ct->c_ctinfo.ci_first_pm,
                              &ct->c_ctinfo.ci_last_pm, "charset",
                              dest_charset, 0);
-               outline = output_params(strlen(TYPE_FIELD) + 1 + strlen(ctline),
+               outline = output_params(LEN(TYPE_FIELD) + 1 + strlen(ctline),
                                        ct->c_ctinfo.ci_first_pm, NULL, 0);
                if (outline) {
                    ctline = add(outline, ctline);