]> diplodocus.org Git - nmh/blobdiff - sbr/context_read.c
Change things so we can take two file descriptors, one for input
[nmh] / sbr / context_read.c
index a655effc41bc20d54ac6cadebd9a1103c838df7f..de14b0d560920aec7b7fb7231b394536b5d24d71 100644 (file)
@@ -23,7 +23,6 @@
  */
 
 #include <h/mh.h>                              /* mh internals */
-#include <errno.h>                             /* system call errors */
 #include <pwd.h>                               /* structure for getpwuid() results */
 
 void
@@ -35,6 +34,7 @@ context_read (void)
     struct     stat            st;             /* stat() results */
     register   struct  passwd  *pw;            /* getpwuid() results */
     register   FILE            *ib;            /* profile and context file pointer */
+    int failed_to_lock = 0;
 
     /*
      *  If this routine _is_ called again (despite the wanings in the
@@ -65,6 +65,8 @@ context_read (void)
     if ((cp = getenv("MH")) && *cp != '\0') {
        defpath = path(cp, TFILE);
 
+        /* defpath is an absolute path; make sure that always MH is, too. */
+       setenv("MH", defpath, 1);
        if (stat(defpath, &st) != -1 && (st.st_mode & S_IFREG) == 0)
                adios((char *)0, "`%s' specified by your MH environment variable is not a normal file", cp);
 
@@ -105,7 +107,7 @@ context_read (void)
 
        cp = concat ("Your MH-directory \"", nd, "\" doesn't exist; Create it? ", NULL);
 
-       if (!getanswer(cp))
+       if (!read_yes_or_no_if_tty(cp))
            adios (NULL, "unable to access MH-directory \"%s\"", nd);
 
        free (cp);
@@ -136,9 +138,9 @@ context_read (void)
     
     ctxpath = getcpy (m_maildir (cp));
 
-    if ((ib = lkfopen (ctxpath, "r"))) {
+    if ((ib = lkfopendata (ctxpath, "r", &failed_to_lock))) {
        readconfig ((struct node **) 0, ib, cp, 1);
-       lkfclose (ib, ctxpath);
+       lkfclosedata (ib, ctxpath);
     }
 
     return;