]> git.marmaro.de Git - mmh/blobdiff - sbr/context_read.c
Make print_aka() and print_usr() static. They're not used outside ali.c.
[mmh] / sbr / context_read.c
index e6cdfff03f275abe1f2810fddf4b30ba5b92ccc2..32051c525134f331537485f130f371b1bf58a97a 100644 (file)
@@ -28,8 +28,6 @@
 #include <errno.h>                             /* system call errors */
 #include <pwd.h>                               /* structure for getpwuid() results */
 
-extern int     errno;                          /* system call error number */
-
 void
 context_read (void)
 {
@@ -40,6 +38,13 @@ context_read (void)
     register   struct  passwd  *pw;            /* getpwuid() results */
     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.
@@ -122,11 +127,20 @@ 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
+     * 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;
+    }
+    
     ctxpath = getcpy (m_maildir (cp));
 
-    if ((ib = fopen (ctxpath, "r"))) {
+    if ((ib = lkfopen (ctxpath, "r"))) {
        readconfig ((struct node **) 0, ib, cp, 1);
-       fclose (ib);
+       lkfclose (ib, ctxpath);
     }
 
     return;