X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=config%2Fconfig.c;h=245ecdeafa0daf08aa497e8b1ca192ad083589e9;hp=de9e343f79eb4f65472c9c3390d6ba5fdc288b5b;hb=aa2bd5081731e83a2cedba6f7f2be61cde201e7d;hpb=05b7f957ba42e79f49b3a62aea2502168c9abf7a diff --git a/config/config.c b/config/config.c index de9e343..245ecde 100644 --- a/config/config.c +++ b/config/config.c @@ -1,107 +1,91 @@ - /* - * config.c -- master nmh configuration file - * - * This code is Copyright (c) 2002, by the authors of nmh. See the - * COPYRIGHT file in the root directory of the nmh distribution for - * complete copyright information. - */ +** config.c -- master nmh configuration file +** +** This code is Copyright (c) 2002, by the authors of nmh. See the +** COPYRIGHT file in the root directory of the nmh distribution for +** complete copyright information. +*/ #include - -#ifdef MHRC -# include -#endif - -#define nmhbindir(file) NMHBINDIR#file -#define nmhetcdir(file) NMHETCDIR#file -#define nmhlibdir(file) NMHLIBDIR#file +#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. - * - */ +** 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; -#ifdef MHRC - char *pp; - struct passwd *pw; -#endif - -#ifdef MHRC - context_read(); -#endif + 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; + } + } - switch (*file) { - case '/': - /* If already absolute pathname, return it */ - return file; - -#ifdef MHRC - case '~': - /* 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) + snprintf (epath, sizeof(epath), "%s/%s", pp, cp ? cp : ""); + 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 */ + } - if (access (epath, R_OK) != NOTOK) - return epath; /* else fall */ try_it: -#endif /* MHRC */ - - default: - /* Check nmh Mail directory */ - if (access ((cp = m_mailpath (file)), R_OK) != NOTOK) - return cp; - } - - /* Check nmh `etc' directory */ - snprintf (epath, sizeof(epath), nmhetcdir(/%s), file); - return (access (epath, R_OK) != NOTOK ? epath : file); + 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 - */ +/* +** Standard yes/no switches structure +*/ struct swit anoyes[] = { - { "no", 0 }, - { "yes", 0 }, - { NULL, 0 } + { "no", 0 }, + { "yes", 0 }, + { NULL, 0 } }; -/* - * nmh constants - */ +/* +** nmh constants +*/ /* initial profile for new users */ -char *mh_defaults = nmhetcdir (/mh.profile); +char *mh_defaults = NMHETCDIR"/mh.profile"; /* default name of user profile */ char *mh_profile = ".mh_profile"; @@ -110,23 +94,23 @@ char *mh_profile = ".mh_profile"; char *current = "cur"; /* standard component files */ -char *components = "components"; /* comp */ -char *replcomps = "replcomps"; /* repl */ -char *replgroupcomps = "replgroupcomps"; /* repl -group */ -char *forwcomps = "forwcomps"; /* forw */ -char *distcomps = "distcomps"; /* dist */ -char *rcvdistcomps = "rcvdistcomps"; /* rcvdist */ -char *digestcomps = "digestcomps"; /* forw -digest */ +char *components = "components"; /* comp */ +char *replcomps = "replcomps"; /* repl */ +char *replgroupcomps = "replgroupcomps"; /* repl -group */ +char *forwcomps = "forwcomps"; /* forw */ +char *distcomps = "distcomps"; /* dist */ +char *rcvdistcomps = "rcvdistcomps"; /* rcvdist */ +char *digestcomps = "digestcomps"; /* forw -digest */ /* standard format (filter) files */ -char *mhlformat = "mhl.format"; /* show */ -char *mhlreply = "mhl.reply"; /* repl -filter */ -char *mhlforward = "mhl.forward"; /* forw -filter */ +char *mhlformat = "mhl.format"; /* show */ +char *mhlreply = "mhl.reply"; /* repl -filter */ +char *mhlforward = "mhl.forward"; /* forw -filter */ -char *draft = "draft"; +char *draftfolder = "+drafts"; char *inbox = "Inbox"; -char *defaultfolder = "inbox"; +char *defaultfolder = "+inbox"; char *pfolder = "Current-Folder"; char *usequence = "Unseen-Sequence"; @@ -144,223 +128,198 @@ char *nmhaccessftp = "nmh-access-ftp"; char *mhlibdir = NMHLIBDIR; char *mhetcdir = NMHETCDIR; -/* - * nmh not-so constants - */ +/* +** nmh not-so constants +*/ /* - * Default name for the nmh context file. - */ +** Default name for the nmh context file. +*/ char *context = "context"; /* - * Default name of file for public sequences. If NULL, - * then nmh will use private sequences by default, unless the - * user defines a value using the "mh-sequences" profile entry. - */ +** Default name of file for public sequences. If NULL, +** then nmh will use private sequences by default, unless the +** user defines a value using the "mh-sequences" profile entry. +*/ #ifdef NOPUBLICSEQ char *mh_seq = NULL; #else char *mh_seq = ".mh_sequences"; #endif -/* - * nmh globals - */ +/* +** nmh globals +*/ -char ctxflags; /* status of user's context */ -char *invo_name; /* command invocation name */ -char *mypath; /* user's $HOME */ -char *defpath; /* pathname of user's profile */ -char *ctxpath; /* pathname of user's context */ -struct node *m_defs; /* profile/context structure */ +char ctxflags; /* status of user's context */ +char *invo_name; /* command invocation name */ +char *mypath; /* user's $HOME */ +char *defpath; /* pathname of user's profile */ +char *ctxpath; /* pathname of user's context */ +struct node *m_defs; /* profile/context structure */ -/* - * nmh processes - */ +/* +** nmh processes +*/ /* - * This is the program to process MIME composition files - */ -char *buildmimeproc = nmhbindir (/mhbuild); +** This is the program to process MIME composition files +*/ +char *buildmimeproc = NMHBINDIR"/mhbuild"; /* - * This is the program to `cat' a file. - */ +** This is the program to `cat' a file. +*/ char *catproc = "/bin/cat"; /* - * mhl runs this program as a visual-end. - */ - +** mhl runs this program as a visual-end. +*/ char *faceproc = NULL; /* - * This program is usually called directly by users, but it is - * also invoked by the post program to process an "Fcc", or by - * comp/repl/forw/dist to refile a draft message. - */ - -char *fileproc = nmhbindir (/refile); - -/* - * This program is called to incorporate messages into a folder. - */ - -char *incproc = nmhbindir (/inc); +** This program is usually called directly by users, but it is +** also invoked by the spost program to process an "Fcc", or by +** comp/repl/forw/dist to refile a draft message. +*/ +char *fileproc = NMHBINDIR"/refile"; /* - * When a user runs an nmh program for the first time, this program - * is called to create his nmh profile, and mail directory. - */ - -char *installproc = nmhlibdir (/install-mh); +** This program is called to incorporate messages into a folder. +*/ +char *incproc = NMHBINDIR"/inc"; /* - * This is the default program invoked by a "list" response - * at the "What now?" prompt. It is also used by the draft - * folder facility in comp/dist/forw/repl to display the - * draft message. - */ - -char *lproc = DEFAULT_PAGER; +** When a user runs an nmh program for the first time, this program +** is called to create his nmh profile, and mail directory. +*/ +char *installproc = NMHLIBDIR"/install-mh"; /* - * This is the path for the Bell equivalent mail program. - */ - -char *mailproc = nmhbindir (/mhmail); +** This is the default program invoked by a "list" response +** at the "What now?" prompt. It is also used by the draft +** folder facility in comp/dist/forw/repl to display the +** draft message. +*/ +char *lproc = "more"; /* - * This is used by mhl as a front-end. It is also used - * by mhn as the default method of displaying message bodies - * or message parts of type text/plain. - */ - -char *moreproc = DEFAULT_PAGER; - -/* - * This is the program (mhl) used to filter messages. It is - * used by mhn to filter and display the message headers of - * MIME messages. It is used by repl/forw (with -filter) - * to filter the message to which you are replying/forwarding. - * It is used by send/post (with -filter) to filter the message - * for "Bcc:" recipients. - */ - -char *mhlproc = nmhlibdir (/mhl); - -/* - * This is the super handy BBoard reading program, which is - * really just the nmh shell program. - */ - -char *mshproc = nmhbindir (/msh); - -/* - * This program is called to pack a folder. - */ - -char *packproc = nmhbindir (/packf); +** This is the path for the Bell equivalent mail program. +*/ +char *mailproc = NMHBINDIR"/mhmail"; /* - * This is the delivery program called by send to actually - * deliver mail to users. This is the interface to the MTS. - */ - -char *postproc = nmhlibdir (/spost); +** This is used by mhl as a front-end. It is also used +** by mhshow as the default method of displaying message bodies +** or message parts of type text/plain. +*/ +char *moreproc = "more"; /* - * This is program is called by slocal to handle - * the action `folder' or `+'. - */ +** This is the program (mhl) used to filter messages. It is +** used by mhshow to filter and display the message headers of +** MIME messages. It is used by repl/forw (with -filter) +** to filter the message to which you are replying/forwarding. +** It is used by send/spost (with -filter) to filter the message +** for "Bcc:" recipients. +*/ +char *mhlproc = NMHLIBDIR"/mhl"; -char *rcvstoreproc = nmhlibdir (/rcvstore); +/* +** This program is called to pack a folder. +*/ +char *packproc = NMHBINDIR"/packf"; -/* - * This program is called to remove a folder. - */ +/* +** This is the delivery program called by send to actually +** deliver mail to users. This is the interface to the MTS. +*/ +char *postproc = NMHLIBDIR"/spost"; -char *rmfproc = nmhbindir (/rmf); +/* +** This is program is called by slocal to handle +** the action `folder' or `+'. +*/ +char *rcvstoreproc = NMHLIBDIR"/rcvstore"; -/* - * This program is called to remove a message by rmm or refile -nolink. - * It's usually empty, which means to rename the file to a backup name. - */ +/* +** This program is called to remove a folder. +*/ +char *rmfproc = NMHBINDIR"/rmf"; +/* +** This program is called to remove a message by rmm or refile -nolink. +** It's usually empty, which means to rename the file to a backup name. +*/ char *rmmproc = NULL; /* - * This program is usually called by the user's whatnowproc, but it - * may also be called directly to send a message previously composed. +** This program is usually called by the user's whatnowproc, but it +** may also be called directly to send a message previously composed. */ - -char *sendproc = nmhbindir (/send); +char *sendproc = NMHBINDIR"/send"; /* - * This is the path to the program used by "show" - * to display non-text (MIME) messages. - */ - -char *showmimeproc = nmhbindir (/mhshow); +** This is the path to the program used by "show" +** to display non-text (MIME) messages. +*/ +char *showmimeproc = NMHBINDIR"/mhshow"; /* - * This is the default program called by "show" to filter - * and display standard text (non-MIME) messages. It can be - * changed to a pager (such as "more" or "less") if you prefer - * that such message not be filtered in any way. - */ - -char *showproc = nmhlibdir (/mhl); - -/* - * This program is called by vmh as the back-end to the window management - * protocol - */ - -char *vmhproc = nmhbindir (/msh); - -/* - * This program is called after comp, et. al., have built a draft - */ - -char *whatnowproc = nmhbindir (/whatnow); - -/* - * This program is called to list/validate the addresses in a message. - */ - -char *whomproc = nmhbindir (/whom); +** This is the default program called by "show" to filter +** and display standard text (non-MIME) messages. It can be +** changed to a pager (such as "more" or "less") if you prefer +** that such message not be filtered in any way. +*/ +char *showproc = NMHLIBDIR"/mhl"; /* - * This is the editor invoked by the various message - * composition programs. It SHOULD be a full screen - * editor, such as vi or emacs, but any editor will work. - */ - -char *defaulteditor = DEFAULT_EDITOR; +** This program is called after comp, et. al., have built a draft +*/ +char *whatnowproc = NMHBINDIR"/whatnow"; -/* - * This is the global nmh alias file. It is somewhat obsolete, since - * global aliases should be handled by the Mail Transport Agent (MTA). - */ +/* +** This is the sendmail interface to use for sending mail. +*/ +char *sendmail = SENDMAILPATH; -char *AliasFile = nmhetcdir (/MailAliases); +/* +** The prefix that is prepended to the name of message files when they +** are "removed" by rmm. This should typically be `,' or `#'. +*/ +char *backup_prefix = ","; -/* - * File protections - */ +/* +** This is the editor invoked by the various message +** composition programs. It SHOULD be a full screen +** editor, such as vi or emacs, but any editor will work. +*/ +char *defaulteditor = "vi"; /* - * Folders (directories) are created with this protection (mode) - */ +** Name of link to file to which you are replying or which you are +** redistributing. See `$mhaltmsg' in the mh-profile(5) man page. +*/ +char *altmsglink = "@"; -char *foldprot = DEFAULT_FOLDER_MODE; +/* +** This is the global nmh alias file. It is somewhat obsolete, since +** global aliases should be handled by the Mail Transport Agent (MTA). +*/ +char *AliasFile = NMHETCDIR"/MailAliases"; /* - * Every NEW message will be created with this protection. When a - * message is filed it retains its protection, so this only applies - * to messages coming in through inc. - */ +** File protections +*/ -char *msgprot = DEFAULT_MESSAGE_MODE; +/* +** Folders (directories) are created with this protection (mode) +*/ +char *foldprot = "700"; +/* +** Every NEW message will be created with this protection. When a +** message is filed it retains its protection, so this only applies +** to messages coming in through inc. +*/ +char *msgprot = "600";