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

📄 mhconfig.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
📖 第 1 页 / 共 2 页
字号:
/* mhconfig.c - configure MH *//* cc [-DSYS5] mhconfig.c -o mhconfig */#ifndef	lintstatic char ident[] = "@(#)$Id: mhconfig.c,v 1.2 90/11/25 18:57:25 sharpe Exp Locker: sharpe $";#endif	lint#include <ctype.h>#include <stdio.h>#ifdef	SYS5#define	index	strchr#define	rindex	strrchr#endif	SYS5extern	char *strcpy(), *malloc(), *index(), *rindex();#ifdef	notdefextern	char *sprintf();	/* rely on stdio.h to declare this */#endif#define	BANNER	"This is %s, for generic UNIX (MH.6 configuration program)\n\n"#define	SED		"config.sed"#define	SEDOC		"doc/config.sed"#define	MAKE		"../%s/Makefile"#define	WARNING	"This file is automatically generated.  Do not edit!"#define	MHRELEASE	"6.7"		/* for version: "Maj.min.pat" */#define	MHCENTERFOOT	"MH.6.7"	/* for nroff page footers */#define	MHLEFTFOOT	"[mh.6]"	/* [mh.6]    MH.6.6   page# */#define	NOTOK	(-1)#define	NULLCP	((char *) 0)#define	SVAL(s)	(s ? s : "")#define	QUOTE	'\\'/*  */static int   bsd43 = 0;static int   smtp = 0;static int   uci = 0;static int   sedP = 1;static int   filesP = 1;static int   docP = 1;static int   makeP = 1;static char *myname = "mhconfig";static char *myopts = NULL;static char *binpath = "/usr/local";static char *bbhome = "/usr/spool/bboards";static char *bboards = "off";static char *bbdelivery = "off";static char *ccoptions = NULL;static char *chownpath = "/etc/chown";static char *compiler = "/bin/cc";static char *curses = "-lcurses -ltermlib";static char *debug = "off";static char *editor = "prompter";static char *etcpath = "/usr/local/lib/mh";static char *ldoptions = NULL;static char *ldoptlibs = NULL;static char *lex = "lex -nt";static char *mailgroup = NULL;static char *mailpath = "/usr/spool/mail";static char *maildir = NULL;static char *mailfile = NULL;static char *mandir = "/usr/man";static char *manuals = "standard";static char *mf = "off";static char *mts = "sendmail";static char *removeit = "mv -f";static char *oldload = "off";static char *options = NULL;static char *pop = "off";static char *x400 = "off";static char *ranlib = "on";static char *sharedlib = "off";static char *slibdir = "/usr/local/lib";static char *sprntf = NULL;static char *tma = "off";#define	unknown		0#define	mmdf		1#define	mmdf2		2#define	mh		3#define	sendmail	4static int mtsnum = unknown;static struct mtsopt {    char  *mtskey;    char  *optval;    int	   code;    int    mtsflags;#define	NOFLAGS	0x00#define	DOSMTP	0x01#define	NOMF	0x02} mtsopts[] = {    "mmdf", "MMDFMTS MMDFI", mmdf, NOFLAGS,    "mmdf/smtp", "SENDMTS SMTP", mmdf, DOSMTP,    "mmdf2", "MMDFMTS MMDFII", mmdf2, NOFLAGS,    "mmdf2/smtp", "SENDMTS MMDFII SMTP", mmdf2, DOSMTP,    "mh", "MHMTS", mh, NOFLAGS,    "sendmail", "SENDMTS", sendmail, NOMF,    "sendmail/smtp", "SENDMTS SMTP", sendmail, NOMF,    NULL, NULL, unknown, NOFLAGS};static struct bind {    char   *keyword;    char  **value;    int     flags;#define	BD_NIL	0x00#define	BD_ADD	0x01}                   binds[] = {                        "bin", &binpath, BD_NIL,                        "bbhome", &bbhome, BD_NIL,                        "bboards", &bboards, BD_NIL,                        "bbdelivery", &bbdelivery, BD_NIL,			"ccoptions", &ccoptions, BD_ADD,			"chown", &chownpath, BD_NIL,			"cc", &compiler, BD_NIL,			"curses", &curses, BD_NIL,			"debug", &debug, BD_NIL,			"editor", &editor, BD_NIL,                        "etc", &etcpath, BD_NIL,			"ldoptions", &ldoptions, BD_ADD,			"ldoptlibs", &ldoptlibs, BD_ADD,			"lex", &lex, BD_NIL,                        "mail", &mailpath, BD_NIL,			"mailgroup", &mailgroup, BD_NIL,                        "mandir", &mandir, BD_NIL,                        "manuals", &manuals, BD_NIL,			"mf", &mf, BD_NIL,                        "mts", &mts, BD_NIL,			"oldload", &oldload, BD_NIL,                        "options", &options, BD_ADD,                        "pop", &pop, BD_NIL,                        "x400", &x400, BD_NIL,			"ranlib", &ranlib, BD_NIL,			"remove", &removeit, BD_NIL,			"sharedlib", &sharedlib, BD_NIL,			"slibdir", &slibdir, BD_NIL,			"sprintf", &sprntf, BD_NIL,			"tma", &tma, BD_NIL,                        NULL};char   *files[] = {    "../support/bboards/bboards.daily",    "../support/bboards/bboards.weekly",    "../support/bboards/crontab",    "../support/bboards/MakeBBoards",    "../config/config.c",    "../zotnet/mts/mts.c",    "../zotnet/mts/mtstailor",    "../support/general/MailAliases",    "../mts/sendmail/bboardsMH.m4",    "../mts/sendmail/popMH.m4",    NULL};static struct pair {    char   *infile;    char   *outfile;}                  makefiles[] = {			"makefiles/MH-Makefile", ".",			"makefiles/config","config",			"makefiles/dist","dist",			"makefiles/doc","doc",			"makefiles/mtsM","mts",			    "makefiles/mts/mh","mts/mh",			    "makefiles/mts/mmdf","mts/mmdf",			    "makefiles/mts/sendmail","mts/sendmail",			    "makefiles/mts/x400s","mts/x400s",			"makefiles/papers","papers",			"makefiles/sbr","sbr",			"makefiles/supportM","support",			    "makefiles/support/bboards","support/bboards",			    "makefiles/support/general","support/general",			    "makefiles/support/pop","support/pop",			"makefiles/uip","uip",			"makefiles/zotnetM","zotnet",			    "makefiles/zotnet/bboards","zotnet/bboards",			    "makefiles/zotnet/mf","zotnet/mf",			    "makefiles/zotnet/mts","zotnet/mts",			    "makefiles/zotnet/tws","zotnet/tws",			NULL};static do_sed(), do_sedfile(), do_files(), do_doc(), do_make();static shell(), arginit(), add_option(), trim();static char   *stradd (), *strdup (), *tail ();long    time ();/*  *//* ARGSUSED */main (argc, argv, envp)int     argc;char  **argv,      **envp;{    arginit (argv);    if (sedP)	do_sed ();    if (filesP)	do_files ();    if (docP)	do_doc ();    if (makeP)	do_make ();#ifdef	notdef    printf ("Don't forget to edit \"config/mtstailor\"\n");#endif    if (filesP || makeP)	printf ("Don't forget to run \"make clean\" before compiling\n");    exit (0);}/*  */static  do_sed () {    if (docP != 2)	do_sedfile (SED, 0);    do_sedfile (SEDOC, smtp);}static do_alldoc (fp)FILE *fp;{    fprintf (fp, "%s\n%s\n%s\n%s\n", 	/* turn @BEGIN: XX into #ifdef XX */	"s!^@BEGIN: \\(.*\\)$!.br\\",	/* for MH wizard manual set */	".ti 0i\\",	"#ifdef \\1\\",	".br!"    );    fprintf (fp, "%s\n%s\n%s\n%s\n", 	"s!^@END: \\(.*\\)$!.br\\",	".ti 0i\\",	"#endif \\1\\",	".br!"    );}static do_sedfile (sed, flag)char	*sed;int	flag;{    int     i;    FILE * fp;    if ((fp = fopen (sed, "w")) == NULL)	adios (sed, "unable to write");    printf ("generating %s\n", sed);    if (docP == 2) {	printf ("...using special all-doc format.\n");	printf ("Be sure to reconfigure before compiling.\n");	do_alldoc(fp);	/* hack up doc/config.sed */    }    fprintf (fp, "s%%@(MHWARNING)%%%s%%g\n", WARNING);    fprintf (fp, "s%%@(MHRELEASE)%%%s%%g\n", MHRELEASE);    fprintf (fp, "s%%@(MHCENTERFOOT)%%%s%%g\n", MHCENTERFOOT);    fprintf (fp, "s%%@(MHLEFTFOOT)%%%s%%g\n", MHLEFTFOOT);    fprintf (fp, "s%%@(MHBINPATH)%%%s%%g\n", SVAL (binpath));    fprintf (fp, "s%%@(MHETCPATH)%%%s%%g\n", SVAL (etcpath));    fprintf (fp, "s%%@(MHCHOWNPATH)%%%s%%g\n", SVAL (chownpath));    fprintf (fp, "s%%@(MHDROPATH)%%%s%%g\n", SVAL (maildir));    fprintf (fp, "s%%@(MHDROPFIL)%%%s%%g\n", SVAL (mailfile));    if (maildir)	fprintf (fp, "s%%@(MHDROPLOC)%%%s/$USER%%g\n", SVAL (maildir));    else	fprintf (fp, "s%%@(MHDROPLOC)%%$HOME/%s%%g\n", SVAL (mailfile));    fprintf (fp, "s%%@(MHDROPHAK)%%%s%%g\n",/* HACK */	maildir ? maildir : "/usr/spool/mail");    fprintf (fp, "s%%@(MHMANDIR)%%%s%%g\n", mandir);    if (strcmp (manuals, "standard") == 0 || strcmp (manuals, "gen") == 0)	for (i = 1; i <= 8; i++) {	    fprintf (fp, "s%%@(MHMANDIR%d)%%man%d%%g\n", i, i);	    fprintf (fp, "s%%@(MHMANEXT%d)%%%d%%g\n", i, i);	}    else	for (i = 1; i <= 8; i++) {	    fprintf (fp, "s%%@(MHMANDIR%d)%%man%c%%g\n", i,		    strcmp (manuals, "new") == 0 ? 'n'		    : strcmp (manuals, "old") == 0 ? 'o'		    : 'l');	    fprintf (fp, "s%%@(MHMANEXT%d)%%%c%%g\n", i,		    strcmp (manuals, "new") == 0 ? 'n'		    : strcmp (manuals, "old") == 0 ? 'o'		    : 'l');	}    if (strcmp (manuals, "gen") == 0)	fprintf (fp, "s%%@(MHMANGEN)%%%s%%g\n", "#"); /* comment char */    else	fprintf (fp, "s%%@(MHMANGEN)%%%s%%g\n", "");    fprintf (fp, "s%%@(MHEDITOR)%%%s%%g\n", SVAL (editor));    fprintf (fp, "s%%@(MHCONFIG)%%%s%%g\n", SVAL (myopts));    fprintf (fp, "s%%@(MHCOMPILER)%%%s%%g\n", SVAL (compiler));    fprintf (fp, "s%%@(LEX)%%%s%%g\n", SVAL (lex));    if (ccoptions)	fprintf (fp, "s%%@(MHOPTIONS)%%%s %s%%g\n",		SVAL (options), SVAL (ccoptions));    else	fprintf (fp, "s%%@(MHOPTIONS)%%%s %s%%g\n",		SVAL (options), "-O");    fprintf (fp, "s%%@(LDOPTIONS)%%%s%%g\n", SVAL (ldoptions));    fprintf (fp, "s%%@(LDOPTLIB)%%%s%%g\n", SVAL (ldoptlibs));    fprintf (fp, "s%%@(LDCURSES)%%%s%%g\n", SVAL (curses));    if (strcmp (bboards, "off") == 0)	fprintf (fp, "/^@BEGIN: BBOARDS$/,/^@END: BBOARDS$/d\n");    else	fprintf (fp, "/^@BEGIN: BBOARDS$/d\n/^@END: BBOARDS$/d\n");    fprintf (fp, "s%%@(BBHOME)%%%s%%g\n", SVAL (bbhome));    if (strcmp (bbdelivery, "off") == 0)	fprintf (fp, "/^@BEGIN: BBSERVER$/,/^@END: BBSERVER$/d\n");    else	fprintf (fp, "/^@BEGIN: BBSERVER$/d\n/^@END: BBSERVER$/d\n");    if (strcmp (debug, "on") == 0) {	fprintf (fp, "/^@BEGIN: DEBUG$/d\n/^@END: DEBUG$/d\n");	fprintf (fp, "/^@BEGIN: OPTIM$/,/^@END: OPTIM$/d\n");    }    else {	fprintf (fp, "/^@BEGIN: DEBUG$/,/^@END: DEBUG$/d\n");	fprintf (fp, "/^@BEGIN: OPTIM$/d\n/^@END: OPTIM$/d\n");    }    if (mailgroup && strcmp (mailgroup, "off")) { /* for SYS5 sgid-inc */	fprintf (fp, "/^@BEGIN: MAILGROUP$/d\n/^@END: MAILGROUP$/d\n");	fprintf (fp, "s%%@(MAILGROUP)%%%s%%g\n", SVAL (mailgroup));    }    else	fprintf (fp, "/^@BEGIN: MAILGROUP$/,/^@END: MAILGROUP$/d\n");    if (strcmp (oldload, "on") == 0)	fprintf (fp, "/^@BEGIN: OLDLOAD$/d\n/^@END: OLDLOAD$/d\n");    else	fprintf (fp, "/^@BEGIN: OLDLOAD$/,/^@END: OLDLOAD$/d\n");    if (strcmp (oldload, "off") == 0)	fprintf (fp, "/^@BEGIN: NEWLOAD$/d\n/^@END: NEWLOAD$/d\n");    else	fprintf (fp, "/^@BEGIN: NEWLOAD$/,/^@END: NEWLOAD$/d\n");    if (strcmp (ranlib, "on") == 0) {	fprintf (fp, "/^@BEGIN: RANLIB$/d\n/^@END: RANLIB$/d\n");	fprintf (fp, "/^@BEGIN: LORDER$/,/^@END: LORDER$/d\n");    }    else {	fprintf (fp, "/^@BEGIN: LORDER$/d\n/^@END: LORDER$/d\n");	fprintf (fp, "/^@BEGIN: RANLIB$/,/^@END: RANLIB$/d\n");    }    if (strcmp (sharedlib, "on") == 0) {	fprintf (fp, "/^@BEGIN: SHAREDLIB$/d\n/^@END: SHAREDLIB$/d\n");	fprintf (fp, "/^@BEGIN: STDLIB$/,/^@END: STDLIB$/d\n");	fprintf (fp, "s%%@(SLIBDIR)%%%s%%g\n",slibdir);    }    else {	fprintf (fp, "/^@BEGIN: STDLIB$/d\n/^@END: STDLIB$/d\n");	fprintf (fp, "/^@BEGIN: SHAREDLIB$/,/^@END: SHAREDLIB$/d\n");    }    if (strcmp (tma, "on") == 0)	fprintf (fp, "/^@BEGIN: TMA$/d\n/^@END: TMA$/d\n");    else	fprintf (fp, "/^@BEGIN: TMA$/,/^@END: TMA$/d\n");    if (flag || ((mtsnum == mmdf || mtsnum == mmdf2) && !smtp)) {	fprintf (fp, "/^@BEGIN: MMDFMTS$/d\n/^@END: MMDFMTS$/d\n");	if (mtsnum == mmdf)	    fprintf (fp, "/^@BEGIN: MMDFIMTS$/d\n/^@END: MMDFIMTS$/d\n");	else	    fprintf (fp, "/^@BEGIN: MMDFIMTS$/,/^@END: MMDFIMTS$/d\n");	if (mtsnum == mmdf2)	    fprintf (fp, "/^@BEGIN: MMDFIIMTS$/d\n/^@END: MMDFIIMTS$/d\n");	else	    fprintf (fp, "/^@BEGIN: MMDFIIMTS$/,/^@END: MMDFIIMTS$/d\n");    }    else {	fprintf (fp, "/^@BEGIN: MMDFMTS$/,/^@END: MMDFMTS$/d\n");	fprintf (fp, "/^@BEGIN: MMDFIMTS$/,/^@END: MMDFIMTS$/d\n");	fprintf (fp, "/^@BEGIN: MMDFIIMTS$/,/^@END: MMDFIIMTS$/d\n");    }    if (mtsnum == mh)	fprintf (fp, "/^@BEGIN: MHMTS$/d\n/^@END: MHMTS$/d\n");    else	fprintf (fp, "/^@BEGIN: MHMTS$/,/^@END: MHMTS$/d\n");    if (!flag && (mtsnum == sendmail || smtp))	fprintf (fp, "/^@BEGIN: SENDMTS$/d\n/^@END: SENDMTS$/d\n");    else	fprintf (fp, "/^@BEGIN: SENDMTS$/,/^@END: SENDMTS$/d\n");    switch (mtsnum) {	case mh:	case sendmail:	case mmdf:	    fprintf (fp, "/^@BEGIN: SENDMTSHACK$/d\n/^@END: SENDMTSHACK$/d\n");	    break;	default:	    fprintf (fp, "/^@BEGIN: SENDMTSHACK$/,/^@END: SENDMTSHACK$/d\n");	    break;    }    /* special hack for support/pop/popser.c */    fprintf (fp, "s%%@(POPUUMBOX)%%%s%%g\n",	    mtsnum == sendmail ? "-DPOPUUMBOX" : "");    if (bsd43)		/* for sgid(tty)-rcvtty */	fprintf (fp, "/^@BEGIN: BSD43$/d\n/^@END: BSD43$/d\n");    else	fprintf (fp, "/^@BEGIN: BSD43$/,/^@END: BSD43$/d\n");    if (uci)	fprintf (fp, "/^@BEGIN: UCI$/d\n/^@END: UCI$/d\n");    else	fprintf (fp, "/^@BEGIN: UCI$/,/^@END: UCI$/d\n");    if (smtp)	fprintf (fp, "/^@BEGIN: SMTP$/d\n/^@END: SMTP$/d\n");    else	fprintf (fp, "/^@BEGIN: SMTP$/,/^@END: SMTP$/d\n");    if (strcmp (pop, "on") == 0)	fprintf (fp, "/^@BEGIN: POP$/d\n/^@END: POP$/d\n");    else	fprintf (fp, "/^@BEGIN: POP$/,/^@END: POP$/d\n");    if (strcmp (x400, "on") == 0)	fprintf (fp, "/^@BEGIN: X400$/d\n/^@END: X400$/d\n");    else	fprintf (fp, "/^@BEGIN: X400$/,/^@END: X400$/d\n");    if (strcmp (bboards, "pop") == 0)	fprintf (fp, "/^@BEGIN: BPOP$/d\n/^@END: BPOP$/d\n");    else	fprintf (fp, "/^@BEGIN: BPOP$/,/^@END: BPOP$/d\n");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -