projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
merge pick and scan manpage
[mmh]
/
sbr
/
readconfig.c
diff --git
a/sbr/readconfig.c
b/sbr/readconfig.c
index
daa2509
..
91d2b4e
100644
(file)
--- a/
sbr/readconfig.c
+++ b/
sbr/readconfig.c
@@
-7,6
+7,7
@@
** complete copyright information.
*/
** complete copyright information.
*/
+#include <sysexits.h>
#include <h/mh.h>
#include <h/utils.h>
#include <h/mh.h>
#include <h/utils.h>
@@
-17,22
+18,14
@@
struct procstr {
static struct procstr procs[] = {
{ "attachment-header", &attach_hdr },
static struct procstr procs[] = {
{ "attachment-header", &attach_hdr },
+ { "sign-header", &sign_hdr },
+ { "enc-header", &enc_hdr },
{ "context", &context },
{ "mh-sequences", &mh_seq },
{ "context", &context },
{ "mh-sequences", &mh_seq },
- { "backup-prefix", &backup_prefix },
{ "draft-folder", &draftfolder },
{ "draft-folder", &draftfolder },
- { "altmsg-link", &altmsglink },
- { "fileproc", &fileproc },
- { "incproc", &incproc },
- { "lproc", &lproc },
- { "mailproc", &mailproc },
- { "mhlproc", &mhlproc },
- { "postproc", &postproc },
- { "rmmproc", &rmmproc },
+ { "listproc", &listproc },
{ "sendmail", &sendmail },
{ "sendmail", &sendmail },
- { "sendproc", &sendproc },
- { "showmimeproc", &showmimeproc },
- { "showproc", &showproc },
+ { "trash-folder", &trashfolder },
{ "whatnowproc", &whatnowproc },
{ NULL, NULL }
};
{ "whatnowproc", &whatnowproc },
{ NULL, NULL }
};
@@
-43,65
+36,58
@@
static struct node **opp = NULL;
void
readconfig(struct node **npp, FILE *ib, char *file, int ctx)
{
void
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;
+ enum state state;
+ struct field f = {{0}};
+ struct node *np;
+ 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));
+ for (state = FLD2;;) {
+ switch (state = m_getfld2(state, &f, ib)) {
+ case LENERR2:
+ state = FLD2;
+ /* FALL */
+ case FLD2:
+ np = mh_xcalloc(1, sizeof(*np));
*npp = np;
*(npp = &np->n_next) = NULL;
*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_name = mh_xstrdup(f.name);
+ np->n_field = trimcpy(f.value);
np->n_context = ctx;
/*
** Now scan the list of `procs' and link in
** the field value to the global variable.
*/
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++)
+ for (ps = procs; ps->procname; ps++) {
if (mh_strcasecmp(np->n_name,
ps->procname) == 0) {
*ps->procnaddr = np->n_field;
break;
}
if (mh_strcasecmp(np->n_name,
ps->procname) == 0) {
*ps->procnaddr = np->n_field;
break;
}
- if (state == FLDEOF)
- break;
+ }
continue;
continue;
-
- case BODY:
- case BODYEOF:
- adios(NULL, "no blank lines are permitted in %s",
+ case FMTERR2:
+ advise(NULL, "%s is poorly formatted", file);
+ state = FLD2;
+ continue;
+ case BODY2:
+ adios(EX_CONFIG, NULL, "no blank lines are permitted in %s",
file);
file);
- case FILEEOF:
+ case FILEEOF2:
+ break;
+
+ case IOERR2:
+ adios(EX_IOERR, NULL, "m_getfld2", "some error happened");
break;
default:
break;
default:
- adios(NULL, "%s is poorly formatted", file);
+ adios(EX_CONFIG, NULL, "%s is poorly formatted", file);
}
break;
}
}
break;
}