summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--disk-utils/mkswap.c19
-rw-r--r--include/Makefile.am3
-rw-r--r--include/writeall.h25
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 */