Annotation of researchv10no/cmd/lfactor/search.c, revision 1.1.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.