|
|
1.1 ! root 1: /* pathalias -- by steve bellovin, as told to peter honeyman */ ! 2: #ifndef lint ! 3: static char *sccsid = "@(#)main.c 8.1 (down!honey) 86/01/19"; ! 4: #endif ! 5: ! 6: #define MAIN /* for sccsid in header files */ ! 7: ! 8: #include "def.h" ! 9: ! 10: #define USAGE "usage: %s [-vci] [-l localname] [-d deadlink] [-t tracelink] [-g file] [-s file]\n" ! 11: ! 12: main(argc, argv) ! 13: int argc; ! 14: char *argv[]; ! 15: { ! 16: char *locname = 0; ! 17: int c, errflg = 0; ! 18: ! 19: ProgName = argv[0]; ! 20: (void) allocation(); /* initialize data space monitoring */ ! 21: Cfile = "[deadlinks]"; /* for tracing dead links */ ! 22: while ((c = getopt(argc, argv, "cd:g:il:s:t:v")) != EOF) ! 23: switch(c) { ! 24: case 'c': /* print cost info */ ! 25: Cflag++; ! 26: break; ! 27: case 'd': /* dead host or link */ ! 28: deadlink(optarg); ! 29: break; ! 30: case 'g': /* graph output file */ ! 31: Graphout = optarg; ! 32: break; ! 33: case 'i': /* ignore case */ ! 34: Iflag++; ! 35: break; ! 36: case 'l': /* local name */ ! 37: locname = optarg; ! 38: break; ! 39: case 's': /* show shortest path tree */ ! 40: Linkout = optarg; ! 41: break; ! 42: case 't': /* trace this link */ ! 43: if (tracelink(optarg) < 0) { ! 44: fprintf(stderr, "%s: can trace only %d links\n", ProgName, NTRACE); ! 45: exit(1); ! 46: } ! 47: Tflag = 1; ! 48: break; ! 49: case 'v': /* verbose stderr, mixed blessing */ ! 50: Vflag++; ! 51: break; ! 52: default: ! 53: errflg++; ! 54: } ! 55: ! 56: if (errflg) { ! 57: fprintf(stderr, USAGE, ProgName); ! 58: exit(1); ! 59: } ! 60: argv += optind; /* kludge for yywrap() */ ! 61: ! 62: if (*argv) { ! 63: Ifiles = argv; ! 64: freopen("/dev/null", "r", stdin); ! 65: } ! 66: ! 67: if (!locname) ! 68: locname = local(); ! 69: if (*locname == 0) { ! 70: locname = "lostinspace"; ! 71: fprintf(stderr, "%s: using \"%s\" for local name\n", ! 72: ProgName, locname); ! 73: } ! 74: ! 75: Home = addnode(locname); /* add home node */ ! 76: Home->n_cost = 0; /* doesn't cost to get here */ ! 77: ! 78: yyparse(); /* read in link info */ ! 79: ! 80: if (Vflag > 1) ! 81: hashanalyze(); ! 82: vprintf(stderr, "%d vertices, %d edges\n", Ncount, Lcount); ! 83: vprintf(stderr, "allocation is %ldk after parsing\n", allocation()); ! 84: ! 85: Cfile = "[backlinks]"; /* for tracing back links */ ! 86: Lineno = 0; ! 87: ! 88: mapit(); /* compute shortest path tree */ ! 89: vprintf(stderr, "allocation is %ldk after mapping\n", allocation()); ! 90: ! 91: printit(); /* traverse tree and print paths */ ! 92: vprintf(stderr, "allocation is %ldk after printing\n", allocation()); ! 93: ! 94: exit(0); ! 95: } ! 96: ! 97: badmagic(n) ! 98: { ! 99: if (n) { ! 100: fprintf(stderr, "%s: cannot recover!\n", ProgName); ! 101: #ifdef DEBUG ! 102: abort(); ! 103: #else ! 104: exit(n); ! 105: #endif ! 106: } ! 107: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.