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

📄 cpydgst.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
/* cpydgst.c - copy from one fd to another in encapsulating mode */#include "../h/mh.h"#include <stdio.h>/* All we want to do is to perform the substitution	\n(-.*)\n	-->	\n- \1\n    we could use	sed -e 's%^-%- -%' < ifile > ofile    to do this, but the routine below is faster than the pipe, fork, and    exec. */#define	S1	0#define	S2	1#define	output(c)   if (bp >= dp) {flush(); *bp++ = c;} else *bp++ = c#define	flush()	    if ((j = bp - outbuf) && write (out, outbuf, j) != j) \			adios (ofile, "error writing"); \		    else \			bp = outbuf/*  */void cpydgst (in, out, ifile, ofile)register int    in,                out;register char  *ifile,               *ofile;{    register int    i,                    state;    register char  *cp,                   *ep;    char    buffer[BUFSIZ];    register int    j;    register char  *bp,                   *dp;    char    outbuf[BUFSIZ];    dp = (bp = outbuf) + sizeof outbuf;    for (state = S1; (i = read (in, buffer, sizeof buffer)) > 0;)	for (ep = (cp = buffer) + i; cp < ep; cp++) {	    if (*cp == NULL)		continue;	    switch (state) {		case S1: 		    if (*cp == '-') {			output ('-');			output (' ');		    }		    state = S2;	/* fall */		case S2: 		    output (*cp);		    if (*cp == '\n')			state = S1;		    break;	    }	}    if (i == NOTOK)	adios (ifile, "error reading");    flush ();}

⌨️ 快捷键说明

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