* docs/MAIL.FILTERING: added note on removing procmail -f or
[mmh] / sbr / context_read.c
index fcc12f9..1a584e4 100644 (file)
@@ -39,6 +39,13 @@ context_read (void)
     register   FILE            *ib;            /* profile and context file pointer */
 
     /*
+     *  If this routine _is_ called again (despite the wanings in the
+     *  comments above), return immediately.
+     */
+    if ( m_defs != 0 )
+        return;
+
+    /*
      * Find user's home directory.  Try the HOME environment variable first,
      * the home directory field in the password file if that's not found.
      */
@@ -106,7 +113,7 @@ context_read (void)
        free (cp);
 
        if (!makedir (nd))
-           adios (NULL, "unable to create", nd);
+           adios (NULL, "unable to create %s", nd);
     }
 
     else if ((st.st_mode & S_IFDIR) == 0)
@@ -120,8 +127,11 @@ context_read (void)
     if ((cp = getenv ("MHCONTEXT")) == (char *)0 || *cp == '\0')
        cp = context;
 
-    /* context is NULL if context_foil() was called to disable use of context */
-    if (!cp) {
+    /* context is NULL if context_foil() was called to disable use of context
+     * We also support users setting explicitly setting MHCONTEXT to /dev/null.
+     * (if this wasn't specialcased then the locking would be liable to fail)
+     */
+    if (!cp || (strcmp(cp,"/dev/null") == 0)) {
        ctxpath = NULL;
        return;
     }