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>
This commit is contained in:
parent
d0482e88a7
commit
5e8617f560
21
bundle.c
21
bundle.c
@ -23,23 +23,6 @@ static void add_to_ref_list(const unsigned char *sha1, const char *name,
|
|||||||
list->nr++;
|
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,
|
static int parse_bundle_header(int fd, struct bundle_header *header,
|
||||||
const char *report_path)
|
const char *report_path)
|
||||||
{
|
{
|
||||||
@ -47,7 +30,7 @@ static int parse_bundle_header(int fd, struct bundle_header *header,
|
|||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
/* The bundle header begins with the signature */
|
/* 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)) {
|
strcmp(buf.buf, bundle_signature)) {
|
||||||
if (report_path)
|
if (report_path)
|
||||||
error("'%s' does not look like a v2 bundle file",
|
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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* The bundle header ends with an empty line */
|
/* 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') {
|
buf.len && buf.buf[0] != '\n') {
|
||||||
unsigned char sha1[20];
|
unsigned char sha1[20];
|
||||||
int is_prereq = 0;
|
int is_prereq = 0;
|
||||||
|
16
strbuf.c
16
strbuf.c
@ -383,6 +383,22 @@ int strbuf_getline(struct strbuf *sb, FILE *fp, int term)
|
|||||||
return 0;
|
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 strbuf_read_file(struct strbuf *sb, const char *path, size_t hint)
|
||||||
{
|
{
|
||||||
int fd, len;
|
int fd, len;
|
||||||
|
1
strbuf.h
1
strbuf.h
@ -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_getwholeline(struct strbuf *, FILE *, int);
|
||||||
extern int strbuf_getline(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 void stripspace(struct strbuf *buf, int skip_comments);
|
||||||
extern int launch_editor(const char *path, struct strbuf *buffer, const char *const *env);
|
extern int launch_editor(const char *path, struct strbuf *buffer, const char *const *env);
|
||||||
|
Loading…
Reference in New Issue
Block a user