Annotation of 43BSD/contrib/pathalias/main.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.