Browse Source

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>
maint
Thomas Rast 13 years ago committed by Junio C Hamano
parent
commit
5e8617f560
  1. 21
      bundle.c
  2. 16
      strbuf.c
  3. 1
      strbuf.h

21
bundle.c

@ -23,23 +23,6 @@ static void add_to_ref_list(const unsigned char *sha1, const char *name, @@ -23,23 +23,6 @@ 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)
{
@ -47,7 +30,7 @@ static int parse_bundle_header(int fd, struct bundle_header *header, @@ -47,7 +30,7 @@ static int parse_bundle_header(int fd, struct bundle_header *header,
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",
@ -57,7 +40,7 @@ static int parse_bundle_header(int fd, struct bundle_header *header, @@ -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;

16
strbuf.c

@ -383,6 +383,22 @@ int strbuf_getline(struct strbuf *sb, FILE *fp, int term) @@ -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;

1
strbuf.h

@ -108,6 +108,7 @@ extern int strbuf_readlink(struct strbuf *sb, const char *path, size_t hint); @@ -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);

Loading…
Cancel
Save