-
-/*
- * 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
#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 */
*/
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;
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);
}
}
{
int fd;
int xstdin = 0, xlist = 0;
- char *file = NULL, buffer[BUFSIZ];
+ char *file = NULL, buffer[NMH_BUFSIZ];
if (!ct->c_ceopenfnx) {
if (!alternate)
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);
}
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;
}
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);
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;
}
/* 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;
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. */
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");
}
}