Merge branch 'ef/mingw-write'
authorJunio C Hamano <gitster@pobox.com>
Mon, 27 Jan 2014 18:44:59 +0000 (10:44 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Jan 2014 18:44:59 +0000 (10:44 -0800)
* ef/mingw-write:
mingw: remove mingw_write
prefer xwrite instead of write

builtin/merge.c
compat/mingw.c
compat/mingw.h
streaming.c
transport-helper.c
index 4941a6c36ab215fdb709ac58a3aea69218025dbb..e576a7fdc619303a65e859920a1ab6936db2626c 100644 (file)
@@ -367,7 +367,7 @@ static void squash_message(struct commit *commit, struct commit_list *remotehead
                        sha1_to_hex(commit->object.sha1));
                pretty_print_commit(&ctx, commit, &out);
        }
-       if (write(fd, out.buf, out.len) < 0)
+       if (write_in_full(fd, out.buf, out.len) != out.len)
                die_errno(_("Writing SQUASH_MSG"));
        if (close(fd))
                die_errno(_("Finishing SQUASH_MSG"));
index fecb98bcff74d2cbcb56e8f9f56d1f3b06339469..e9892f8ee48db4739321d37726cff63dec8c0f13 100644 (file)
@@ -304,23 +304,6 @@ int mingw_open (const char *filename, int oflags, ...)
        return fd;
 }
 
-#undef write
-ssize_t mingw_write(int fd, const void *buf, size_t count)
-{
-       /*
-        * While write() calls to a file on a local disk are translated
-        * into WriteFile() calls with a maximum size of 64KB on Windows
-        * XP and 256KB on Vista, no such cap is placed on writes to
-        * files over the network on Windows XP.  Unfortunately, there
-        * seems to be a limit of 32MB-28KB on X64 and 64MB-32KB on x86;
-        * bigger writes fail on Windows XP.
-        * So we cap to a nice 31MB here to avoid write failures over
-        * the net without changing the number of WriteFile() calls in
-        * the local case.
-        */
-       return write(fd, buf, min(count, 31 * 1024 * 1024));
-}
-
 static BOOL WINAPI ctrl_ignore(DWORD type)
 {
        return TRUE;
index 92cd728d3db2e3a21650d28f044ea4f59c2673e4..e033e720c900c430a0a74b0223522c396cb66629 100644 (file)
@@ -180,9 +180,6 @@ int mingw_rmdir(const char *path);
 int mingw_open (const char *filename, int oflags, ...);
 #define open mingw_open
 
-ssize_t mingw_write(int fd, const void *buf, size_t count);
-#define write mingw_write
-
 int mingw_fgetc(FILE *stream);
 #define fgetc mingw_fgetc
 
index 9659f18be263a3412a2f3e5d13eb4f4bcd25cee3..d7c9f32f0ce98112ddd4d4a8499b227b181e09e6 100644 (file)
@@ -538,7 +538,7 @@ int stream_blob_to_fd(int fd, unsigned const char *sha1, struct stream_filter *f
                        goto close_and_exit;
        }
        if (kept && (lseek(fd, kept - 1, SEEK_CUR) == (off_t) -1 ||
-                    write(fd, "", 1) != 1))
+                    xwrite(fd, "", 1) != 1))
                goto close_and_exit;
        result = 0;
 
index 087f617d39d79be946bdd60c05890eda28c9675c..ad72fbd53cb7bfc7fc037d98288b0cc831ea949a 100644 (file)
@@ -1135,9 +1135,8 @@ static int udt_do_write(struct unidirectional_transfer *t)
                return 0;       /* Nothing to write. */
 
        transfer_debug("%s is writable", t->dest_name);
-       bytes = write(t->dest, t->buf, t->bufuse);
-       if (bytes < 0 && errno != EWOULDBLOCK && errno != EAGAIN &&
-               errno != EINTR) {
+       bytes = xwrite(t->dest, t->buf, t->bufuse);
+       if (bytes < 0 && errno != EWOULDBLOCK) {
                error("write(%s) failed: %s", t->dest_name, strerror(errno));
                return -1;
        } else if (bytes > 0) {