⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_readefs.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 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 + -