int output_message (CT, char *);
/* mhshowsbr.c */
-int show_content_aux (CT, int, int, char *, char *);
+int show_content_aux (CT, int, char *, char *);
/* mhmisc.c */
void flush_errors (void);
static int convert_charsets (CT, char *, int *);
static int write_content (CT, char *, char *, int, int);
static int remove_file (char *);
-static void report (char *, char *, char *, ...);
+static void report (char *, char *, char *, char *, ...);
static void pipeser (int);
++*message_mods;
if (verbosw) {
- report (NULL, filename,
+ report (NULL, NULL, filename,
"fix multipart boundary");
}
}
++*message_mods;
if (verbosw) {
char *encoding = cpytrim (hf->value);
- report (ct->c_partno, ct->c_file,
+ report (NULL, ct->c_partno, ct->c_file,
"replace Content-Transfer-Encoding of %s "
"with 8 bit", encoding);
free (encoding);
prev->mp_next = part->mp_next;
}
if (verbosw) {
- report (parent->c_partno, parent->c_file,
+ report (NULL, parent->c_partno, parent->c_file,
"remove text/plain part %s",
old_part->mp_part->c_partno);
}
++*message_mods;
if (verbosw) {
- report (parent->c_partno, parent->c_file,
+ report (NULL, parent->c_partno, parent->c_file,
"insert text/plain part");
}
} else {
++*message_mods;
if (verbosw) {
- report ((*ct)->c_partno, (*ct)->c_file,
+ report (NULL, (*ct)->c_partno, (*ct)->c_file,
"insert text/plain part");
}
} else {
free (cp);
cp = concat (cf, " >", file, NULL);
- status = show_content_aux (ct, 1, 0, cp, NULL);
+ status = show_content_aux (ct, 0, cp, NULL);
free (cp);
/* Unlink decoded content tmp file and free its filename to avoid
/* Identifies 7bit or 8bit content based on charset. */
static int
charset_encoding (CT ct) {
- /* norm_charmap() is case sensitive. */
- char *charset = upcase (content_charset (ct));
int encoding =
- strcmp (norm_charmap (charset), "US-ASCII") ? CE_8BIT : CE_7BIT;
+ strcasecmp (content_charset (ct), "US-ASCII") ? CE_8BIT : CE_7BIT;
- free (charset);
return encoding;
}
c_cefile, c_encoding,
c_digested, c_digest[16], c_ctexbody,
c_ctinitfnx, c_ceopenfnx, c_ceclosefnx, c_cesizefnx,
- c_umask, c_pid, c_rfc934,
+ c_umask, c_rfc934,
c_showproc, c_termproc, c_storeproc, c_storage, c_folder
*/
/* The decoding isn't acceptable so discard it.
Leave status as OK to allow other transformations. */
if (verbosw) {
- report (ct->c_partno, ct->c_file,
+ 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
/* The decoding isn't acceptable so discard it.
Leave status as OK to allow other transformations. */
if (verbosw) {
- report (ct->c_partno, ct->c_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
if (set_ce (ct, enc) == OK) {
++*message_mods;
if (verbosw) {
- report (ct->c_partno, ct->c_file, "decode%s",
+ report (NULL, ct->c_partno, ct->c_file, "decode%s",
ct->c_ctline ? ct->c_ctline : "");
}
strip_crs (ct, message_mods);
static int
strip_crs (CT ct, int *message_mods) {
- /* norm_charmap() is case sensitive. */
- char *charset = upcase (content_charset (ct));
+ char *charset = content_charset (ct);
int status = OK;
/* Only strip carriage returns if content is ASCII or another
LF. We can include UTF-8 here because if the high-order bit of
a UTF-8 byte is 0, then it must be a single-byte ASCII
character. */
- if (! strcmp (norm_charmap (charset), "US-ASCII") ||
- ! strncmp (norm_charmap (charset), "ISO-8859-", 9) ||
- ! strncmp (norm_charmap (charset), "UTF-8", 5) ||
- ! strncmp (norm_charmap (charset), "WINDOWS-12", 10)) {
+ if (! strcasecmp (charset, "US-ASCII") ||
+ ! strcasecmp (charset, "UTF-8") ||
+ ! strncasecmp (charset, "ISO-8859-", 9) ||
+ ! strncasecmp (charset, "WINDOWS-12", 10)) {
char **file = NULL;
FILE **fp = NULL;
size_t begin;
++*message_mods;
if (verbosw) {
- report (ct->c_partno,
+ report (NULL, ct->c_partno,
begin == 0 && end == 0 ? "" : *file,
"stripped CRs");
}
}
}
- free (charset);
return status;
}
case CT_TEXT:
if (ct->c_subtype == TEXT_PLAIN) {
status = convert_charset (ct, dest_charset, message_mods);
- if (verbosw && status == OK) {
- report (ct->c_partno, ct->c_file, "convert %s to %s",
- content_charset(ct), dest_charset);
+ if (status == OK) {
+ if (verbosw) {
+ report (NULL, ct->c_partno, ct->c_file,
+ "convert %s to %s",
+ content_charset(ct), dest_charset);
+ }
+ } else {
+ report ("iconv", ct->c_partno, ct->c_file,
+ "failed to convert %s to %s",
+ content_charset(ct), dest_charset);
}
}
break;
static void
-report (char *partno, char *filename, char *message, ...) {
+report (char *what, char *partno, char *filename, char *message, ...) {
va_list args;
char *fmt;
fmt = concat (filename, partno ? " part " : ", ",
partno ? partno : "", partno ? ", " : "", message, NULL);
- advertise (NULL, NULL, fmt, args);
+ advertise (what, NULL, fmt, args);
free (fmt);
va_end (args);