summaryrefslogtreecommitdiff
path: root/merge-recursive.c
diff options
context:
space:
mode:
authorThomas Rast <trast@student.ethz.ch>2012-08-03 12:16:25 (GMT)
committerJunio C Hamano <gitster@pobox.com>2012-08-03 19:13:43 (GMT)
commitf633ea2c736a2a38e92fcf61e90c8adadc5c504d (patch)
treee92dee05f75ed994ea95322cc9dfcb75cc8c6aa0 /merge-recursive.c
parentd0f1ea6003d97e63110fa7d50bb07f546a909b6e (diff)
downloadgit-f633ea2c736a2a38e92fcf61e90c8adadc5c504d.zip
git-f633ea2c736a2a38e92fcf61e90c8adadc5c504d.tar.gz
git-f633ea2c736a2a38e92fcf61e90c8adadc5c504d.tar.bz2
merge-recursive: eliminate flush_buffer() in favor of write_in_full()
flush_buffer() is a thin wrapper around write_in_full() with two very confusing properties: * It runs a loop to handle short reads, ensuring that we write everything. But that is precisely what write_in_full() does! * It checks for a return value of 0 from write_in_full(), which cannot happen: it returns this value only if count=0, but flush_buffer() will never call write_in_full() in this case. Remove it. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-recursive.c')
-rw-r--r--merge-recursive.c19
1 files changed, 1 insertions, 18 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index d83cd6c..eed936e 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -613,23 +613,6 @@ static char *unique_path(struct merge_options *o, const char *path, const char *
return newpath;
}
-static void flush_buffer(int fd, const char *buf, unsigned long size)
-{
- while (size > 0) {
- long ret = write_in_full(fd, buf, size);
- if (ret < 0) {
- /* Ignore epipe */
- if (errno == EPIPE)
- break;
- die_errno("merge-recursive");
- } else if (!ret) {
- die("merge-recursive: disk full?");
- }
- size -= ret;
- buf += ret;
- }
-}
-
static int dir_in_way(const char *path, int check_working_copy)
{
int pos, pathlen = strlen(path);
@@ -788,7 +771,7 @@ static void update_file_flags(struct merge_options *o,
fd = open(path, O_WRONLY | O_TRUNC | O_CREAT, mode);
if (fd < 0)
die_errno("failed to open '%s'", path);
- flush_buffer(fd, buf, size);
+ write_in_full(fd, buf, size);
close(fd);
} else if (S_ISLNK(mode)) {
char *lnk = xmemdupz(buf, size);