Annotation of 43BSD/usr.bin/refer/hunt7.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char *sccsid = "@(#)hunt7.c     4.1 (Berkeley) 5/6/83";
        !             3: #endif
        !             4: 
        !             5: #include <stdio.h>
        !             6: #include <assert.h>
        !             7: #define SAME 0
        !             8: #define FGCT 10
        !             9: #define FGSIZE 150
        !            10: 
        !            11: int keepold = 1;       /* keep old things for fgrep search */
        !            12: char fgspace[FGSIZE];
        !            13: char *fgp = fgspace;
        !            14: char *fgnames[FGCT];
        !            15: char **fgnamp = fgnames;
        !            16: 
        !            17: findline(in, out, outlen, indexdate)
        !            18: long indexdate;
        !            19: char *in, *out;
        !            20: {
        !            21:        static char name[100] = "";
        !            22:        char *p, **ftp;
        !            23:        extern long gdate();
        !            24:        static FILE *fa = NULL;
        !            25:        long lp, llen;
        !            26:        int len, k, nofil;
        !            27: 
        !            28: # if D1
        !            29:        fprintf(stderr, "findline: %s\n", in);
        !            30: # endif
        !            31:        if (mindex(in, '!'))
        !            32:                return(remote(in, out));
        !            33:        nofil = in[0]==0;
        !            34:        for(p=in; *p && *p != ':' && *p != ';'; p++)
        !            35:                ;
        !            36:        if (*p) *p++=0;
        !            37:        else p=in;
        !            38:        k = sscanf(p, "%ld,%ld", &lp, &llen);
        !            39: # ifdef D1
        !            40:        fprintf(stderr, "p %s k %d lp %ld llen %ld\n",p,k,lp,llen);
        !            41: # endif
        !            42:        if (k<2)
        !            43:        {
        !            44:                lp = 0;
        !            45:                llen=outlen;
        !            46:        }
        !            47: # ifdef D1
        !            48:        fprintf(stderr, "lp %ld llen %ld\n",lp, llen);
        !            49: # endif
        !            50: # ifdef D1
        !            51:        fprintf(stderr, "fa now %o, p %o in %o %s\n",fa, p,in,in);
        !            52: # endif
        !            53:        if (nofil)
        !            54:        {
        !            55: # if D1
        !            56:                fprintf(stderr, "set fa to stdin\n");
        !            57: # endif
        !            58:                fa = stdin;
        !            59:        }
        !            60:        else
        !            61:                if (strcmp (name, in) != 0 || 1)
        !            62:                {
        !            63: # if D1
        !            64:                        fprintf(stderr, "old: %s new %s not equal\n",name,in);
        !            65: # endif
        !            66:                        if (fa != NULL)
        !            67:                                fa = freopen(in, "r", fa);
        !            68:                        else
        !            69:                                fa = fopen(in, "r");
        !            70: # if D1
        !            71:                        if (fa==NULL)
        !            72:                                fprintf(stderr, "failed to (re)open *%s*\n",in);
        !            73: # endif
        !            74:                        if (fa == NULL)
        !            75:                                return(0);
        !            76:                        /* err("Can't open %s", in); */
        !            77:                        strcpy(name, in);
        !            78:                        if (gdate(fa) > indexdate && indexdate != 0)
        !            79:                        {
        !            80:                                if (keepold)
        !            81:                                {
        !            82:                                        for(ftp=fgnames; ftp<fgnamp; ftp++)
        !            83:                                                if (strcmp(*ftp, name)==SAME)
        !            84:                                                        return(0);
        !            85:                                        strcpy (*fgnamp++ = fgp, name);
        !            86:                                        assert(fgnamp<fgnames+FGCT);
        !            87:                                        while (*fgp && *fgp!=':')
        !            88:                                                fgp++;
        !            89:                                        *fgp++ = 0;
        !            90:                                        assert (fgp<fgspace+FGSIZE);
        !            91:                                        return(0);
        !            92:                                }
        !            93:                                fprintf(stderr, "Warning: index predates file '%s'\n", name);
        !            94:                        }
        !            95:                }
        !            96: # if D1
        !            97:                else
        !            98:                        fprintf(stderr, "old %s new %s same fa %o\n", name,in,fa);
        !            99: # endif
        !           100:        if (fa != NULL)
        !           101:        {
        !           102:                fseek (fa, lp, 0);
        !           103:                len = (llen >= outlen) ? outlen-1 : llen;
        !           104:                len = fread (out, 1, len, fa);
        !           105:                out[len] = 0;
        !           106: # ifdef D1
        !           107:                fprintf(stderr, "length as read is %d\n",len);
        !           108: # endif
        !           109:        }
        !           110:        return(len);
        !           111: }

unix.superglobalmegacorp.com

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