timestamp_t: a new data type for timestamps
[gitweb.git] / write_or_die.c
index b50f99a9361926d2116c85e3e90a132fb9dab742..eab8c8d0b9aab55c8435b9f451efd81e715131f8 100644 (file)
@@ -1,14 +1,5 @@
 #include "cache.h"
-
-static void check_pipe(int err)
-{
-       if (err == EPIPE) {
-               signal(SIGPIPE, SIG_DFL);
-               raise(SIGPIPE);
-               /* Should never happen, but just in case... */
-               exit(141);
-       }
-}
+#include "run-command.h"
 
 /*
  * Some cases use stdio, but want to flush after the write
@@ -49,40 +40,32 @@ void maybe_flush_or_die(FILE *f, const char *desc)
        }
 }
 
-void fsync_or_die(int fd, const char *msg)
+void fprintf_or_die(FILE *f, const char *fmt, ...)
 {
-       if (fsync(fd) < 0) {
-               die_errno("fsync error on '%s'", msg);
-       }
-}
+       va_list ap;
+       int ret;
 
-void write_or_die(int fd, const void *buf, size_t count)
-{
-       if (write_in_full(fd, buf, count) < 0) {
+       va_start(ap, fmt);
+       ret = vfprintf(f, fmt, ap);
+       va_end(ap);
+
+       if (ret < 0) {
                check_pipe(errno);
                die_errno("write error");
        }
 }
 
-int write_or_whine_pipe(int fd, const void *buf, size_t count, const char *msg)
+void fsync_or_die(int fd, const char *msg)
 {
-       if (write_in_full(fd, buf, count) < 0) {
-               check_pipe(errno);
-               fprintf(stderr, "%s: write error (%s)\n",
-                       msg, strerror(errno));
-               return 0;
+       if (fsync(fd) < 0) {
+               die_errno("fsync error on '%s'", msg);
        }
-
-       return 1;
 }
 
-int write_or_whine(int fd, const void *buf, size_t count, const char *msg)
+void write_or_die(int fd, const void *buf, size_t count)
 {
        if (write_in_full(fd, buf, count) < 0) {
-               fprintf(stderr, "%s: write error (%s)\n",
-                       msg, strerror(errno));
-               return 0;
+               check_pipe(errno);
+               die_errno("write error");
        }
-
-       return 1;
 }