diff options
-rw-r--r-- | disk-utils/mkswap.c | 19 | ||||
-rw-r--r-- | include/Makefile.am | 3 | ||||
-rw-r--r-- | include/writeall.h | 25 |
3 files changed, 28 insertions, 19 deletions
diff --git a/disk-utils/mkswap.c b/disk-utils/mkswap.c index 2bf07ddb2..54951991e 100644 --- a/disk-utils/mkswap.c +++ b/disk-utils/mkswap.c @@ -53,6 +53,7 @@ #include "blkdev.h" #include "pathnames.h" #include "wholedisk.h" +#include "writeall.h" #ifdef HAVE_LIBUUID # ifdef HAVE_UUID_UUID_H @@ -370,24 +371,6 @@ check_mount(void) { return 1; } - -static int -write_all(int fd, const void *buf, size_t count) { - while(count) { - ssize_t tmp; - - errno = 0; - tmp = write(fd, buf, count); - if (tmp > 0) { - count -= tmp; - if (count) - buf += tmp; - } else if (errno != EINTR && errno != EAGAIN) - return -1; - } - return 0; -} - static void zap_bootbits(int fd, const char *devname, int force) { diff --git a/include/Makefile.am b/include/Makefile.am index 65e447d51..067523d7b 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -23,4 +23,5 @@ dist_noinst_HEADERS = \ crc32.h \ mangle.h \ strtosize.h \ - xstrncpy.h + xstrncpy.h \ + writeall.h diff --git a/include/writeall.h b/include/writeall.h new file mode 100644 index 000000000..a04496d8f --- /dev/null +++ b/include/writeall.h @@ -0,0 +1,25 @@ +#ifndef UTIL_LINUX_WRITEALL_H +#define UTIL_LINUX_WRITEALL_H + +#include <string.h> +#include <unistd.h> +#include <errno.h> + +static inline int write_all(int fd, const void *buf, size_t count) +{ + while(count) { + ssize_t tmp; + + errno = 0; + tmp = write(fd, buf, count); + if (tmp > 0) { + count -= tmp; + if (count) + buf += tmp; + } else if (errno != EINTR && errno != EAGAIN) + return -1; + } + return 0; +} + +#endif /* UTIL_LINUX_WRITEALL_H */ |