Refer to just "root" in slocal man page.
[mmh] / sbr / readconfig.c
index 5900c37..1ddd648 100644 (file)
@@ -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);
+                   }
                }
            }
        }