diff options
author | Patrick Steinhardt <ps@pks.im> | 2020-03-30 16:46:27 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-03-30 20:34:11 +0300 |
commit | bd021f39103fab4c5ae53a4d1a1756f8970d00db (patch) | |
tree | aaa9e1fca96f72bfc63acfe48447ee6df79a881b /strbuf.c | |
parent | faa35eec4d119e9d4faa25d10a2b00029d8f1bdb (diff) |
strbuf: provide function to append whole lines
While the strbuf interface already provides functions to read a line
into it that completely replaces its current contents, we do not have an
interface that allows for appending lines without discarding current
contents.
Add a new function `strbuf_appendwholeline` that reads a line including
its terminating character into a strbuf non-destructively. This is a
preparatory step for git-update-ref(1) reading standard input line-wise
instead of as a block.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'strbuf.c')
-rw-r--r-- | strbuf.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -690,6 +690,16 @@ int strbuf_getwholeline(struct strbuf *sb, FILE *fp, int term) } #endif +int strbuf_appendwholeline(struct strbuf *sb, FILE *fp, int term) +{ + struct strbuf line = STRBUF_INIT; + if (strbuf_getwholeline(&line, fp, term)) + return EOF; + strbuf_addbuf(sb, &line); + strbuf_release(&line); + return 0; +} + static int strbuf_getdelim(struct strbuf *sb, FILE *fp, int term) { if (strbuf_getwholeline(sb, fp, term)) |