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: }

Defined functions

doclook defined in line 3; used 2 times
prod defined in line 66; used 1 times
  • in line 44

Defined macros

RD defined in line 12; used 9 times
WR defined in line 13; used 10 times
fmv defined in line 14; used 5 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 704
Valid CSS Valid XHTML 1.0 Strict