Move kernelcompat.h to include/ust/ and share.h, usterr.h to include/
[ust.git] / include / share.h
diff --git a/include/share.h b/include/share.h
new file mode 100644 (file)
index 0000000..f674f31
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef UST_SHARE_H
+#define UST_SHARE_H
+
+#include <unistd.h>
+#include <errno.h>
+
+/* This write is patient because it restarts if it was incomplete.
+ */
+
+static inline ssize_t patient_write(int fd, const void *buf, size_t count)
+{
+       const char *bufc = (const char *) buf;
+       int result;
+
+       for(;;) {
+               result = write(fd, bufc, count);
+               if(result == -1 && errno == EINTR) {
+                       continue;
+               }
+               if(result <= 0) {
+                       return result;
+               }
+               count -= result;
+               bufc += result;
+
+               if(count == 0) {
+                       break;
+               }
+       }
+
+       return bufc-(const char *)buf;
+}
+
+#endif /* UST_SHARE_H */
This page took 0.022369 seconds and 4 git commands to generate.