|
|
1.1 ! root 1: # include "what..c" ! 2: ! 3: doclook(argc, argv, colevel) ! 4: char *argv[]; ! 5: { ! 6: int fpa[2], fpb[2], fpc[2], pid1, pid2, st; ! 7: int iarg; ! 8: char *s; ! 9: FILE *ansf; ! 10: struct filans *af; ! 11: struct stat statbuf; ! 12: # define RD 0 ! 13: # define WR 1 ! 14: # define fmv(x,y) close(y); dup(x); close(x); ! 15: /* we want to run chkbib and then lhunt and pipe in & out */ ! 16: pipe (fpa); /* from this program to chkbib */ ! 17: pipe (fpb); /* from chkbib to lhunt */ ! 18: pipe (fpc); /* from lhunt to us */ ! 19: if ( (pid1 = fork()) ==0) ! 20: { ! 21: fmv(fpa[RD], 0); ! 22: fmv(fpb[WR], 1); ! 23: close(fpa[WR]); close(fpb[RD]); close(fpc[RD]); close(fpc[WR]); ! 24: execl("/usr/lib/refer/mkey", "mkey", "-s", 0); ! 25: assert(0); ! 26: } ! 27: if ( (pid2 = fork()) == 0) ! 28: { ! 29: char coarg[20]; ! 30: sprintf(coarg, "-C%d", colevel); ! 31: fmv(fpb[RD], 0); ! 32: fmv(fpc[WR], 1); ! 33: close(fpa[RD]); close(fpa[WR]); close(fpb[WR]); close(fpc[RD]); ! 34: execl("/usr/lib/refer/hunt", "hunt", ! 35: /* "-P", */ ! 36: coarg, "-Ty", "-Fn", "/usr/dict/lookall/All", 0); ! 37: assert(0); ! 38: } ! 39: assert (pid1 != -1); assert(pid2 != -1); ! 40: close(fpb[RD]); close(fpb[WR]); close(fpa[RD]); close(fpc[WR]); ! 41: ansf = fopen("/dev/null", "r"); ! 42: fmv (fpc[RD], ansf->_file); ! 43: for(iarg=1; iarg<argc; iarg++) ! 44: prod(fpa[WR], argv[iarg]); ! 45: close(fpa[WR]); ! 46: s=fnames; ! 47: af=files; ! 48: while (af < files+NFILES) ! 49: { ! 50: if (fgets(af->nm=s, NAMES, ansf)==0) ! 51: break; ! 52: trimnl(s); ! 53: if (*s==0) continue; ! 54: while (*s++); ! 55: assert(s<fnames+NAMES); ! 56: st = stat(af->nm, &statbuf); ! 57: if (st<0) continue; ! 58: af->uid = statbuf.st_uid; ! 59: af->fdate = statbuf.st_mtime; ! 60: af->size = statbuf.st_size; ! 61: af++; ! 62: } ! 63: fclose(ansf); ! 64: return(af-files); ! 65: } ! 66: prod(f,s) ! 67: char *s; ! 68: { ! 69: write (f, s, strlen(s)); ! 70: write (f, "\n", 1); ! 71: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.