diff options
author | Thomas Rast <trast@student.ethz.ch> | 2012-02-22 20:34:22 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-02-22 18:58:16 -0800 |
commit | 5e8617f560968567c285bc2e9b0674f8f9d535cb (patch) | |
tree | 9d299e020186cfba3d912ac8863954dd9e0a1d98 /strbuf.c | |
parent | d0482e88a735787f7bb33ef4783be0e7f6a70946 (diff) | |
download | git-5e8617f560968567c285bc2e9b0674f8f9d535cb.tar.gz |
bundle: put strbuf_readline_fd in strbuf.c with adjustments
The comment even said that it should eventually go there. While at
it, match the calling convention and name of the function to the
strbuf_get*line family. So it now is strbuf_getwholeline_fd.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'strbuf.c')
-rw-r--r-- | strbuf.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -383,6 +383,22 @@ int strbuf_getline(struct strbuf *sb, FILE *fp, int term) return 0; } +int strbuf_getwholeline_fd(struct strbuf *sb, int fd, int term) +{ + strbuf_reset(sb); + + while (1) { + char ch; + ssize_t len = xread(fd, &ch, 1); + if (len <= 0) + return EOF; + strbuf_addch(sb, ch); + if (ch == term) + break; + } + return 0; +} + int strbuf_read_file(struct strbuf *sb, const char *path, size_t hint) { int fd, len; |