diff options
author | Jiang Xin <worldhello.net@gmail.com> | 2012-04-28 15:54:37 +0800 |
---|---|---|
committer | Jiang Xin <worldhello.net@gmail.com> | 2012-04-28 15:54:37 +0800 |
commit | 69c835701b507e336fd5354f9f3b05e42d20c07d (patch) | |
tree | cc6b079231ddc1ab3e04654cbdf8937ef0d6632b /entry.c | |
parent | 01b127cdc5d596a3022d834d82f883822c7f166b (diff) | |
parent | 62bc83349d52be49b037d2c800a7f4064cfbc5b5 (diff) | |
download | git-69c835701b507e336fd5354f9f3b05e42d20c07d.tar.gz git-69c835701b507e336fd5354f9f3b05e42d20c07d.tar.xz |
Merge master branch for tracking l10n updates of next release
Use master branch to track l10n updates for git next release, while
use maint branch to track l10n updates for git stable version.
Diffstat (limited to 'entry.c')
-rw-r--r-- | entry.c | 53 |
1 files changed, 5 insertions, 48 deletions
@@ -120,58 +120,15 @@ static int streaming_write_entry(struct cache_entry *ce, char *path, const struct checkout *state, int to_tempfile, int *fstat_done, struct stat *statbuf) { - struct git_istream *st; - enum object_type type; - unsigned long sz; int result = -1; - ssize_t kept = 0; - int fd = -1; - - st = open_istream(ce->sha1, &type, &sz, filter); - if (!st) - return -1; - if (type != OBJ_BLOB) - goto close_and_exit; + int fd; fd = open_output_fd(path, ce, to_tempfile); - if (fd < 0) - goto close_and_exit; - - for (;;) { - char buf[1024 * 16]; - ssize_t wrote, holeto; - ssize_t readlen = read_istream(st, buf, sizeof(buf)); - - if (!readlen) - break; - if (sizeof(buf) == readlen) { - for (holeto = 0; holeto < readlen; holeto++) - if (buf[holeto]) - break; - if (readlen == holeto) { - kept += holeto; - continue; - } - } - - if (kept && lseek(fd, kept, SEEK_CUR) == (off_t) -1) - goto close_and_exit; - else - kept = 0; - wrote = write_in_full(fd, buf, readlen); - - if (wrote != readlen) - goto close_and_exit; - } - if (kept && (lseek(fd, kept - 1, SEEK_CUR) == (off_t) -1 || - write(fd, "", 1) != 1)) - goto close_and_exit; - *fstat_done = fstat_output(fd, state, statbuf); - -close_and_exit: - close_istream(st); - if (0 <= fd) + if (0 <= fd) { + result = stream_blob_to_fd(fd, ce->sha1, filter, 1); + *fstat_done = fstat_output(fd, state, statbuf); result = close(fd); + } if (result && 0 <= fd) unlink(path); return result; |