]> wimlib.net Git - wimlib/blobdiff - src/file_io.c
Do not use read() and write() from MSVCRT
[wimlib] / src / file_io.c
index 3176ce6f64d4ba6e15c4ec6349f55b80be6468ef..8fbd01f9669040b9b1dcf6f5abe2ad9e81478208 100644 (file)
 #include "wimlib/error.h"
 #include "wimlib/file_io.h"
 #include "wimlib/util.h"
-#include "wimlib/win32.h" /* For pread(), pwrite() replacements */
+
+#ifdef __WIN32__
+#  include "wimlib/win32.h"
+#  define read win32_read
+#  define write win32_write
+#  define pread win32_pread
+#  define pwrite win32_pwrite
+#endif
 
 /*
  * Wrapper around read() that checks for errors and keeps retrying until all
@@ -38,7 +45,7 @@
  * Return values:
  *     WIMLIB_ERR_SUCCESS                      (0)
  *     WIMLIB_ERR_READ                         (errno set)
- *     WIMLIB_ERR_UNEXPECTED_END_OF_FILE       (errno set to 0)
+ *     WIMLIB_ERR_UNEXPECTED_END_OF_FILE       (errno set to EINVAL)
  */
 int
 full_read(struct filedes *fd, void *buf, size_t count)
@@ -47,7 +54,7 @@ full_read(struct filedes *fd, void *buf, size_t count)
                ssize_t ret = read(fd->fd, buf, count);
                if (unlikely(ret <= 0)) {
                        if (ret == 0) {
-                               errno = 0;
+                               errno = EINVAL;
                                return WIMLIB_ERR_UNEXPECTED_END_OF_FILE;
                        }
                        if (errno == EINTR)
@@ -100,7 +107,7 @@ pipe_read(struct filedes *fd, void *buf, size_t count, off_t offset)
  * Return values:
  *     WIMLIB_ERR_SUCCESS                      (0)
  *     WIMLIB_ERR_READ                         (errno set)
- *     WIMLIB_ERR_UNEXPECTED_END_OF_FILE       (errno set to 0)
+ *     WIMLIB_ERR_UNEXPECTED_END_OF_FILE       (errno set to EINVAL)
  *     WIMLIB_ERR_RESOURCE_ORDER               (errno set to ESPIPE)
  */
 int
@@ -113,7 +120,7 @@ full_pread(struct filedes *fd, void *buf, size_t count, off_t offset)
                ssize_t ret = pread(fd->fd, buf, count, offset);
                if (unlikely(ret <= 0)) {
                        if (ret == 0) {
-                               errno = 0;
+                               errno = EINVAL;
                                return WIMLIB_ERR_UNEXPECTED_END_OF_FILE;
                        }
                        if (errno == EINTR)
@@ -185,18 +192,6 @@ full_pwrite(struct filedes *fd, const void *buf, size_t count, off_t offset)
        return 0;
 }
 
-ssize_t
-raw_pread(struct filedes *fd, void *buf, size_t count, off_t offset)
-{
-       return pread(fd->fd, buf, count, offset);
-}
-
-ssize_t
-raw_pwrite(struct filedes *fd, const void *buf, size_t count, off_t offset)
-{
-       return pwrite(fd->fd, buf, count, offset);
-}
-
 off_t filedes_seek(struct filedes *fd, off_t offset)
 {
        if (fd->is_pipe) {