X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Freadconfig.c;h=4cf05f1b2db56faa222446601007f0b93f766fb8;hb=b3bc649e0562c9aa68acdf7fb5c8c03335cafb25;hp=5900c375dc4154d296a9ed622ae6f57cf039b3d3;hpb=e30560d793ff5bc704dadc2eab9d31100ad4636b;p=mmh diff --git a/sbr/readconfig.c b/sbr/readconfig.c index 5900c37..4cf05f1 100644 --- a/sbr/readconfig.c +++ b/sbr/readconfig.c @@ -107,18 +107,31 @@ readconfig (struct node **npp, FILE *ib, char *file, int ctx) } if (opp == NULL) { - /* Check for duplicated profile entries. But only on this - very first call from context_read(), when opp is NULL. */ + /* Check for duplicated non-null profile entries. Except + allow multiple profile entries named "#", because that's + what the mh-profile man page suggests using for comments. + Only do this check on the very first call from + context_read(), when opp is NULL. That way, entries in + mhn.defaults can be overridden without triggering + warnings. + + Note that that mhn.defaults, $MHN, $MHBUILD, $MHSHOW, and + $MHSTORE all put their entries into just one list, m_defs, + the same list that the profile uses. */ + + struct node *np; for (np = m_defs; np; np = np->n_next) { /* Yes, this is O(N^2). The profile should be small enough so that's not a performance problem. */ - struct node *np2; - for (np2 = np->n_next; np2; np2 = np2->n_next) { - if (!mh_strcasecmp (np->n_name, np2->n_name)) { - admonish (NULL, "multiple \"%s\" profile components " - "in %s, ignoring \"%s\"", - np->n_name, defpath, np2->n_field); + if (strlen (np->n_name) > 0 && strcmp ("#", np->n_name)) { + struct node *np2; + for (np2 = np->n_next; np2; np2 = np2->n_next) { + if (! mh_strcasecmp (np->n_name, np2->n_name)) { + admonish (NULL, "multiple \"%s\" profile components " + "in %s, ignoring \"%s\"", + np->n_name, defpath, np2->n_field); + } } } }