Drop strbuf's 'eof' marker, and make read_line a first class citizen.
read_line is now strbuf_getline, and is a first class citizen, it returns 0 when reading a line worked, EOF else. The ->eof marker was used non-locally by fast-import.c, mimic the same behaviour using a static int in "read_next_command", that now returns -1 on EOF, and avoids to call strbuf_getline when it's in EOF state. Also no longer automagically strbuf_release the buffer, it's counter intuitive and breaks fast-import in a very subtle way. Note: being at EOF implies that command_buf.len == 0. Signed-off-by: Pierre Habouzit <madcoder@debian.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
8b6087fb25
commit
e6c019d0b0
4
fetch.c
4
fetch.c
@ -222,8 +222,7 @@ int pull_targets_stdin(char ***target, const char ***write_ref)
|
||||
char *rf_one = NULL;
|
||||
char *tg_one;
|
||||
|
||||
read_line(&buf, stdin, '\n');
|
||||
if (buf.eof)
|
||||
if (strbuf_getline(&buf, stdin, '\n') == EOF)
|
||||
break;
|
||||
tg_one = buf.buf;
|
||||
rf_one = strchr(tg_one, '\t');
|
||||
@ -239,6 +238,7 @@ int pull_targets_stdin(char ***target, const char ***write_ref)
|
||||
(*write_ref)[targets] = rf_one ? xstrdup(rf_one) : NULL;
|
||||
targets++;
|
||||
}
|
||||
strbuf_release(&buf);
|
||||
return targets;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user