-/*
- * mhfixmsg.c -- rewrite a message with various transformations
+/* mhfixmsg.c -- rewrite a message with various transformations
*
* This code is Copyright (c) 2002 and 2013, by the authors of nmh.
* See the COPYRIGHT file in the root directory of the nmh
*/
#include <h/mh.h>
+#include <h/fmt_scan.h>
#include <h/mime.h>
#include <h/mhparse.h>
#include <h/utils.h>
#include <h/signals.h>
+#include "../sbr/m_maildir.h"
+#include "../sbr/m_mktemp.h"
+#include "../sbr/mime_type.h"
+#include "mhfree.h"
+#include "mhoutsbr.h"
+#include "mhshowsbr.h"
#include <fcntl.h>
#define MHFIXMSG_SWITCHES \
/* flags to/from parse_header_attrs */
extern int suppress_extraneous_trailing_semicolon_warning;
-/* mhoutsbr.c */
-int output_message_fp (CT, FILE *, char *);
-
/* mhmisc.c */
void flush_errors (void);
-/* mhfree.c */
-extern CT *cts;
-
/*
* static prototypes
*/
}
}
- if (! end_boundary && begin > (off_t) (ct->c_begin + sizeof buffer)) {
- begin -= sizeof buffer;
- } else {
+ if (end_boundary || begin <= (off_t) (ct->c_begin + sizeof buffer))
break;
- }
+ begin -= sizeof buffer;
}
/* Get boundary at beginning of multipart. */
strlen(new_ctline) + 1,
ct->c_ctinfo.ci_first_pm, NULL, 0);
fprintf (fpout, "%s:%s%s\n", np, new_ctline,
- new_params ? new_params : "");
+ FENDNULL(new_params));
free(new_ctline);
mh_xfree(new_params);
}
type, ct_type_subtype);
}
break;
- } else {
- inform("did not find %s in %s",
- type, hf->value);
}
+ inform("did not find %s in %s", type, hf->value);
}
}
}
char *
remove_parameter (char *str, const char *name) {
/* It looks to me, based on the BNF in RFC 2045, than there can't
- be whitespace betwwen the parameter name and the "=", or
+ be whitespace between the parameter name and the "=", or
between the "=" and the parameter value. */
char *param_name = concat (name, "=", NULL);
char *cp;
multipart/alternative. */
remove_parameter (hf->value, "type");
break;
- } else {
- inform("did not find multipart/"
- "related in header %s",
- hf->value);
}
+ inform("did not find multipart/"
+ "related in header %s", hf->value);
}
}
} else {
(void) m_unlink (tmp_decoded);
free (tmp_decoded);
if (fclose (file)) {
- admonish (NULL, "unable to close temporary file %s", tempfile);
+ inform("unable to close temporary file %s, continuing...", tempfile);
}
return status;
if (strchr (cf, '>')) {
inform("'>' prohibited in \"%s\",\nplease fix your "
"%s-format-%s/%s profile entry", cf, invo_name, type,
- subtype ? subtype : "");
+ FENDNULL(subtype));
return NOTOK;
}
snprintf (buffer2, sizeof buffer2, "%d", serial);
boundary =
concat (boundary_prefix,
- first_alt->c_partno ? first_alt->c_partno : "",
+ FENDNULL(first_alt->c_partno),
"-", buffer2, NULL);
}
}
report (NULL, ct->c_partno, ct->c_file,
"will not decode%s because it is binary (%s)",
ct->c_partno ? ""
- : ct->c_ctline ? ct->c_ctline
- : "",
+ : (FENDNULL(ct->c_ctline)),
reason);
}
(void) m_unlink (ct->c_cefile.ce_file);
report (NULL, ct->c_partno, ct->c_file,
"will not decode%s because it is 8bit",
ct->c_partno ? ""
- : ct->c_ctline ? ct->c_ctline
- : "");
+ : (FENDNULL(ct->c_ctline)));
}
(void) m_unlink (ct->c_cefile.ce_file);
free (ct->c_cefile.ce_file);
++*message_mods;
if (verbosw) {
report (NULL, ct->c_partno, ct->c_file, "decode%s",
- ct->c_ctline ? ct->c_ctline : "");
+ FENDNULL(ct->c_ctline));
}
if (lf_line_endings) {
strip_crs (ct, message_mods);
*reason = "";
}
break;
- } else if (*cp == '\n') {
+ }
+ if (*cp == '\n') {
line_len = 0;
} else if (! isascii ((unsigned char) *cp)) {
encoding = CE_8BIT;
}
- last_char_was_cr = *cp == '\r' ? 1 : 0;
+ last_char_was_cr = *cp == '\r';
}
}
break;
}
- last_char_was_cr = *cp == '\r' ? 1 : 0;
+ last_char_was_cr = *cp == '\r';
}
}
}
if (close (fd)) {
- admonish (NULL, "unable to write temporary file %s",
+ inform("unable to write temporary file %s, continuing...",
stripped_content_file);
(void) m_unlink (stripped_content_file);
status = NOTOK;
expand filename to absolute path. */
int file = ct->c_file && ct->c_file[0] == '/';
- admonish (NULL, "unable to rename %s %s to %s",
+ inform("unable to rename %s %s to %s, continuing...",
file ? "file" : "message", outfile,
infile);
status = NOTOK;
}
}
} else {
- admonish (NULL, "unable to remove input file %s, "
- "not modifying it", infile);
+ inform("unable to remove input file %s, "
+ "not modifying it, continuing...", infile);
(void) m_unlink (outfile);
status = NOTOK;
}
if (verbosw) {
va_start (args, message);
fmt = concat (filename, partno ? " part " : ", ",
- partno ? partno : "", partno ? ", " : "", message, NULL);
+ FENDNULL(partno), partno ? ", " : "", message, NULL);
advertise (what, NULL, fmt, args);