summaryrefslogtreecommitdiff
path: root/util/sbase/libutil/writeall.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/sbase/libutil/writeall.c')
-rw-r--r--util/sbase/libutil/writeall.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/util/sbase/libutil/writeall.c b/util/sbase/libutil/writeall.c
new file mode 100644
index 00000000..4725ced8
--- /dev/null
+++ b/util/sbase/libutil/writeall.c
@@ -0,0 +1,21 @@
+/* See LICENSE file for copyright and license details. */
+#include <unistd.h>
+
+#include "../util.h"
+
+ssize_t
+writeall(int fd, const void *buf, size_t len)
+{
+ const char *p = buf;
+ ssize_t n;
+
+ while (len) {
+ n = write(fd, p, len);
+ if (n <= 0)
+ return n;
+ p += n;
+ len -= n;
+ }
+
+ return p - (const char *)buf;
+}