From eea369b089a93a0d41e671d4122e213b80d136e7 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Wed, 18 Feb 2004 04:41:56 +0000 Subject: [PATCH] rewrote the W*all() function to accept an additional argument holding the error, instead of giving out the error git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@933 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- util-vserver/ensc_wrappers/wrappers-io.hc | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/util-vserver/ensc_wrappers/wrappers-io.hc b/util-vserver/ensc_wrappers/wrappers-io.hc index ddfa392..3b212e6 100644 --- a/util-vserver/ensc_wrappers/wrappers-io.hc +++ b/util-vserver/ensc_wrappers/wrappers-io.hc @@ -23,19 +23,19 @@ #include inline static UNUSED bool -WwriteAll(int fd, void const *ptr_v, size_t len) +WwriteAll(int fd, void const *ptr_v, size_t len, int *err) { register char const *ptr = ptr_v; + if (err) *err = 0; + while (len>0) { - size_t res = TEMP_FAILURE_RETRY(write(fd, ptr, len)); - if (res==(size_t)-1) { - perror("write()"); + ssize_t res = TEMP_FAILURE_RETRY(write(fd, ptr, len)); + if (res<=0) { + if (err) *err = errno; return false; } - if (res==0) return false; - ptr += res; len -= res; } @@ -58,14 +58,16 @@ EwriteAll(int fd, void const *ptr_v, size_t len) inline static UNUSED bool -WreadAll(int fd, void *ptr_v, size_t len) +WreadAll(int fd, void *ptr_v, size_t len, int *err) { register char *ptr = ptr_v; - + + if (err) *err = 0; + while (len>0) { - size_t res = TEMP_FAILURE_RETRY(read(fd, ptr, len)); - if (res==(size_t)-1) { - perror("read()"); + ssize_t res = TEMP_FAILURE_RETRY(read(fd, ptr, len)); + if (res==-1) { + if (err) *err = errno; return false; } -- 1.8.1.5