X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Freadconfig.c;h=1ddd648f9feeef1563452102578e9e9fd89774e6;hb=cbaaccc109298129f33411909d68e772d138bb1b;hp=5900c375dc4154d296a9ed622ae6f57cf039b3d3;hpb=e30560d793ff5bc704dadc2eab9d31100ad4636b;p=mmh diff --git a/sbr/readconfig.c b/sbr/readconfig.c index 5900c37..1ddd648 100644 --- a/sbr/readconfig.c +++ b/sbr/readconfig.c @@ -106,19 +106,49 @@ readconfig (struct node **npp, FILE *ib, char *file, int ctx) break; } + /* + * Special handling for the pager processes: lproc and moreproc. + * + * If they are not set by the profile, use the callers $PAGER if + * available, otherwise set them to DEFAULT_PAGER. + */ + if (lproc == NULL) { + lproc = getenv("PAGER"); + if (lproc == NULL || lproc[0] == '\0') + lproc = DEFAULT_PAGER; + } + if (moreproc == NULL) { + moreproc = getenv("PAGER"); + if (moreproc == NULL || moreproc[0] == '\0') + moreproc = DEFAULT_PAGER; + } + 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); + } } } }