Use sysexits.h for better exit-codes
[mmh] / sbr / path.c
index fd05f34..f95a758 100644 (file)
@@ -6,10 +6,10 @@
 ** complete copyright information.
 */
 
+#include <sysexits.h>
 #include <h/mh.h>
 #include <pwd.h>
-
-extern char *mhetcdir;
+#include <unistd.h>
 
 
 /*
@@ -18,8 +18,9 @@ extern char *mhetcdir;
 **
 ** 1) If it begins with ~user, then expand it.
 ** 2) Next, if already absolute pathname, then leave unchanged.
-** 3) Next, check in nmh Mail directory.
-** 4) Next, check in nmh `etc' directory.
+** 3) Next, check in mmh directory.
+** 4) Next, check in mmh `etc' directory.
+** 5) As fall-back, return `file' unchanged.
 */
 char *
 etcpath(char *file)
@@ -29,7 +30,7 @@ etcpath(char *file)
        char *pp;
        struct passwd *pw;
 
-       context_read();
+       /* XXX: here was: ``context_read();'' -- why? */
        if (*file == '~') {
                /* Expand `~user' */
                if ((cp = strchr(pp = file + 1, '/')))
@@ -60,14 +61,18 @@ try_it:
                return file;
        }
 
-       /* Check nmh Mail directory */
-       strncpy(epath, toabsdir(file), sizeof epath);
+       /* Check mmh directory */
+       snprintf(epath, sizeof epath, "%s/%s", mmhpath, file);
        if (access(epath, R_OK) != NOTOK)
                return epath;
 
        /* Check nmh `etc' directory */
        snprintf(epath, sizeof epath, "%s/%s", mhetcdir, file);
-       return (access(epath, R_OK) != NOTOK ? epath : file);
+       if  (access(epath, R_OK) != NOTOK)
+               return epath;
+
+       /* The fall-back */
+       return file;
 }
 
 
@@ -234,12 +239,13 @@ char *
 expanddir(char *d)
 {
        static char buf[BUFSIZ];
+       int len;
 
        if (*d == '/') {
                strcpy(buf, d);
        } else {
                getcwd(buf, sizeof buf);
-               int len = strlen(buf);
+               len = strlen(buf);
                snprintf(buf+len, sizeof buf - len, "/%s", d);
        }
        packpath(buf);
@@ -280,7 +286,7 @@ toabsdir(char *path)
                char *cp=buf, *pp;
 
                if (!(pp = context_find("path")) || !*pp) {
-                       adios(NULL, "Non-empty profile entry `Path' required");
+                       adios(EX_CONFIG, NULL, "Non-empty profile entry `Path' required");
                }
                if (*pp != '/') {
                        /* Path is relative to $HOME */