diff options
-rw-r--r-- | builtin-fetch--tool.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/builtin-fetch--tool.c b/builtin-fetch--tool.c index e9d16e6315..5301c3cb78 100644 --- a/builtin-fetch--tool.c +++ b/builtin-fetch--tool.c @@ -2,17 +2,24 @@ #include "refs.h" #include "commit.h" -#define CHUNK_SIZE (1048576) +#define CHUNK_SIZE 1024 static char *get_stdin(void) { + int offset = 0; char *data = xmalloc(CHUNK_SIZE); - int offset = 0, read = 0; - read = xread(0, data, CHUNK_SIZE); - while (read == CHUNK_SIZE) { - offset += CHUNK_SIZE; + + while (1) { + int cnt = xread(0, data + offset, CHUNK_SIZE); + if (cnt < 0) + die("error reading standard input: %s", + strerror(errno)); + if (cnt == 0) { + data[offset] = 0; + break; + } + offset += cnt; data = xrealloc(data, offset + CHUNK_SIZE); - read = xread(0, data + offset, CHUNK_SIZE); } return data; } |