|
|
1.1 ! root 1: # include "stdio.h" ! 2: # include "assert.h" ! 3: # define mv(f,g) {close(g); dup(f); close(f);} ! 4: /* send everything through chkbib & lhunt */ ! 5: char * indexes= "/usr/dict/papers/Ind"; ! 6: lookup (fin, fout) ! 7: FILE *fin, *fout; ! 8: { ! 9: struct pipe {int fr, fw;}; ! 10: struct pipe p1, p2, p3; ! 11: pipe(&p1); pipe(&p2); pipe(&p3); ! 12: if (fork()==0) ! 13: { ! 14: /* chkbib process; read p1.fr, write p2.fw */ ! 15: close(p1.fw); close(p2.fr); close(p3.fr); close(p3.fw); ! 16: mv (p2.fw, 1); ! 17: mv (p1.fr, 0); ! 18: execl("/usr/lib/refer/mkey", "mkey", "-s", 0); ! 19: _assert(0); ! 20: } ! 21: close(p1.fr); ! 22: if (fork()==0) ! 23: { ! 24: /* lhunt reads p2, writes p3 */ ! 25: close(p1.fw); close(p1.fr); close(p2.fw); close(p3.fr); ! 26: mv (p3.fw, 1); ! 27: mv (p2.fr, 0); ! 28: execl("/usr/lib/refer/hunt", "hunt", "-Ty", "-Fn", /*"-C1",*/ ! 29: indexes, 0); ! 30: _assert(0); ! 31: } ! 32: close(p3.fw); ! 33: close(p2.fr); close(p2.fw); ! 34: /* now get some files */ ! 35: close (fin->_file); fin->_file = p1.fw; ! 36: close(fout->_file); fout->_file=p3.fr; ! 37: return; ! 38: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.