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

📄 mhconfig.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 2 页
字号:
/* mhconfig.c - configure MH *//* cc [-DSYS5] mhconfig.c -o mhconfig */#ifndef	lintstatic char ident[] = "@(#)$Id: mhconfig.c,v 2.71 1993/11/30 22:01:04 jromine Exp jromine $";#endif	/* lint */#include <ctype.h>#include <stdio.h>#ifdef	hpux#define	SYS5#endif#ifdef	SYS5#define	index	strchr#define	rindex	strrchr#endif /* SYS5 */static void insopt(), mkopts();extern	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.8.3"		/* for version: "Maj.min.pat" */#define	MHCENTERFOOT	"MH.6.8"	/* for nroff page footers */#define	MHLEFTFOOT	"[mh.6]"	/* [mh.6]    MH.6.6   page# */#define	MHSLIBVER	"3.2"		/* SunOS4 shared library version */#define	NOTOK	(-1)#define	NULLCP	((char *) 0)#define	SVAL(s)	(s ? s : "")#define	QUOTE	'\\'/*  */static int   smtp = 0;static int   mpop = 0;static int   sedP = 1;static int   filesP = 1;static int   docP = 1;static int   makeP = 1;static char *myname = "mhconfig";static char *config = NULL;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 *copy = "cp";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 *ln = "ln";static char *mailgroup = "off";static char *mailpath = "/usr/spool/mail";static char *maildir = NULL;static char *mailfile = NULL;static char *mancat = "man";static char *mandir = "/usr/man";static char *manuals = "standard";static char *mf = "off";static char *mts = "sendmail";static char *poppath = "/usr/etc";static char *removeit = "mv -f";static char *regtest = "off";static char *oldload = "off";static char *options = NULL;static char *pop = "off";static char *ranlib = "on";static char *sharedlib = "off";static char *signl = "int";static char *slibdir = "/usr/local/lib";static char *slflags = "-pic";static char *sprntf = NULL;/*  */#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,    "zmailer", "ZMAILER SENDMTS", sendmail, NOMF,    "zmailer/smtp", "ZMAILER SENDMTS SMTP", sendmail, NOMF,    NULL, NULL, unknown, NOFLAGS};/* other options which cause sed BEGIN/END configuration changes */static struct copt {    char *c_name;    int   c_value;}	copts[] = {    "APOP", 0,	/* authenticated pop */    "BSD43", 0,	/* sgid ttys */    "BSD44", 0, /* manual headings */    "KPOP", 0, 	/* KERBEROS pop */    "HESIOD", 0,    "MIME", 0,	/* multi-media extensions */    "MPOP", 0,	/* mobile pop */    "MSGID", 0, /* slocal dup surpression */    "NORUSERPASS", 0, /* no ruserpass(3) */    "TMA", 0,	/* trusted mail */    "TTYD", 0,    "UCI", 0,    NULL, 0};/*  */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,			"cp", &copy, 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,			"ln", &ln, 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,			"popdir", &poppath, BD_NIL,			"ranlib", &ranlib, BD_NIL,			"remove", &removeit, BD_NIL,			"regtest", &regtest, BD_NIL,			"sharedlib", &sharedlib, BD_NIL,			"signal", &signl, BD_NIL,			"slflags", &slflags, BD_NIL,			"slibdir", &slibdir, BD_NIL,			"sprintf", &sprntf, 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/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\" in the top directory 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;    struct copt *op;    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%%@(MHCONFIGFILE)%%%s%%g\n", SVAL(config));    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%%@(MHPOPDPATH)%%%s%%g\n", SVAL (poppath));    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);    fprintf (fp, "s%%@(MHCATMAN)%%%s%%g\n",	strcmp(mancat, "cat") == 0 ? "| nroff -man" : "");    if (strcmp (manuals, "standard") == 0 || strcmp (manuals, "gen") == 0)	for (i = 1; i <= 8; i++) {	    fprintf (fp, "s%%@(MHMANDIR%d)%%%s%d%%g\n", i, mancat, i);	    fprintf (fp, "s%%@(MHMANEXT%d)%%%d%%g\n", i, i);	}    else	for (i = 1; i <= 8; i++) {	    fprintf (fp, "s%%@(MHMANDIR%d)%%%s%c%%g\n", i, mancat,		    strcmp (manuals, "new") == 0 ? 'n'		    : strcmp (manuals, "old") == 0 ? 'o'		    : strcmp (manuals, "bsd44") == 0 ? i + '0'		    : 'l');	    fprintf (fp, "s%%@(MHMANEXT%d)%%%c%%g\n", i,		    strcmp (manuals, "new") == 0 ? 'n'		    : strcmp (manuals, "old") == 0 ? 'o'		    : strcmp (manuals, "bsd44") == 0 ? '0'		    : 'l');	}/*  */    if (strcmp (regtest, "on") == 0)	fprintf (fp, "s%%@(MHHOSTVER)%%%s%%g\n", "-n");    else	fprintf (fp, "s%%@(MHHOSTVER)%%%s%%g\n", "");    if (strcmp (manuals, "gen") == 0 || strcmp (manuals, "none") == 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%%@(CP)%%%s%%g\n", SVAL (copy));    fprintf (fp, "s%%@(LN)%%%s%%g\n", SVAL (ln));    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 (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, "off")) {	/* if not off */	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);	fprintf (fp, "s%%@(SLIBVER)%%%s%%g\n", MHSLIBVER);	fprintf (fp, "s%%@(SLFLAGS)%%%s%%g\n", SVAL(slflags));	if (strcmp (sharedlib, "secure") == 0)	    fprintf (fp, "s%%@(SLDFLAG)%%-L%s%%g\n",slibdir);	else	    fprintf (fp, "s%%@(SLDFLAG)%%%%g\n");    }    else {	fprintf (fp, "/^@BEGIN: STDLIB$/d\n/^@END: STDLIB$/d\n");	fprintf (fp, "/^@BEGIN: SHAREDLIB$/,/^@END: SHAREDLIB$/d\n");    }    if (strcmp (sharedlib, "sun4") == 0 || strcmp (sharedlib, "on") == 0)	fprintf (fp, "/^@BEGIN: SUN4SHLIB$/d\n/^@END: SUN4SHLIB$/d\n");    else	fprintf (fp, "/^@BEGIN: SUN4SHLIB$/,/^@END: SUN4SHLIB$/d\n");    if (strcmp (sharedlib, "sys5") == 0)	fprintf (fp, "/^@BEGIN: SYS5SHLIB$/d\n/^@END: SYS5SHLIB$/d\n");    else	fprintf (fp, "/^@BEGIN: SYS5SHLIB$/,/^@END: SYS5SHLIB$/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 (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 (bboards, "pop") == 0)	fprintf (fp, "/^@BEGIN: BPOP$/d\n/^@END: BPOP$/d\n");    else	fprintf (fp, "/^@BEGIN: BPOP$/,/^@END: BPOP$/d\n");    if (strcmp (bboards, "nntp") == 0)	fprintf (fp, "/^@BEGIN: NNTP$/d\n/^@END: NNTP$/d\n");    else

⌨️ 快捷键说明

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