X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/55a31c2eec8e219a297ba7fa2f11c3f5108b0fe2..63621a81d16ab743de6b57d47578a9a2c670ad22:/uip/mhparse.c?ds=sidebyside diff --git a/uip/mhparse.c b/uip/mhparse.c index 4d8e91e7..1dc44e7a 100644 --- a/uip/mhparse.c +++ b/uip/mhparse.c @@ -15,12 +15,12 @@ #include #include "mhmisc.h" #include -#include "../sbr/m_mktemp.h" +#include "sbr/m_mktemp.h" #include "mhfree.h" #ifdef HAVE_ICONV # include #endif /* HAVE_ICONV */ -#include "../sbr/base64.h" +#include "sbr/base64.h" extern int debugsw; @@ -46,8 +46,7 @@ bool suppress_extraneous_trailing_semicolon_warning; bool suppress_multiple_mime_version_warning = true; /* list of preferred type/subtype pairs, for -prefer */ -char *preferred_types[NPREFS]; -char *preferred_subtypes[NPREFS]; +mime_type_subtype mime_preference[NPREFS]; int npreferred; @@ -730,7 +729,7 @@ magic_skip: * Get any given in buffer */ if (magic && *cp == '<') { - mh_xfree(ct->c_id); + free(ct->c_id); ct->c_id = NULL; if (!(dp = strchr(ct->c_id = ++cp, '>'))) { inform("invalid ID in message %s", ct->c_file); @@ -1109,7 +1108,7 @@ InitMultiPart (CT ct) bp = cte + strlen (cte) - 1; while (bp >= cte && isspace ((unsigned char) *bp)) *bp-- = '\0'; - for (bp = cte; *bp && isblank ((unsigned char) *bp); ++bp) continue; + for (bp = cte; isblank((unsigned char)*bp); ++bp) continue; inform("\"%s/%s\" type in message %s must be encoded in\n" "7bit, 8bit, or binary, per RFC 2045 (6.4). " @@ -1317,7 +1316,7 @@ reverse_parts (CT ct) } static void -move_preferred_part (CT ct, char *type, char *subtype) +move_preferred_part(CT ct, mime_type_subtype *pref) { struct multipart *m = (struct multipart *) ct->c_ctparams; struct part *part, *prev, *head, *nhead, *ntail; @@ -1341,8 +1340,9 @@ move_preferred_part (CT ct, char *type, char *subtype) part = head->mp_next; while (part != NULL) { ci = &part->mp_part->c_ctinfo; - if (!strcasecmp(ci->ci_type, type) && - (!subtype || !strcasecmp(ci->ci_subtype, subtype))) { + if (!strcasecmp(ci->ci_type, pref->type) && + (!pref->subtype || + !strcasecmp(ci->ci_subtype, pref->subtype))) { prev->mp_next = part->mp_next; part->mp_next = NULL; ntail->mp_next = part; @@ -1355,7 +1355,6 @@ move_preferred_part (CT ct, char *type, char *subtype) } ntail->mp_next = head->mp_next; m->mp_parts = nhead->mp_next; - } /* @@ -1367,8 +1366,8 @@ static void prefer_parts(CT ct) { int i; - for (i = npreferred-1; i >= 0; i--) - move_preferred_part(ct, preferred_types[i], preferred_subtypes[i]); + for (i = 0; i < npreferred; i++) + move_preferred_part(ct, mime_preference + i); } @@ -2556,7 +2555,7 @@ openFTP (CT ct, char **file) } { - int child_id, i, vecp; + int child_id, vecp; char *vec[9]; vecp = 0; @@ -2573,8 +2572,7 @@ openFTP (CT ct, char **file) fflush (stdout); - for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++) - sleep (5); + child_id = fork(); switch (child_id) { case NOTOK: adios ("fork", "unable to"); @@ -2652,7 +2650,7 @@ InitMail (CT ct) static int openMail (CT ct, char **file) { - int child_id, fd, i, vecp; + int child_id, fd, vecp; int len, buflen; char *bp, buffer[BUFSIZ], *vec[7]; struct exbody *e = ct->c_ctexbody; @@ -2708,8 +2706,7 @@ openMail (CT ct, char **file) vec[vecp++] = e->eb_body; vec[vecp] = NULL; - for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++) - sleep (5); + child_id = fork(); switch (child_id) { case NOTOK: advise ("fork", "unable to"); @@ -2748,7 +2745,7 @@ openMail (CT ct, char **file) /* showproc is for mhshow and mhstore, though mhlist -debug * prints it, too. */ - mh_xfree(ct->c_showproc); + free(ct->c_showproc); ct->c_showproc = mh_xstrdup("true"); fseek (ce->ce_fp, 0L, SEEK_SET); @@ -3399,7 +3396,7 @@ parse_header_attrs (const char *filename, const char *fieldname, inform("missing language tag in message %s's %s: field\n" " (parameter %s)", filename, fieldname, nameptr); free(nameptr); - mh_xfree(charset); + free(charset); return NOTOK; } @@ -3422,8 +3419,8 @@ parse_header_attrs (const char *filename, const char *fieldname, inform("invalid encoded sequence in message %s's %s: field\n" " (parameter %s)", filename, fieldname, nameptr); free(nameptr); - mh_xfree(charset); - mh_xfree(lang); + free(charset); + free(lang); return NOTOK; } vp += 2; @@ -3463,8 +3460,8 @@ bad_quote: inform("invalid quoted-string in message %s's %s: field\n" " (parameter %s)", filename, fieldname, nameptr); free(nameptr); - mh_xfree(charset); - mh_xfree(lang); + free(charset); + free(lang); return NOTOK; case '"': break; @@ -3571,9 +3568,9 @@ bad_quote: */ if (index == 0 && encoded) { - mh_xfree(pp->charset); + free(pp->charset); pp->charset = charset; - mh_xfree(pp->lang); + free(pp->lang); pp->lang = lang; } } else { @@ -3672,7 +3669,7 @@ output_params(size_t initialwidth, PM params, int *offsetout, int external) if (strlen(params->pm_name) > CPERLIN) { inform("Parameter name \"%s\" is too long", params->pm_name); - mh_xfree(paramout); + free(paramout); return NULL; } @@ -3709,7 +3706,7 @@ output_params(size_t initialwidth, PM params, int *offsetout, int external) numchars, valoff); if (i == 0) { - mh_xfree(paramout); + free(paramout); return NULL; } @@ -3772,7 +3769,7 @@ output_params(size_t initialwidth, PM params, int *offsetout, int external) strlen(params->pm_value + valoff), valoff); if (i == 0) { - mh_xfree(paramout); + free(paramout); return NULL; }