📄 m_readefs.c
字号:
/* m_readefs.c - read a profile/context file */#include "../h/mh.h"#include <stdio.h>static struct procs { char *procname; char **procnaddr;} procs [] = { { "context", &context }, { "mh-sequences", &mh_seq }, { "faceproc", &faceproc }, { "fileproc", &fileproc }, { "incproc", &incproc }, { "installproc",&installproc }, { "lproc", &lproc }, { "mailproc", &mailproc }, { "mhlproc", &mhlproc }, { "moreproc", &moreproc }, { "mshproc", &mshproc }, { "packproc", &packproc }, { "postproc", &postproc }, { "rmfproc", &rmfproc }, { "rmmproc", &rmmproc }, { "sendproc", &sendproc }, { "showproc", &showproc }, { "slocalproc", &slocalproc }, { "vmhproc", &vmhproc }, { "whatnowproc", &whatnowproc }, { "whomproc", &whomproc }, { NULL, NULL }};static struct node **opp = NULL;void m_readefs (npp, ib, file, ctx)register struct node **npp;register FILE *ib;register char *file;register int ctx;{ register int state; register char *cp; char name[NAMESZ], field[BUFSIZ]; register struct node *np; register struct procs *ps; if (npp == NULL && (npp = opp) == NULL) { admonish (NULLCP, "bug: m_readefs 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 *) malloc (sizeof *np); if (np == NULL) adios (NULLCP, "unable to allocate profile storage"); *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 (ps = procs; ps -> procname; ps++) if (strcmp (np -> n_name, ps -> procname) == 0) { *ps -> procnaddr = np -> n_field; break; } if (state == FLDEOF) break; continue; case BODY: case BODYEOF: adios (NULLCP, "no blank lines are permitted in %s", file); case FILEEOF: break; default: adios (NULLCP, "%s is poorly formatted", file); } break; } opp = npp;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -