提交 63d564b3 编写于 作者: J Junio C Hamano

read_revision_from_stdin(): use strbuf

It is so 2005 (and Linus ;-) to have a fixed 1000-byte buffer that
reads from the user.  Let's use strbuf to unlimit the input length.
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 3bb18e58
......@@ -955,19 +955,21 @@ int handle_revision_arg(const char *arg, struct rev_info *revs,
void read_revisions_from_stdin(struct rev_info *revs)
{
char line[1000];
struct strbuf sb;
while (fgets(line, sizeof(line), stdin) != NULL) {
int len = strlen(line);
if (len && line[len - 1] == '\n')
line[--len] = '\0';
strbuf_init(&sb, 1000);
while (strbuf_getwholeline(&sb, stdin, '\n') != EOF) {
int len = sb.len;
if (len && sb.buf[len - 1] == '\n')
sb.buf[--len] = '\0';
if (!len)
break;
if (line[0] == '-')
if (sb.buf[0] == '-')
die("options not supported in --stdin mode");
if (handle_revision_arg(line, revs, 0, 1))
die("bad revision '%s'", line);
if (handle_revision_arg(sb.buf, revs, 0, 1))
die("bad revision '%s'", sb.buf);
}
strbuf_release(&sb);
}
static void add_grep(struct rev_info *revs, const char *ptn, enum grep_pat_token what)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册