X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fcpydgst.c;h=5e5ef87f2ea306bdad881a8c05843d5fb2ea144b;hp=7195cd152d90173c630fc6b352a933ad1dbbf988;hb=1fb6287fc4986668e8f49d7c3bdca27d53e267af;hpb=a485ed478abbd599d8c9aab48934e7a26733ecb1 diff --git a/sbr/cpydgst.c b/sbr/cpydgst.c index 7195cd1..5e5ef87 100644 --- a/sbr/cpydgst.c +++ b/sbr/cpydgst.c @@ -1,66 +1,68 @@ /* - * cpydgst.c -- copy from one fd to another in encapsulating mode - * -- (do dashstuffing of input data). - * - * This code is Copyright (c) 2002, by the authors of nmh. See the - * COPYRIGHT file in the root directory of the nmh distribution for - * complete copyright information. - */ +** cpydgst.c -- copy from one fd to another in encapsulating mode +** -- (do dashstuffing of input data). +** +** This code is Copyright (c) 2002, by the authors of nmh. See the +** COPYRIGHT file in the root directory of the nmh distribution for +** complete copyright information. +*/ +#include +#include #include /* - * We want to perform the substitution - * - * \n(-.*)\n --> \n- \1\n - * - * This is equivalent to the sed substitution - * - * sed -e 's%^-%- -%' < ifile > ofile - * - * but the routine below is faster than the pipe, fork, and exec. - */ +** We want to perform the substitution +** +** \n(-.*)\n --> \n- \1\n +** +** This is equivalent to the sed substitution +** +** sed -e 's%^-%- -%' < ifile > ofile +** +** 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"); \ +#define flush() if ((j = bp - outbuf) && write(out, outbuf, j) != j) \ + adios(EX_IOERR, ofile, "error writing"); \ else \ bp = outbuf void -cpydgst (int in, int out, char *ifile, char *ofile) +cpydgst(int in, int out, char *ifile, char *ofile) { - register int i, j, state; - register char *cp, *ep; - register char *bp, *dp; + int i, j, state; + char *cp, *ep; + char *bp, *dp; char buffer[BUFSIZ], outbuf[BUFSIZ]; dp = (bp = outbuf) + sizeof outbuf; - for (state = S1; (i = read (in, buffer, sizeof buffer)) > 0;) + for (state = S1; (i = read(in, buffer, sizeof buffer)) > 0;) for (ep = (cp = buffer) + i; cp < ep; cp++) { if (*cp == '\0') continue; switch (state) { - case S1: - if (*cp == '-') { - output ('-'); - output (' '); - } - state = S2; /* fall */ + case S1: + if (*cp == '-') { + output('-'); + output(' '); + } + state = S2; /* fall */ - case S2: - output (*cp); - if (*cp == '\n') - state = S1; - break; + case S2: + output(*cp); + if (*cp == '\n') + state = S1; + break; } } if (i == -1) - adios (ifile, "error reading"); + adios(EX_IOERR, ifile, "error reading"); flush(); }