From: markus schnalke Date: Mon, 12 Dec 2011 12:38:51 +0000 (+0100) Subject: Moved etcpath() from config/config.c to sbr/path.c X-Git-Tag: mmh-thesis-end~456 X-Git-Url: http://git.marmaro.de/?a=commitdiff_plain;h=b4c29794c12099556151d93a860ee51badae2e35;p=mmh Moved etcpath() from config/config.c to sbr/path.c --- diff --git a/config/config.c b/config/config.c index e282b25..83ea0ae 100644 --- a/config/config.c +++ b/config/config.c @@ -7,78 +7,18 @@ */ #include -#include - - -/* -** Find the location of a format or configuration -** file, and return its absolute pathname. -** -** 1) If already absolute pathname, then leave unchanged. -** 2) Next, if it begins with ~user, then expand it. -** 3) Next, check in nmh Mail directory. -** 4) Next, check in nmh `etc' directory. -*/ -char * -etcpath(char *file) -{ - static char epath[PATH_MAX]; - char *cp; - char *pp; - struct passwd *pw; - - context_read(); - if (*file == '~') { - /* Expand ~username */ - if ((cp = strchr(pp = file + 1, '/'))) - *cp++ = '\0'; - if (*pp == '\0') { - pp = mypath; - } else { - if ((pw = getpwnam(pp))) - pp = pw->pw_dir; - else { - if (cp) - *--cp = '/'; - goto try_it; - } - } - - snprintf(epath, sizeof epath, "%s/%s", pp, cp ? cp : ""); - if (cp) - *--cp = '/'; - - if (access(epath, R_OK) != NOTOK) - return epath; /* else fall */ - } - -try_it: - if (*file == '/') { - /* If already absolute pathname, return it */ - return file; - } - - /* Check nmh Mail directory */ - strncpy(epath, toabsdir(file), sizeof epath); - if (access(epath, R_OK) != NOTOK) - return epath; - - /* Check nmh `etc' directory */ - snprintf(epath, sizeof epath, NMHETCDIR"/%s", file); - return (access(epath, R_OK) != NOTOK ? epath : file); -} /* ** Standard yes/no switches structure */ - struct swit anoyes[] = { { "no", 0 }, { "yes", 0 }, { NULL, 0 } }; + /* ** nmh constants */ @@ -127,6 +67,7 @@ char *nmhaccessftp = "nmh-access-ftp"; char *mhlibdir = NMHLIBDIR; char *mhetcdir = NMHETCDIR; + /* ** nmh not-so constants */ @@ -147,6 +88,7 @@ char *mh_seq = NULL; char *mh_seq = ".mh_sequences"; #endif + /* ** nmh globals */ @@ -158,6 +100,7 @@ char *defpath; /* pathname of user's profile */ char *ctxpath; /* pathname of user's context */ struct node *m_defs; /* profile/context structure */ + /* ** nmh processes */ @@ -166,6 +109,7 @@ struct node *m_defs; /* profile/context structure */ ** This is the program to process MIME composition files */ char *buildmimeproc = NMHBINDIR"/mhbuild"; + /* ** This is the program to `cat' a file. */ @@ -308,10 +252,6 @@ char *altmsglink = "@"; char *AliasFile = NMHETCDIR"/MailAliases"; /* -** File protections -*/ - -/* ** Folders (directories) are created with this protection (mode) */ char *foldprot = "700"; diff --git a/sbr/path.c b/sbr/path.c index ca3595a..fd05f34 100644 --- a/sbr/path.c +++ b/sbr/path.c @@ -7,6 +7,68 @@ */ #include +#include + +extern char *mhetcdir; + + +/* +** Find the location of a format or configuration +** file, and return its absolute pathname. +** +** 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. +*/ +char * +etcpath(char *file) +{ + static char epath[PATH_MAX]; + char *cp; + char *pp; + struct passwd *pw; + + context_read(); + if (*file == '~') { + /* Expand `~user' */ + if ((cp = strchr(pp = file + 1, '/'))) + *cp++ = '\0'; + if (*pp == '\0') { + pp = mypath; + } else { + if ((pw = getpwnam(pp))) + pp = pw->pw_dir; + else { + if (cp) + *--cp = '/'; + goto try_it; + } + } + + snprintf(epath, sizeof epath, "%s/%s", pp, cp ? cp : ""); + if (cp) + *--cp = '/'; + + if (access(epath, R_OK) != NOTOK) + return epath; /* else fall */ + } + +try_it: + if (*file == '/') { + /* absolute pathname, return it */ + return file; + } + + /* Check nmh Mail directory */ + strncpy(epath, toabsdir(file), sizeof epath); + 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); +} /*