Annotation of 43BSD/usr.bin/refer/what1.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char *sccsid = "@(#)what1.c     4.1 (Berkeley) 5/6/83";
                      3: #endif
                      4: 
                      5: #include "what..c"
                      6: 
                      7: struct filans files[NFILES];
                      8: char fnames[NAMES];
                      9: int relfeed 0;
                     10: char *rb[NFEED];
                     11: char rbb[200], *rbp rbb;
                     12: ;
                     13: 
                     14: main(argc,argv)
                     15: char *argv[];
                     16: {
                     17:        char *s, *t, *xargv[50], *wd[50];
                     18:        struct filans *af;
                     19:        int xargc 0, nw, nf, i;
                     20:        while (argc>1 && argv[1][0]=='-')
                     21:        {
                     22:                switch(argv[1][1])
                     23:                {
                     24:                case 'r': 
                     25:                        relfeed=1; 
                     26:                        break;
                     27:                }
                     28:                argc--; 
                     29:                argv++;
                     30:        }
                     31:        if (argc<=1)
                     32:        {
                     33:                printf("No query.\n");
                     34:                return(0);
                     35:        }
                     36:        nf = doclook(argc,argv,0);
                     37:        printf("   %d files\n",nf);
                     38:        if (relfeed && nf>NFEED)
                     39:        {
                     40:                wrdoc(NFEED, argc, argv, 1);
                     41:                nw = freqwd (rb, wd, argc);
                     42:                for(i=0; rb[i]; i++)
                     43:                        unlink(rb[i]);
                     44:        }
                     45:        for(i=0; i<argc; i++)
                     46:                xargv[xargc++]=argv[i];
                     47:        if (relfeed)
                     48:        {
                     49:                printf("Adding: ");
                     50:                for(i=0; i<nw; i++)
                     51:                        if (!lfind(wd[i], xargc, xargv))
                     52:                                printf("%s ", xargv[xargc++]=wd[i]);
                     53:                printf("\n");
                     54:                nf = doclook(xargc, xargv, relfeed? xargc/4 : 0);
                     55:                printf("  %d files\n",nf);
                     56:        }
                     57:        shell (nf, comp, exch);
                     58:        wrdoc(nf, xargc, xargv, 0);
                     59:        return(0);
                     60: }
                     61: 
                     62: exch( i1, i2 )
                     63: {
                     64:        struct filans *p1, *p2;
                     65:        struct filans xt;
                     66:        p1=files+i1;
                     67:        p2=files+i2;
                     68:        xt = *p1;
                     69:        *p1 = *p2;
                     70:        *p2 = xt;
                     71: }
                     72: 
                     73: comp(i1, i2)
                     74: {
                     75:        struct filans *p1, *p2;
                     76:        p1 = files+i1;
                     77:        p2= files+i2;
                     78:        if (p1->fdate != p2->fdate)
                     79:                return(p2->fdate > p1->fdate);
                     80:        return(p2->uid >= p1->uid);
                     81: }
                     82: 
                     83: wrdoc ( np, argc, argv, relfeed )
                     84: {
                     85:        struct filans *af;
                     86:        char *s, *t, buf[200];
                     87:        int eval, k, pid;
                     88:        FILE *rf NULL;
                     89:        FILE *ans NULL;
                     90:        pid=getpid();
                     91:        for(af=files; af<files+np; af++)
                     92:        {
                     93:                t = ctime(&af->fdate);
                     94:                getpw(af->uid, s=buf);
                     95:                while (*s && *s!=':') s++;
                     96:                *s=0;
                     97:                printf("%s (%.20s)  %s, %ld bytes\n",af->nm,t+4,buf,af->size);
                     98:                if (relfeed)
                     99:                {
                    100:                        k=af-files;
                    101:                        _assert (k<NFEED);
                    102:                        sprintf(rb[k]=rbp, "rf%d.%d",pid, k);
                    103:                        rf = fopen(rb[k], "w");
                    104:                        while (*rbp++);
                    105:                }
                    106:                describe(af->nm, argc,argv, rf);
                    107:                if (relfeed)
                    108:                {
                    109:                        printf("You like that one?");
                    110:                        fflush(stdout);
                    111:                        fgets(buf, 100, stdin);
                    112:                        switch(buf[0])
                    113:                        {
                    114:                        case 'y': 
                    115:                        case 'Y': 
                    116:                                eval=1; 
                    117:                                break;
                    118:                        case 'n': 
                    119:                        case 'N': 
                    120:                                eval = -1; 
                    121:                                break;
                    122:                        default: 
                    123:                                eval=0; 
                    124:                                break;
                    125:                        }
                    126:                        fclose(rf);
                    127:                        if (eval<=0)
                    128:                        {
                    129:                                unlink(rb[k]);
                    130:                                rb[k][0]=0;
                    131:                        }
                    132:                }
                    133:        }
                    134:        if (relfeed) rb[np]=0;
                    135: }
                    136: 
                    137: lfind( wl, n, wds)
                    138: char *wl, *wds[];
                    139: {
                    140:        int i;
                    141:        for(i=0; i<n; i++)
                    142:                if (str6cmp(wl, wds[i])==0)
                    143:                        return(1);
                    144:        return(0);
                    145: }
                    146: 
                    147: str6cmp(s, t)
                    148: char *s, *t;
                    149: {
                    150:        int i 0, c;
                    151:        while ( (c= *s++ ) == ( *t++))
                    152:                if (c==0 || ++i ==6)
                    153:                        return(0);
                    154:        return(1);
                    155: }

unix.superglobalmegacorp.com

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