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

📄 endfile.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#include "fio.h"static alist *ax;f_end(a) alist *a;{	unit *b;	if(a->aunit>=MXUNIT || a->aunit<0) err(a->aerr,101,"endfile");	b = &units[a->aunit];	if(b->ufd==NULL) return(0);	b->uend=1;	if( b->useek==0) return(0);	ax=a;	if(b->uwrt) nowreading(b);	return(t_runc(b));}t_runc(b) unit *b;{	char buf[128],nm[16];	FILE *tmp;	int n,m;	long loc,len;	if(b->url) return(0);	/*don't truncate direct files*/	loc=ftell(b->ufd);	fseek(b->ufd,0L,2);	len=ftell(b->ufd);	if(loc==len || b->useek==0 || b->ufnm==NULL) return(0);	strcpy(nm,"tmp.FXXXXXX");	if(b->uwrt) nowreading(b);	mktemp(nm);	tmp=fopen(nm,"w");	fseek(b->ufd,0L,0);	for(;loc>0;)	{		n=fread(buf,1,loc>128?128:(int)loc,b->ufd);		if(n>loc) n=loc;		loc -= n;		fwrite(buf,1,n,tmp);	}	fflush(tmp);	for(n=0;n<10;n++)	{		if((m=fork())==-1) continue;		else if(m==0)		{			execl("/bin/cp","cp",nm,b->ufnm,0);			execl("/usr/bin/cp","cp",nm,b->ufnm,0);			fprintf(stdout,"no cp\n");			exit(1);		}		wait(&m);		if(m!=0) err(ax->aerr,111,"endfile");		fclose(tmp);		unlink(nm);		return(0);	}	err(ax->aerr,111,"endfile");}

⌨️ 快捷键说明

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