doclook(argc
, argv
, colevel
)
int fpa
[2], fpb
[2], fpc
[2], pid1
, pid2
, st
;
# define fmv(x,y) close(y); dup(x); close(x);
/* we want to run chkbib and then lhunt and pipe in & out */
pipe (fpa
); /* from this program to chkbib */
pipe (fpb
); /* from chkbib to lhunt */
pipe (fpc
); /* from lhunt to us */
if ( (pid1
= fork()) ==0)
close(fpa
[WR
]); close(fpb
[RD
]); close(fpc
[RD
]); close(fpc
[WR
]);
execl("/usr/lib/refer/mkey", "mkey", "-s", 0);
if ( (pid2
= fork()) == 0)
sprintf(coarg
, "-C%d", colevel
);
close(fpa
[RD
]); close(fpa
[WR
]); close(fpb
[WR
]); close(fpc
[RD
]);
execl("/usr/lib/refer/hunt", "hunt",
coarg
, "-Ty", "-Fn", "/usr/dict/lookall/All", 0);
_assert (pid1
!= -1); _assert(pid2
!= -1);
close(fpb
[RD
]); close(fpb
[WR
]); close(fpa
[RD
]); close(fpc
[WR
]);
ansf
= fopen("/dev/null", "r");
fmv (fpc
[RD
], ansf
->_file
);
for(iarg
=1; iarg
<argc
; iarg
++)
prod(fpa
[WR
], argv
[iarg
]);
while (af
< files
+NFILES
)
if (fgets(af
->nm
=s
, NAMES
, ansf
)==0)
st
= stat(af
->nm
, &statbuf
);
af
->uid
= statbuf
.st_uid
;
af
->fdate
= statbuf
.st_mtime
;
af
->size
= statbuf
.st_size
;