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

📄 main.c

📁 早期freebsd实现
💻 C
字号:
/* pathalias -- by steve bellovin, as told to peter honeyman */#ifndef lintstatic char	*sccsid = "@(#)main.c	9.8 91/06/11";#endif#ifndef VMS#define	MAIN	main#else#define	MAIN	XXmain#endif#include "def.h"/* exports */char *Cfile;	/* current input file */char *Graphout;	/* file for dumping edges (-g option) */char *Linkout;	/* file for dumping shortest path tree */char **Argv;	/* external copy of argv (for input files) */node *Home;	/* node for local host */int Cflag;	/* print costs (-c option) */int Dflag;	/* penalize routes beyond domains (-D option) */int Iflag;	/* ignore case (-i option) */int Tflag;	/* trace links (-t option) */int Vflag;	/* verbose (-v option) */int Fflag;	/* print cost of first hop */int InetFlag;	/* local host is w/in scope of DNS (-I flag) */int Lineno = 1;	/* line number within current input file */int Argc;	/* external copy of argc (for input files) */extern void die();extern int tracelink();/* imports */extern char *optarg;extern int optind;extern long Lcount, Ncount;extern long allocation();extern void wasted(), mapit(), hashanalyze(), deadlink();extern char *local();extern node *addnode();extern int getopt(), yyparse();extern void printit();#define USAGE "usage: %s [-vciDfI] [-l localname] [-d deadlink] [-t tracelink] [-g edgeout] [-s treeout] [-a avoid] [files ...]\n"MAIN(argc, argv) 	register int argc; 	register char **argv;{	char *locname = 0, *bang;	register int c;	int errflg = 0;	setbuf(stderr, (char *) 0);	(void) allocation();	/* initialize data space monitoring */	Cfile = "[deadlinks]";	/* for tracing dead links */	Argv = argv;	Argc = argc;	while ((c = getopt(argc, argv, "cd:Dfg:iIl:s:t:v")) != EOF)		switch(c) {		case 'c':	/* print cost info */			Cflag++;			break;		case 'd':	/* dead host or link */			if ((bang = index(optarg, '!')) != 0) {				*bang++ = 0;				deadlink(addnode(optarg), addnode(bang));			} else				deadlink(addnode(optarg), (node *) 0);			break;		case 'D':	/* penalize routes beyond domains */			Dflag++;			break;		case 'f':	/* print cost of first hop */			Cflag++;			Fflag++;			break;		case 'g':	/* graph output file */			Graphout = optarg;			break;		case 'i':	/* ignore case */			Iflag++;			break;		case 'I':	/* Internet connected */			InetFlag++;			break;		case 'l':	/* local name */			locname = optarg;			break;		case 's':	/* show shortest path tree */			Linkout = optarg;			break;		case 't':	/* trace this link */			if (tracelink(optarg) < 0) {				fprintf(stderr, "%s: can trace only %d links\n", Argv[0], NTRACE);				exit(ERROR);			}			Tflag = 1;			break;		case 'v':	/* verbose stderr, mixed blessing */			Vflag++;			break;		default:			errflg++;		}	if (errflg) {		fprintf(stderr, USAGE, Argv[0]);		exit(ERROR);	}	argv += optind;		/* kludge for yywrap() */	if (*argv)		freopen(NULL_DEVICE, "r", stdin);	else		Cfile = "[stdin]";	if (!locname) 		locname = local();	if (*locname == 0) {		locname = "lostinspace";		fprintf(stderr, "%s: using \"%s\" for local name\n",				Argv[0], locname);	}	Home = addnode(locname);	/* add home node */	Home->n_cost = 0;		/* doesn't cost to get here */	(void) yyparse();			/* read in link info */	if (Vflag > 1)		hashanalyze();	vprintf(stderr, "%d nodes, %d links, alloc %ldk\n", 				Ncount, Lcount, allocation());	Cfile = "[backlinks]";	/* for tracing back links */	Lineno = 0;	/* compute shortest path tree */	mapit();	vprintf(stderr, "allocation is %ldk after mapping\n", allocation());	/* traverse tree and print paths */	printit();	vprintf(stderr, "allocation is %ldk after printing\n", allocation());	wasted();	/* how much was wasted in memory allocation? */	return OK;}voiddie(s)	char *s;{#ifdef DEBUG	extern int abort();	fprintf(stderr, "%s: %s\n", Argv[0], s);	fflush(stdout);	fflush(stderr);	abort();#else	fprintf(stderr, "%s: %s; notify the authorities\n", Argv[0], s);	exit(SEVERE_ERROR);#endif}

⌨️ 快捷键说明

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