From 62234e45d5fe22235409af5fdf7dfd74f864692c Mon Sep 17 00:00:00 2001 Message-Id: <62234e45d5fe22235409af5fdf7dfd74f864692c.1715508190.git.mdw@distorted.org.uk> From: Mark Wooding Date: Fri, 28 Sep 2007 15:01:37 +0100 Subject: [PATCH] correct disorder-normalize Organization: Straylight/Edgeware From: rjk@greenend.org.uk <> --- server/normalize.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/server/normalize.c b/server/normalize.c index 7e5fbe8..ddbd725 100644 --- a/server/normalize.c +++ b/server/normalize.c @@ -47,26 +47,27 @@ * @param n Number of bytes to copy */ static void copy(int infd, int outfd, size_t n) { - char buffer[4096], *ptr; - int r, w; + char buffer[4096]; + ssize_t written; while(n > 0) { - r = read(infd, buffer, sizeof buffer); - if(r < 0) { + const ssize_t readden = read(infd, buffer, + n > sizeof buffer ? sizeof buffer : n); + if(readden < 0) { if(errno == EINTR) continue; else fatal(errno, "read error"); } - if(r == 0) + if(readden == 0) fatal(0, "unexpected EOF"); - n -= r; - ptr = buffer; - while(r > 0) { - w = write(outfd, ptr, r - (ptr - buffer)); + n -= readden; + written = 0; + while(written < readden) { + const ssize_t w = write(outfd, buffer + written, readden - written); if(w < 0) fatal(errno, "write error"); - ptr += w; + written += w; } } } -- [mdw]