OSDN Git Service

check-attr: there are only two possible line terminations
authorJunio C Hamano <gitster@pobox.com>
Thu, 14 Jan 2016 21:26:20 +0000 (13:26 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 15 Jan 2016 18:12:58 +0000 (10:12 -0800)
The program by default reads LF terminated lines, with an option to
use NUL terminated records.  Instead of pretending that there can be
other useful values for line_termination, use a boolean variable,
nul_term_line, to tell if NUL terminated records are used, and
switch between strbuf_getline_{lf,nul} based on it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/check-attr.c

index 265c9ba..087325e 100644 (file)
@@ -73,12 +73,13 @@ static void check_attr_stdin_paths(const char *prefix, int cnt,
        struct git_attr_check *check)
 {
        struct strbuf buf, nbuf;
-       int line_termination = nul_term_line ? 0 : '\n';
+       strbuf_getline_fn getline_fn;
 
+       getline_fn = nul_term_line ? strbuf_getline_nul : strbuf_getline_lf;
        strbuf_init(&buf, 0);
        strbuf_init(&nbuf, 0);
-       while (strbuf_getline(&buf, stdin, line_termination) != EOF) {
-               if (line_termination && buf.buf[0] == '"') {
+       while (getline_fn(&buf, stdin) != EOF) {
+               if (!nul_term_line && buf.buf[0] == '"') {
                        strbuf_reset(&nbuf);
                        if (unquote_c_style(&nbuf, buf.buf, NULL))
                                die("line is badly quoted");