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

📄 io.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#/* * UNIX shell * * S. R. Bourne * Bell Telephone Laboratories * */#include	"defs.h"#include	"dup.h"/* ========	input output and file copying ======== */initf(fd)	UFD		fd;{	REG FILE	f=standin;	f->fdes=fd; f->fsiz=((flags&(oneflg|ttyflg))==0 ? BUFSIZ : 1);	f->fnxt=f->fend=f->fbuf; f->feval=0; f->flin=1;	f->feof=FALSE;}estabf(s)	REG STRING	s;{	REG FILE	f;	(f=standin)->fdes = -1;	f->fend=length(s)+(f->fnxt=s);	f->flin=1;	return(f->feof=(s==0));}push(af)	FILE		af;{	REG FILE	f;	(f=af)->fstak=standin;	f->feof=0; f->feval=0;	standin=f;}pop(){	REG FILE	f;	IF (f=standin)->fstak	THEN	IF f->fdes>=0 THEN close(f->fdes) FI		standin=f->fstak;		return(TRUE);	ELSE	return(FALSE);	FI}chkpipe(pv)	INT		*pv;{	IF pipe(pv)<0 ORF pv[INPIPE]<0 ORF pv[OTPIPE]<0	THEN	error(piperr);	FI}chkopen(idf)	STRING		idf;{	REG INT		rc;	IF (rc=open(idf,0))<0	THEN	failed(idf,badopen);	ELSE	return(rc);	FI}rename(f1,f2)	REG INT		f1, f2;{	IF f1!=f2	THEN	dup(f1|DUPFLG, f2);		close(f1);		IF f2==0 THEN ioset|=1 FI	FI}create(s)	STRING		s;{	REG INT		rc;	IF (rc=creat(s,0666))<0	THEN	failed(s,badcreate);	ELSE	return(rc);	FI}tmpfil(){	itos(serial++); movstr(numbuf,tmpnam);	return(create(tmpout));}/* set by trim */BOOL		nosubst;copy(ioparg)	IOPTR		ioparg;{	CHAR		c, *ends;	REG CHAR	*cline, *clinep;	INT		fd;	REG IOPTR	iop;	IF iop=ioparg	THEN	copy(iop->iolst);		ends=mactrim(iop->ioname); IF nosubst THEN iop->iofile &= ~IODOC FI		fd=tmpfil();		iop->ioname=cpystak(tmpout);		iop->iolst=iotemp; iotemp=iop;		cline=locstak();		LOOP	clinep=cline; chkpr(NL);			WHILE (c = (nosubst ? readc() :  nextc(*ends)),  !eolchar(c)) DO *clinep++ = c OD			*clinep=0;			IF eof ORF eq(cline,ends) THEN break FI			*clinep++=NL;			write(fd,cline,clinep-cline);		POOL		close(fd);	FI}

⌨️ 快捷键说明

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