chiark
/
gitweb
/
~mdw
/
disorder
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
6d2d327
)
correct disorder-normalize
author
rjk@greenend.org.uk
<>
Fri, 28 Sep 2007 14:01:37 +0000
(15:01 +0100)
committer
rjk@greenend.org.uk
<>
Fri, 28 Sep 2007 14:01:37 +0000
(15:01 +0100)
server/normalize.c
patch
|
blob
|
blame
|
history
diff --git
a/server/normalize.c
b/server/normalize.c
index 7e5fbe8dc0aef7eae7289eb30b9dd4273c944104..ddbd72599c447f53d10174b8ea09d3af9319b8d6 100644
(file)
--- 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) {
* @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) {
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(errno == EINTR)
continue;
else
fatal(errno, "read error");
}
- if(r == 0)
+ if(r
eadden
== 0)
fatal(0, "unexpected EOF");
fatal(0, "unexpected EOF");
- n -= r;
-
ptr = buffer
;
- while(
r > 0
) {
-
w = write(outfd, ptr, r - (ptr - buffer)
);
+ n -= r
eadden
;
+
written = 0
;
+ while(
written < readden
) {
+
const ssize_t w = write(outfd, buffer + written, readden - written
);
if(w < 0)
fatal(errno, "write error");
if(w < 0)
fatal(errno, "write error");
-
ptr
+= w;
+
written
+= w;
}
}
}
}
}
}