⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 what1.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
# include "what..c"struct filans files[NFILES];char fnames[NAMES];int relfeed 0;char *rb[NFEED];char rbb[200], *rbp rbb;;main(argc,argv)	char *argv[];{	char *s, *t, *xargv[50], *wd[50];	struct filans *af;	int xargc 0, nw, nf, i;while (argc>1 && argv[1][0]=='-')	{	switch(argv[1][1])		{		case 'r': relfeed=1; break;		}	argc--; argv++;	}if (argc<=1)	{	printf("No query.\n");	return(0);	}nf = doclook(argc,argv,0);printf("   %d files\n",nf);if (relfeed && nf>NFEED)	{	wrdoc(NFEED, argc, argv, 1);	nw = freqwd (rb, wd, argc);	for(i=0; rb[i]; i++)		unlink(rb[i]);	}for(i=0; i<argc; i++)	xargv[xargc++]=argv[i];if (relfeed)	{	printf("Adding: ");	for(i=0; i<nw; i++)		if (!lfind(wd[i], xargc, xargv))			printf("%s ", xargv[xargc++]=wd[i]);	printf("\n");	nf = doclook(xargc, xargv, relfeed? xargc/4 : 0);	printf("  %d files\n",nf);	}shell (nf, comp, exch);wrdoc(nf, xargc, xargv, 0);return(0);}exch( i1, i2 ){	struct filans *p1, *p2;	struct filans xt;	p1=files+i1;	p2=files+i2;	xt = *p1;	*p1 = *p2;	*p2 = xt;}comp(i1, i2){	struct filans *p1, *p2;	p1 = files+i1;	p2= files+i2;	if (p1->fdate != p2->fdate)		return(p2->fdate > p1->fdate);	return(p2->uid >= p1->uid);}wrdoc ( np, argc, argv, relfeed ){	struct filans *af;	char *s, *t, buf[200];	int eval, k, pid;	FILE *rf NULL;	FILE *ans NULL;	pid=getpid();	for(af=files; af<files+np; af++)		{		t = ctime(&af->fdate);		getpw(af->uid, s=buf);		while (*s && *s!=':') s++;		*s=0;		printf("%s (%.20s)  %s, %ld bytes\n",af->nm,t+4,buf,af->size);		if (relfeed)			{			k=af-files;			_assert (k<NFEED);			sprintf(rb[k]=rbp, "rf%d.%d",pid, k);			rf = fopen(rb[k], "w");			while (*rbp++);			}		describe(af->nm, argc,argv, rf);		if (relfeed)			{			printf("You like that one?");			fflush(stdout);			fgets(buf, 100, stdin);			switch(buf[0])				{				case 'y': case 'Y': eval=1; break;				case 'n': case 'N': eval = -1; break;				default: eval=0; break;				}			fclose(rf);			if (eval<=0)				{				unlink(rb[k]);				rb[k][0]=0;				}			}		}	if (relfeed) rb[np]=0;}lfind( wl, n, wds)	char *wl, *wds[];{	int i;for(i=0; i<n; i++)	if (str6cmp(wl, wds[i])==0)		return(1);return(0);}str6cmp(s, t)	char *s, *t;{int i 0, c;while ( (c= *s++ ) == ( *t++))	if (c==0 || ++i ==6)		return(0);return(1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -