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

📄 crpost.c

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 C
字号:
/*int	mbuf[1024];	/*INSTR*/int	ig	100;int	esw;int	initf	1;char	ssp[270];char	*sym[9]	{ssp,		ssp + 30,		ssp + 60,		ssp + 90,		ssp + 120,		ssp + 150,		ssp + 180,		ssp + 210,		ssp + 240,		ssp + 270		};main(argc, argv)	char	*argv[];{	auto	f,fct,file,i;	if(argc < 2) {		printf("Usage: crpost [-d] file1 file2 ...\n");		exit();	}	if(*argv[1] == '-') {		if(argv[1][1] == 'E') {			fct = 3;			esw = 1;			goto on;		}		fct = argv[1][1] - '0';		if((fct < 1) || (fct > 9)) {			printf("-d: 0 < d < 10\n");			exit();		}		if(argv[1][2] == 'x') {			ig = fct-1;		}on:		argv++;		argc--;	} else {		fct = 3;	}	f = 0;	while(++f < argc) {		file = open(argv[f], 0);		edf(file, fct);		close(file);	}	flsh(0);	exit();}int	lno	1;edf(file, fct){	auto	i,j,l;	extern	lno,etext;	char	brk,*buf,bufsp[150],line[150];	char extern	*sym[];/*	monitor(&main,&etext,&mbuf,1024);	/*INSTR*/	for(i = 0; i < fct; i++)		*sym[i] = 0200;fields:	l = -1;	buf = &bufsp;	for(i = 0; i < fct; ++i) {		buf--;swt:		switch(*++buf = get(file)) {			default:				if(esw && *buf >= 'A' && *buf <= 'Z'					&& i == 0)					*buf =| 040;				goto swt;			case -1:				*buf = ' ';			case '\t':				if(i == ig)	continue;				brk = *buf;				*buf = '\0';				buf = &bufsp;				if(comp(buf, sym[i])) {					if(esw && i == 0) {						line[0] = line[1] = '\t';						l = 1;						goto rest;					}					line[++l] = '\t';					continue;				} else {					copy(buf, sym[i]);					l =+ copy(buf, &line[++l]);					line[--l] = brk;					if(l < 8 && esw && i == 0)						line[++l] = '\t';					j = i;					while(++j < fct)						*sym[j] = 0200;					continue;				}			case '\n':				lno++;				brk = *buf;				*buf = '\0';				buf = &bufsp;				if(comp(buf, sym[i])) {					goto fields;				} else {					copy(buf, sym[i]);					l =+ copy(buf, &line[++l]);					line[--l] = '\n';					j = i;					while(++j < fct)						*sym[j] = 0;					goto out;				}			case '\0':				goto fexit;		}	}rest:	while((line[++l] = get(file)) != '\n')		if(line[l] == '\0')	goto fexit;	lno++;out:	if(*line != '\t') {		put(0,"\n",1);		lno++;	}	put(0,line,++l);	goto fields;fexit:/*	monitor(0);	/*INSTR*/	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 + -