]> 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 164f679478b61dfd95bf8bbc8940c73a5b9afc67..de14b0d560920aec7b7fb7231b394536b5d24d71 100644 (file)
@@ -34,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
@@ -64,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);
 
@@ -104,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);
@@ -135,7 +138,7 @@ context_read (void)
     
     ctxpath = getcpy (m_maildir (cp));
 
-    if ((ib = lkfopendata (ctxpath, "r"))) {
+    if ((ib = lkfopendata (ctxpath, "r", &failed_to_lock))) {
        readconfig ((struct node **) 0, ib, cp, 1);
        lkfclosedata (ib, ctxpath);
     }