Annotation of researchv10no/cmd/lfactor/search.c, revision 1.1

1.1     ! root        1: int
        !             2: search(a, nn, es, fc, arg, j1, j2)
        !             3: char *a, *arg, **j1, **j2;
        !             4: unsigned nn;
        !             5: int es;
        !             6: int (*fc)();
        !             7: {
        !             8:        int c;
        !             9:        char *lp, *ap;
        !            10:        unsigned n;
        !            11: 
        !            12:        n = nn;
        !            13:        lp = a;
        !            14:        ap = a + n*es;
        !            15: loop:
        !            16:        if(n == 0){
        !            17:                *j1 = lp;
        !            18:                *j2 = ap;
        !            19:                return(-1);
        !            20:        }
        !            21:        n = ap - lp;
        !            22:        n = es * (n/(2*es));
        !            23:        if((c=(*fc)(arg,lp+n)) == 0){
        !            24:                lp = lp + n;
        !            25:                ap = lp + es;
        !            26:                goto gotit;
        !            27:        }
        !            28:        if(c<0){
        !            29:                ap = lp + n;
        !            30:                goto loop;
        !            31:        }
        !            32:        if(c>0){
        !            33:                lp = lp + n;
        !            34:                goto loop;
        !            35:        }
        !            36: gotit:
        !            37:        while(1){
        !            38:                if(lp==a) break;
        !            39:                if((*fc)(arg,lp-es) ==0){
        !            40:                        lp = lp - es;
        !            41:                }
        !            42:                else
        !            43:                        break;
        !            44:        }
        !            45:        while(1){
        !            46:                if(ap==a+nn*es) break;
        !            47:                if((*fc)(arg,ap) == 0){
        !            48:                        ap = ap + es;
        !            49:                }
        !            50:                else
        !            51:                        break;
        !            52:        }
        !            53:        *j1 = lp;
        !            54:        *j2 = ap;
        !            55:        return(1);
        !            56: }

unix.superglobalmegacorp.com

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