📄 what3.c
字号:
# include "what..c"doclook(argc, argv, colevel) char *argv[];{ int fpa[2], fpb[2], fpc[2], pid1, pid2, st; int iarg; char *s; FILE *ansf; struct filans *af; struct stat statbuf;# define RD 0# define WR 1# 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) { fmv(fpa[RD], 0); fmv(fpb[WR], 1); close(fpa[WR]); close(fpb[RD]); close(fpc[RD]); close(fpc[WR]); execl("/usr/lib/refer/mkey", "mkey", "-s", 0); _assert(0); }if ( (pid2 = fork()) == 0) { char coarg[20]; sprintf(coarg, "-C%d", colevel); fmv(fpb[RD], 0); fmv(fpc[WR], 1); close(fpa[RD]); close(fpa[WR]); close(fpb[WR]); close(fpc[RD]); execl("/usr/lib/refer/hunt", "hunt", /* "-P", */ coarg, "-Ty", "-Fn", "/usr/dict/lookall/All", 0); _assert(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]);close(fpa[WR]);s=fnames;af=files;while (af < files+NFILES) { if (fgets(af->nm=s, NAMES, ansf)==0) break; trimnl(s); if (*s==0) continue; while (*s++); _assert(s<fnames+NAMES); st = stat(af->nm, &statbuf); if (st<0) continue; af->uid = statbuf.st_uid; af->fdate = statbuf.st_mtime; af->size = statbuf.st_size; af++; }fclose(ansf);return(af-files);}prod(f,s) char *s;{write (f, s, strlen(s));write (f, "\n", 1);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -