diff options
| author | Karel Klic <kklic@redhat.com> | 2010-08-19 10:47:02 +0200 |
|---|---|---|
| committer | Karel Klic <kklic@redhat.com> | 2010-08-19 10:47:02 +0200 |
| commit | 8bffa57699aa266b4710c56f0a12bec741a7dd5b (patch) | |
| tree | 8d502f84819ddd17905d921520151d0ceeb11dde /lib | |
| parent | 848495a981cbdaab2f9eb59ca392442c15d538e3 (diff) | |
| download | abrt-8bffa57699aa266b4710c56f0a12bec741a7dd5b.tar.gz abrt-8bffa57699aa266b4710c56f0a12bec741a7dd5b.tar.xz abrt-8bffa57699aa266b4710c56f0a12bec741a7dd5b.zip | |
needs logging.h -> include it
synchronize the order of functions with the header file
fix indentation
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/utils/read_write.c | 148 |
1 files changed, 78 insertions, 70 deletions
diff --git a/lib/utils/read_write.c b/lib/utils/read_write.c index 3f2133e6..1a3e589d 100644 --- a/lib/utils/read_write.c +++ b/lib/utils/read_write.c @@ -5,90 +5,98 @@ */ #include "read_write.h" - -ssize_t safe_read(int fd, void *buf, size_t count) -{ - ssize_t n; - - do { - n = read(fd, buf, count); - } while (n < 0 && errno == EINTR); - - return n; -} - -ssize_t full_read(int fd, void *buf, size_t len) -{ - ssize_t cc; - ssize_t total; - - total = 0; - - while (len) { - cc = safe_read(fd, buf, len); - - if (cc < 0) { - if (total) { - /* we already have some! */ - /* user can do another read to know the error code */ - return total; - } - return cc; /* read() returns -1 on failure. */ - } - if (cc == 0) - break; - buf = ((char *)buf) + cc; - total += cc; - len -= cc; - } - - return total; -} +#include "logging.h" /* Die with an error message if we can't read the entire buffer. */ void xread(int fd, void *buf, size_t count) { - if (count) { - ssize_t size = full_read(fd, buf, count); - if ((size_t)size != count) - error_msg_and_die("short read"); - } + if (count) + { + ssize_t size = full_read(fd, buf, count); + if ((size_t)size != count) + error_msg_and_die("short read"); + } } -ssize_t safe_write(int fd, const void *buf, size_t count) +ssize_t safe_read(int fd, void *buf, size_t count) { - ssize_t n; + ssize_t n; - do { - n = write(fd, buf, count); - } while (n < 0 && errno == EINTR); + do { + n = read(fd, buf, count); + } while (n < 0 && errno == EINTR); - return n; + return n; } -ssize_t full_write(int fd, const void *buf, size_t len) +ssize_t safe_write(int fd, const void *buf, size_t count) { - ssize_t cc; - ssize_t total; + ssize_t n; - total = 0; + do { + n = write(fd, buf, count); + } while (n < 0 && errno == EINTR); - while (len) { - cc = safe_write(fd, buf, len); - - if (cc < 0) { - if (total) { - /* we already wrote some! */ - /* user can do another write to know the error code */ - return total; - } - return cc; /* write() returns -1 on failure. */ - } + return n; +} - total += cc; - buf = ((const char *)buf) + cc; - len -= cc; - } +ssize_t full_read(int fd, void *buf, size_t len) +{ + ssize_t cc; + ssize_t total; + + total = 0; + + while (len) + { + cc = safe_read(fd, buf, len); + + if (cc < 0) + { + if (total) + { + /* we already have some! */ + /* user can do another read to know the error code */ + return total; + } + return cc; /* read() returns -1 on failure. */ + } + if (cc == 0) + break; + buf = ((char *)buf) + cc; + total += cc; + len -= cc; + } + + return total; +} - return total; +ssize_t full_write(int fd, const void *buf, size_t len) +{ + ssize_t cc; + ssize_t total; + + total = 0; + + while (len) + { + cc = safe_write(fd, buf, len); + + if (cc < 0) + { + if (total) + { + /* we already wrote some! */ + /* user can do another write to know the error code */ + return total; + } + return cc; /* write() returns -1 on failure. */ + } + + total += cc; + buf = ((const char *)buf) + cc; + len -= cc; + } + + return total; } |
