X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/d836c5ffd19fc25c9a5b5b8e77976229935d95ea..52391b538640f320acb25a66b673042c51567f61:/uip/mhfixmsg.c diff --git a/uip/mhfixmsg.c b/uip/mhfixmsg.c index 069e3284..f5488532 100644 --- a/uip/mhfixmsg.c +++ b/uip/mhfixmsg.c @@ -53,15 +53,11 @@ int debugsw; /* Needed by mhparse.c. */ extern int skip_mp_cte_check; /* flag to InitMultiPart */ extern int suppress_bogus_mp_content_warning; /* flag to InitMultiPart */ extern int bogus_mp_content; /* flag from InitMultiPart */ -CT parse_mime (char *); void reverse_parts (CT); /* mhoutsbr.c */ int output_message (CT, char *); -/* mhshowsbr.c */ -int show_content_aux (CT, int, char *, char *); - /* mhmisc.c */ void flush_errors (void); @@ -291,11 +287,12 @@ main (int argc, char **argv) { } } - if (! (cts = (CT *) calloc ((size_t) 2, sizeof *cts))) + if (! (cts = (CT *) calloc ((size_t) 2, sizeof *cts))) { adios (NULL, "out of memory"); + } ctp = cts; - if ((ct = parse_mime (file))) *ctp++ = ct; + if ((ct = parse_mime (file))) { *ctp++ = ct; } } else { /* * message(s) are coming from a folder @@ -325,8 +322,9 @@ main (int argc, char **argv) { done (1); seq_setprev (mp); /* set the previous-sequence */ - if (! (cts = (CT *) calloc ((size_t) (mp->numsel + 1), sizeof *cts))) + if (! (cts = (CT *) calloc ((size_t) (mp->numsel + 1), sizeof *cts))) { adios (NULL, "out of memory"); + } ctp = cts; for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) { @@ -334,7 +332,7 @@ main (int argc, char **argv) { char *msgnam; msgnam = m_name (msgnum); - if ((ct = parse_mime (msgnam))) *ctp++ = ct; + if ((ct = parse_mime (msgnam))) { *ctp++ = ct; } } } @@ -450,7 +448,7 @@ mhfixmsgsbr (CT *ctp, const fix_transformations *fx, char *outfile) { } if (modify_inplace) { - if (status != OK) (void) m_unlink (outfile); + if (status != OK) { (void) m_unlink (outfile); } free (outfile); outfile = NULL; } @@ -850,7 +848,7 @@ ensure_text_plain (CT *ct, CT parent, int *message_mods, int replacetextplain) { int has_text_plain = 0; /* Nothing to do for text/plain. */ - if ((*ct)->c_subtype == TEXT_PLAIN) return OK; + if ((*ct)->c_subtype == TEXT_PLAIN) { return OK; } if (parent && parent->c_type == CT_MULTIPART && parent->c_subtype == MULTI_ALTERNATE) { @@ -1095,40 +1093,25 @@ reformat_part (CT ct, char *file, char *type, char *subtype, int c_type) { Could show_multi() in mhshowsbr.c avoid this? */ /* Check for invo_name-format-type/subtype. */ - cp = concat (invo_name, "-format-", type, "/", subtype, NULL); - if ((cf = context_find (cp)) && *cf != '\0') { + if ((cf = context_find_by_type ("format", type, subtype)) == NULL) { + if (verbosw) { + advise (NULL, "Don't know how to convert %s, there is no " + "%s-format-%s/%s profile entry", + ct->c_file, invo_name, type, subtype); + } + return NOTOK; + } else { if (strchr (cf, '>')) { - free (cp); advise (NULL, "'>' prohibited in \"%s\",\nplease fix your " "%s-format-%s/%s profile entry", cf, invo_name, type, - subtype); - return NOTOK; - } - } else { - free (cp); - - /* Check for invo_name-format-type. */ - cp = concat (invo_name, "-format-", type, NULL); - if (! (cf = context_find (cp)) || *cf == '\0') { - free (cp); - if (verbosw) { - advise (NULL, "Don't know how to convert %s, there is no " - "%s-format-%s/%s profile entry", - ct->c_file, invo_name, type, subtype); - } - return NOTOK; - } + subtype ? subtype : ""); - if (strchr (cf, '>')) { - free (cp); - advise (NULL, "'>' prohibited in \"%s\"", cf); return NOTOK; } } - free (cp); cp = concat (cf, " >", file, NULL); - status = show_content_aux (ct, 0, cp, NULL); + status = show_content_aux (ct, 0, cp, NULL, NULL); free (cp); /* Unlink decoded content tmp file and free its filename to avoid @@ -1163,12 +1146,9 @@ reformat_part (CT ct, char *file, char *type, char *subtype, int c_type) { /* 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; } @@ -1594,8 +1574,7 @@ content_encoding (CT ct, const char **reason) { 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 @@ -1603,10 +1582,10 @@ strip_crs (CT ct, int *message_mods) { 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; @@ -1653,7 +1632,7 @@ strip_crs (CT ct, int *message_mods) { size_t i; int last_char_was_cr = 0; - if (end > 0) bytes_to_read -= bytes_read; + if (end > 0) { bytes_to_read -= bytes_read; } for (i = 0, cp = buffer; i < bytes_read; ++i, ++cp) { if (*cp == '\n' && last_char_was_cr) { @@ -1688,11 +1667,19 @@ strip_crs (CT ct, int *message_mods) { if (*cp == '\r') { last_char_was_cr = 1; } else if (last_char_was_cr) { - if (*cp != '\n') write (fd, "\r", 1); - write (fd, cp, 1); + if (*cp != '\n') { + if (write (fd, "\r", 1) < 0) { + advise (tempfile, "write of CR failed"); + } + } + if (write (fd, cp, 1) < 0) { + advise (tempfile, "write failed"); + } last_char_was_cr = 0; } else { - write (fd, cp, 1); + if (write (fd, cp, 1) < 0) { + advise (tempfile, "write failed"); + } last_char_was_cr = 0; } } @@ -1730,7 +1717,6 @@ strip_crs (CT ct, int *message_mods) { } } - free (charset); return status; } @@ -1821,8 +1807,8 @@ write_content (CT ct, char *input_filename, char *outfile, int modify_inplace, } } } - if (new != -1) close (new); - if (old != -1) close (old); + if (new != -1) { close (new); } + if (old != -1) { close (old); } (void) m_unlink (outfile); if (i < 0) {