From: Ralph Corderoy Date: Sun, 10 Sep 2017 11:28:51 +0000 (+0100) Subject: Replace parallel MIME-preference arrays with struct array. X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/e5479da8544d4fe47a320934667cb91c1c6a309e?hp=dbc35d5d494dd0ec68b7742446e42239a5e78bf1 Replace parallel MIME-preference arrays with struct array. New array of struct has `type' and `subtype' members, replacing the old preferred_types[] and preferred_subtypes[] arrays. --- diff --git a/h/mhparse.h b/h/mhparse.h index 9ed2b3b6..3b4021f5 100644 --- a/h/mhparse.h +++ b/h/mhparse.h @@ -527,6 +527,9 @@ extern bool suppress_extraneous_trailing_semicolon_warning; extern bool suppress_multiple_mime_version_warning; #define NPREFS 20 -extern char *preferred_types[NPREFS]; -extern char *preferred_subtypes[NPREFS]; +typedef struct { + char *type; + char *subtype; +} mime_type_subtype; +extern mime_type_subtype mime_preference[NPREFS]; extern int npreferred; diff --git a/uip/mhlist.c b/uip/mhlist.c index 26045062..93e2ea0e 100644 --- a/uip/mhlist.c +++ b/uip/mhlist.c @@ -169,10 +169,10 @@ do_cache: if (npreferred >= NPREFS) adios (NULL, "too many preferred types (starting with %s), %d max", cp, NPREFS); - preferred_types[npreferred] = cp; + mime_preference[npreferred].type = cp; cp = strchr(cp, '/'); if (cp) *cp++ = '\0'; - preferred_subtypes[npreferred++] = cp; + mime_preference[npreferred++].subtype = cp; continue; case NPREFERSW: diff --git a/uip/mhparse.c b/uip/mhparse.c index c42d1c32..2e1beb96 100644 --- a/uip/mhparse.c +++ b/uip/mhparse.c @@ -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; @@ -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; - } /* @@ -1368,7 +1367,7 @@ prefer_parts(CT ct) { int i; for (i = 0; i < npreferred; i++) - move_preferred_part(ct, preferred_types[i], preferred_subtypes[i]); + move_preferred_part(ct, mime_preference + i); } diff --git a/uip/mhshow.c b/uip/mhshow.c index e01091e1..40beb1ca 100644 --- a/uip/mhshow.c +++ b/uip/mhshow.c @@ -188,10 +188,10 @@ do_cache: if (npreferred >= NPREFS) adios (NULL, "too many preferred types (starting with %s), %d max", cp, NPREFS); - preferred_types[npreferred] = cp; + mime_preference[npreferred].type = cp; cp = strchr(cp, '/'); if (cp) *cp++ = '\0'; - preferred_subtypes[npreferred++] = cp; + mime_preference[npreferred++].subtype = cp; continue; case NPREFERSW: diff --git a/uip/mhstore.c b/uip/mhstore.c index 80eddb27..ed6ad77f 100644 --- a/uip/mhstore.c +++ b/uip/mhstore.c @@ -161,10 +161,10 @@ do_cache: if (npreferred >= NPREFS) adios (NULL, "too many preferred types (starting with %s), %d max", cp, NPREFS); - preferred_types[npreferred] = cp; + mime_preference[npreferred].type = cp; cp = strchr(cp, '/'); if (cp) *cp++ = '\0'; - preferred_subtypes[npreferred++] = cp; + mime_preference[npreferred++].subtype = cp; continue; case NPREFERSW: