diff options
Diffstat (limited to 'libinstaller/syslxcom.c')
-rw-r--r-- | libinstaller/syslxcom.c | 64 |
1 files changed, 1 insertions, 63 deletions
diff --git a/libinstaller/syslxcom.c b/libinstaller/syslxcom.c index 57f13cda..efc6474d 100644 --- a/libinstaller/syslxcom.c +++ b/libinstaller/syslxcom.c @@ -32,6 +32,7 @@ #include <sys/vfs.h> #include "linuxioctl.h" +#include "syslxrw.h" #include "syslxcom.h" #include "syslxfs.h" @@ -47,69 +48,6 @@ int fs_type; #define SECTOR_SHIFT 9 -static void die(const char *msg) -{ - fputs(msg, stderr); - exit(1); -} - -/* - * read/write wrapper functions - */ -ssize_t xpread(int fd, void *buf, size_t count, off_t offset) -{ - char *bufp = (char *)buf; - ssize_t rv; - ssize_t done = 0; - - while (count) { - rv = pread(fd, bufp, count, offset); - if (rv == 0) { - die("short read"); - } else if (rv == -1) { - if (errno == EINTR) { - continue; - } else { - die(strerror(errno)); - } - } else { - bufp += rv; - offset += rv; - done += rv; - count -= rv; - } - } - - return done; -} - -ssize_t xpwrite(int fd, const void *buf, size_t count, off_t offset) -{ - const char *bufp = (const char *)buf; - ssize_t rv; - ssize_t done = 0; - - while (count) { - rv = pwrite(fd, bufp, count, offset); - if (rv == 0) { - die("short write"); - } else if (rv == -1) { - if (errno == EINTR) { - continue; - } else { - die(strerror(errno)); - } - } else { - bufp += rv; - offset += rv; - done += rv; - count -= rv; - } - } - - return done; -} - /* * Set and clear file attributes */ |