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

📄 upost.c

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 C
字号:
/*int	mbuf[1024];	/*INSTR*/int	psw	1;int	initf	1;main(argc, argv)	char	*argv[];{	auto	f,fct,file;	if(argc < 2) {		printf("Usage: cpost [-d] file1 file2 ...\n");		exit();	}	if(*argv[1] == '-') {		fct = argv[1][1] - '0';		if((fct < 1) || (fct > 9)) {			printf("-d: 0 < d < 10\n");			exit();		}		argv++;		argc--;	} else {		fct = 1;	}	f = 0;	while(++f < argc) {		file = open(argv[f], 0);		edl(file, fct);		close(file);		psw = 0;	}	flsh(0);	exit();}int	lno	1;edl(file){	auto t,l;	char	static	buf[20],fld[20],line[200];	char	c;field:	t = -1;	while(((buf[++t] = get(file)) != '\t') && (buf[t] != -1))		if(buf[t] == '\0')	goto done;	if((c = buf[t]) == -1)	c = ' ';	buf[t] = '\0';	if(comp(buf,fld)) {		lno++;		goto junk;	} else {		if(lno == 0) {			put(0,line,++l);		}		l = copy(buf,line);		copy(buf,fld);		line[--l] = c;		lno = 0;		goto fill;	}fill:	while((line[++l] = get(file)) != '\n') {		if(line[l] == -1)	line[l] = ' ';		if(line[l] == '\0')	goto done;	}	goto field;junk:	while((*line = get(file)) != '\n')		if(*line == '\0')	goto done;	goto field;done:	if(lno == 0)		put(0,line,++l);		lno = 1;	return(0);}gfld(file, buf)	char	*buf;{	char	c;	buf--;	while(*++buf  = get(file)) {		if((*buf == '\t') || (*buf == '\n')) {			c = *buf;			*buf = '\0';			return(c);		} else {			continue;		}	}	return('\0');}copy(a, b)	char	*a,*b;{	char	*c;	b--;	c = --a;	while(*++b = *++a);	return(a - c);}comp(a, b)	char	*a, *b;{/*	printf("comp: %s %s\n",a,b); /*DEBUG*/	a--;	b--;	while(*++a == *++b) {		if(*a == '\0')	return(1);	}	return(0);}char	buf[512];int	nread	1;get(ifile) int ifile;{	char static *ibuf;	if(--nread){		return(*ibuf++);	}	if(nread = read(ifile,buf,512)){		if(nread < 0)goto err;		ibuf = buf;		return(*ibuf++);	}	nread = 1;	return(0);err:	nread = 1;	printf("read error\n");	return(0);}int	tp[1]	1;int	optr[4];char	bsp[512];char	*obuf[1]	bsp;int	nflush;put(fil,string,n)	char	*string;{	int	i;	char	*o;/*printf("%d %c %d\n",fil,*string,n);/*DEBUG*/	string--;	if((i = optr[fil] + n - 512) >= 0) {		n =- i;		o = &obuf[fil][optr[fil]] -1;		while(--n >= 0)			*++o = *++string;		optr[fil] = 512;		flsh(fil);		n = i;	}	o = &obuf[fil][optr[fil]] - 1;	optr[fil] =+ n;	while(--n >= 0) {		*++o = *++string;	}	return(0);}flsh(fil){	extern	tp[];	if(optr[fil] <= 0)	return(optr[fil]);	nflush++;	if(write(tp[fil],obuf[fil],optr[fil]) != optr[fil])		return(-1);	optr[fil] = 0;	return(0);}

⌨️ 快捷键说明

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