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