Skip to content

Commit

Permalink
bundle: put strbuf_readline_fd in strbuf.c with adjustments
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Thomas Rast authored and Junio C Hamano committed Feb 23, 2012
1 parent d0482e8 commit 5e8617f
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 19 deletions.
21 changes: 2 additions & 19 deletions bundle.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,31 +23,14 @@ static void add_to_ref_list(const unsigned char *sha1, const char *name,
list->nr++;
}

/* Eventually this should go to strbuf.[ch] */
static int strbuf_readline_fd(struct strbuf *sb, int fd)
{
strbuf_reset(sb);

while (1) {
char ch;
ssize_t len = xread(fd, &ch, 1);
if (len <= 0)
return len;
strbuf_addch(sb, ch);
if (ch == '\n')
break;
}
return 0;
}

static int parse_bundle_header(int fd, struct bundle_header *header,
const char *report_path)
{
struct strbuf buf = STRBUF_INIT;
int status = 0;

/* The bundle header begins with the signature */
if (strbuf_readline_fd(&buf, fd) ||
if (strbuf_getwholeline_fd(&buf, fd, '\n') ||
strcmp(buf.buf, bundle_signature)) {
if (report_path)
error("'%s' does not look like a v2 bundle file",
Expand All @@ -57,7 +40,7 @@ static int parse_bundle_header(int fd, struct bundle_header *header,
}

/* The bundle header ends with an empty line */
while (!strbuf_readline_fd(&buf, fd) &&
while (!strbuf_getwholeline_fd(&buf, fd, '\n') &&
buf.len && buf.buf[0] != '\n') {
unsigned char sha1[20];
int is_prereq = 0;
Expand Down
16 changes: 16 additions & 0 deletions strbuf.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions strbuf.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ extern int strbuf_readlink(struct strbuf *sb, const char *path, size_t hint);

extern int strbuf_getwholeline(struct strbuf *, FILE *, int);
extern int strbuf_getline(struct strbuf *, FILE *, int);
extern int strbuf_getwholeline_fd(struct strbuf *, int, int);

extern void stripspace(struct strbuf *buf, int skip_comments);
extern int launch_editor(const char *path, struct strbuf *buffer, const char *const *env);
Expand Down

0 comments on commit 5e8617f

Please sign in to comment.