summaryrefslogtreecommitdiff
path: root/strbuf.c
diff options
context:
space:
mode:
authorThomas Rast <trast@student.ethz.ch>2012-02-22 19:34:22 (GMT)
committerJunio C Hamano <gitster@pobox.com>2012-02-23 02:58:16 (GMT)
commit5e8617f560968567c285bc2e9b0674f8f9d535cb (patch)
tree9d299e020186cfba3d912ac8863954dd9e0a1d98 /strbuf.c
parentd0482e88a735787f7bb33ef4783be0e7f6a70946 (diff)
downloadgit-5e8617f560968567c285bc2e9b0674f8f9d535cb.zip
git-5e8617f560968567c285bc2e9b0674f8f9d535cb.tar.gz
git-5e8617f560968567c285bc2e9b0674f8f9d535cb.tar.bz2
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.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/strbuf.c b/strbuf.c
index 3ad2cc0..692cf1b 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -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;