-
/*
- * readconfig.c -- base routine to read nmh configuration files
- * -- such as nmh profile, context file, or mhn.defaults.
- *
- * 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.
- */
+** readconfig.c -- base routine to read nmh configuration files
+** -- such as nmh profile, context file, or mhn.defaults.
+**
+** 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 <h/mh.h>
#include <h/utils.h>
struct procstr {
- char *procname;
- char **procnaddr;
+ char *procname;
+ char **procnaddr;
};
static struct procstr procs[] = {
- { "context", &context },
- { "mh-sequences", &mh_seq },
- { "backup-prefix", &backup_prefix },
- { "altmsg-link", &altmsglink },
- { "buildmimeproc", &buildmimeproc },
- { "faceproc", &faceproc },
- { "fileproc", &fileproc },
- { "incproc", &incproc },
- { "installproc", &installproc },
- { "lproc", &lproc },
- { "mailproc", &mailproc },
- { "mhlproc", &mhlproc },
- { "moreproc", &moreproc },
- { "packproc", &packproc },
- { "postproc", &postproc },
- { "rmfproc", &rmfproc },
- { "rmmproc", &rmmproc },
- { "sendmail", &sendmail },
- { "sendproc", &sendproc },
- { "showmimeproc", &showmimeproc },
- { "showproc", &showproc },
- { "whatnowproc", &whatnowproc },
- { "whomproc", &whomproc },
- { NULL, NULL }
+ { "attachment-header", &attach_hdr },
+ { "context", &context },
+ { "mh-sequences", &mh_seq },
+ { "draft-folder", &draftfolder },
+ { "listproc", &listproc },
+ { "sendmail", &sendmail },
+ { "trash-folder", &trashfolder },
+ { "whatnowproc", &whatnowproc },
+ { NULL, NULL }
};
static struct node **opp = NULL;
void
-readconfig (struct node **npp, FILE *ib, char *file, int ctx)
+readconfig(struct node **npp, FILE *ib, char *file, int ctx)
{
- register int state;
- register char *cp;
- char name[NAMESZ], field[BUFSIZ];
- register struct node *np;
- register struct procstr *ps;
+ register int state;
+ register char *cp;
+ char name[NAMESZ], field[BUFSIZ];
+ register struct node *np;
+ register struct procstr *ps;
- if (npp == NULL && (npp = opp) == NULL) {
- admonish (NULL, "bug: readconfig called but pump not primed");
- return;
- }
+ if (npp == NULL && (npp = opp) == NULL) {
+ admonish(NULL, "bug: readconfig called but pump not primed");
+ return;
+ }
- for (state = FLD;;) {
- switch (state = m_getfld (state, name, field, sizeof(field), ib)) {
- case FLD:
- case FLDPLUS:
- case FLDEOF:
- np = (struct node *) mh_xmalloc (sizeof(*np));
- *npp = np;
- *(npp = &np->n_next) = NULL;
- np->n_name = getcpy (name);
- if (state == FLDPLUS) {
- cp = getcpy (field);
- while (state == FLDPLUS) {
- state = m_getfld (state, name, field, sizeof(field), ib);
- cp = add (field, cp);
- }
- np->n_field = trimcpy (cp);
- free (cp);
- } else {
- np->n_field = trimcpy (field);
- }
- np->n_context = ctx;
+ for (state = FLD;;) {
+ switch (state = m_getfld(state, name, field, sizeof(field),
+ ib)) {
+ case FLD:
+ case FLDPLUS:
+ case FLDEOF:
+ np = (struct node *) mh_xmalloc(sizeof(*np));
+ *npp = np;
+ *(npp = &np->n_next) = NULL;
+ np->n_name = getcpy(name);
+ if (state == FLDPLUS) {
+ cp = getcpy(field);
+ while (state == FLDPLUS) {
+ state = m_getfld(state, name, field,
+ sizeof(field), ib);
+ cp = add(field, cp);
+ }
+ np->n_field = trimcpy(cp);
+ free(cp);
+ } else {
+ np->n_field = trimcpy(field);
+ }
+ np->n_context = ctx;
- /*
- * Now scan the list of `procs' and link in the
- * field value to the global variable.
- */
- for (ps = procs; ps->procname; ps++)
- if (strcmp (np->n_name, ps->procname) == 0) {
- *ps->procnaddr = np->n_field;
- break;
- }
- if (state == FLDEOF)
- break;
- continue;
+ /*
+ ** Now scan the list of `procs' and link in
+ ** the field value to the global variable.
+ */
+ for (ps = procs; ps->procname; ps++)
+ if (mh_strcasecmp(np->n_name,
+ ps->procname) == 0) {
+ *ps->procnaddr = np->n_field;
+ break;
+ }
+ if (state == FLDEOF)
+ break;
+ continue;
- case BODY:
- case BODYEOF:
- adios (NULL, "no blank lines are permitted in %s", file);
+ case BODY:
+ case BODYEOF:
+ adios(NULL, "no blank lines are permitted in %s",
+ file);
- case FILEEOF:
- break;
+ case FILEEOF:
+ break;
- default:
- adios (NULL, "%s is poorly formatted", file);
+ default:
+ adios(NULL, "%s is poorly formatted", file);
+ }
+ break;
}
- break;
- }
- opp = npp;
+ opp = npp;
}