]> git.ipfire.org Git - thirdparty/util-linux.git/blobdiff - include/all-io.h
build-sys: add missing LDADD to blkid test
[thirdparty/util-linux.git] / include / all-io.h
index 2546cff1bed83c90b006cbdef5e948d44ece3aa2..8ffa9cfb110722d48493404b9035df3732c360e4 100644 (file)
@@ -25,7 +25,7 @@ static inline int write_all(int fd, const void *buf, size_t count)
                if (tmp > 0) {
                        count -= tmp;
                        if (count)
-                               buf = (void *) ((char *) buf + tmp);
+                               buf = (const void *) ((const char *) buf + tmp);
                } else if (errno != EINTR && errno != EAGAIN)
                        return -1;
                if (errno == EAGAIN)    /* Try later, *sigh* */
@@ -45,7 +45,7 @@ static inline int fwrite_all(const void *ptr, size_t size,
                if (tmp > 0) {
                        nmemb -= tmp;
                        if (nmemb)
-                               ptr = (void *) ((char *) ptr + (tmp * size));
+                               ptr = (const void *) ((const char *) ptr + (tmp * size));
                } else if (errno != EINTR && errno != EAGAIN)
                        return -1;
                if (errno == EAGAIN)    /* Try later, *sigh* */
@@ -64,15 +64,13 @@ static inline ssize_t read_all(int fd, char *buf, size_t count)
        while (count > 0) {
                ret = read(fd, buf, count);
                if (ret <= 0) {
-                       if ((errno == EAGAIN || errno == EINTR || ret == 0) &&
-                           (tries++ < 5)) {
+                       if (ret < 0 && (errno == EAGAIN || errno == EINTR) && (tries++ < 5)) {
                                xusleep(250000);
                                continue;
                        }
                        return c ? c : -1;
                }
-               if (ret > 0)
-                       tries = 0;
+               tries = 0;
                count -= ret;
                buf += ret;
                c += ret;
@@ -80,5 +78,4 @@ static inline ssize_t read_all(int fd, char *buf, size_t count)
        return c;
 }
 
-
 #endif /* UTIL_LINUX_ALL_IO_H */