Annotation of 3BSD/cmd/refer/refer1.c, revision 1.1

1.1     ! root        1: # include "signal.h"
        !             2: # include "refer..c"
        !             3: main(argc,argv)
        !             4:        char *argv[];
        !             5: {
        !             6: char line[LLINE], *s;
        !             7: int nodeflt =0;
        !             8: 
        !             9: signals();
        !            10: while (argv[1][0] == '-')
        !            11:        {
        !            12:        switch(argv[1][1])
        !            13:                {
        !            14:                case 'e':
        !            15:                        endpush++; break;
        !            16:                case 'l': 
        !            17:                        labels++;
        !            18:                        s = argv[1]+2;
        !            19:                        nmlen = atoi(s);
        !            20:                        while (*s)
        !            21:                                if (*s++ == ',')
        !            22:                                        break;
        !            23:                        dtlen = atoi(s);
        !            24:                        break;
        !            25:                case 'k':
        !            26:                        keywant = (argv[1][2] ? argv[1][2] : 'L');
        !            27:                        labels++;
        !            28:                        break;
        !            29:                case 's':
        !            30:                        sort++;
        !            31:                        if (argv[1][2])
        !            32:                                keystr= argv[1]+2;
        !            33:                        break;
        !            34:                case 'p':
        !            35:                        argc--; argv++;
        !            36:                        *search++ = argv[1];
        !            37:                        if (search-rdata>NSERCH)
        !            38:                                err("too many -p options (%d)", NSERCH);
        !            39:                        break;
        !            40:                case 'n':
        !            41:                        nodeflt=1;
        !            42:                        break;
        !            43:                case 'b':
        !            44:                        bare = (argv[1][2] == '1') ? 1 : 2;
        !            45:                        break;
        !            46:                case 'c':
        !            47:                        smallcaps = argv[1]+2;
        !            48:                        break;
        !            49:                case 'a':
        !            50:                        authrev = atoi (argv[1]+2);
        !            51:                        if (authrev<=0)
        !            52:                                authrev = 1000;
        !            53:                        break;
        !            54:                }
        !            55:        argc--; argv++;
        !            56:        }
        !            57: if (nodeflt==0)
        !            58:        *search++ = "/usr/dict/papers/Ind";
        !            59: 
        !            60: if (sort)
        !            61:        endpush=1;
        !            62: if (endpush)
        !            63:        {
        !            64:        sprintf(tfile, "/tmp/rj%da", getpid());
        !            65:        fo = fopen(tfile, "w");
        !            66:        if (fo==NULL)
        !            67:                {
        !            68:                fo = ftemp;
        !            69:                fprintf(stderr,"Can't open scratch file");
        !            70:                }
        !            71:        sep = 002; /* separate records without confusing sort..*/
        !            72:        }
        !            73: 
        !            74: 
        !            75: if (sort && !labels)
        !            76:        {
        !            77:        sprintf(ofile,"/tmp/rj%db", getpid());
        !            78:        ftemp = fopen(ofile, "w");
        !            79:        if (ftemp==NULL)
        !            80:                {
        !            81:                fprintf(stderr, "Can't open scratch file\n");
        !            82:                exit(1);
        !            83:                }
        !            84:        }
        !            85: 
        !            86: do
        !            87:        {
        !            88:        if (argc>1)
        !            89:                {
        !            90:                fclose(in);
        !            91:                Iline=0;
        !            92:                in = fopen(Ifile=argv[1], "r");
        !            93:                argc--; argv++;
        !            94:                if (in==NULL)
        !            95:                        {
        !            96:                        err("Can't read %s", Ifile);
        !            97:                        continue;
        !            98:                        }
        !            99:                }
        !           100:        while (input(line))
        !           101:                {
        !           102:                Iline++;
        !           103: # ifdef D1
        !           104:                fprintf(stderr, "line %.20s\n",line);
        !           105: # endif
        !           106:                if (!prefix(".[", line))
        !           107:                        output(line);
        !           108:                else
        !           109:                        doref(line);
        !           110: # if D1
        !           111:                fprintf(stderr, "past output/doref\n");
        !           112: # endif
        !           113:                }
        !           114:        }
        !           115:        while (argc>1);
        !           116: if (endpush && fo!=NULL)
        !           117:        dumpold();
        !           118: output("", ftemp);
        !           119: if (sort && !labels)
        !           120:        recopy(ofile);
        !           121: clfgrep();
        !           122: cleanup();
        !           123: exit(0);
        !           124: }
        !           125: 
        !           126: extern int intr();
        !           127: signals()
        !           128: {
        !           129:        int oldint;
        !           130: oldint = signal(SIGINT, &intr);
        !           131: if (oldint==1)
        !           132:        signal (SIGINT, 1);
        !           133: signal (SIGHUP, &intr);
        !           134: signal (SIGPIPE, &intr);
        !           135: signal (SIGTERM, &intr);
        !           136: }
        !           137: 
        !           138: intr()
        !           139: {
        !           140:        int oldsig;
        !           141: signal(SIGINT, 1);
        !           142: cleanup();
        !           143: exit(1);
        !           144: }
        !           145: cleanup()
        !           146: {
        !           147: if (tfile[0]) unlink(tfile);
        !           148: if (gfile[0]) unlink(gfile);
        !           149: if (ofile[0]) unlink(ofile);
        !           150: if (hidenam[0]) unlink(hidenam);
        !           151: }

unix.superglobalmegacorp.com

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