Browse Source

Merge branch 'ms/maint-config-error-at-eol-linecount' into maint

* ms/maint-config-error-at-eol-linecount:
  config: report errors at the EOL with correct line number
maint
Junio C Hamano 13 years ago
parent
commit
ed6ce4382b
  1. 13
      config.c
  2. 31
      t/t1300-repo-config.sh

13
config.c

@ -135,8 +135,10 @@ static char *parse_value(void) @@ -135,8 +135,10 @@ static char *parse_value(void)
for (;;) {
int c = get_next_char();
if (c == '\n') {
if (quote)
if (quote) {
cf->linenr--;
return NULL;
}
return cf->value.buf;
}
if (comment)
@ -226,7 +228,7 @@ static int get_extended_base_var(char *name, int baselen, int c) @@ -226,7 +228,7 @@ static int get_extended_base_var(char *name, int baselen, int c)
{
do {
if (c == '\n')
return -1;
goto error_incomplete_line;
c = get_next_char();
} while (isspace(c));

@ -238,13 +240,13 @@ static int get_extended_base_var(char *name, int baselen, int c) @@ -238,13 +240,13 @@ static int get_extended_base_var(char *name, int baselen, int c)
for (;;) {
int c = get_next_char();
if (c == '\n')
return -1;
goto error_incomplete_line;
if (c == '"')
break;
if (c == '\\') {
c = get_next_char();
if (c == '\n')
return -1;
goto error_incomplete_line;
}
name[baselen++] = c;
if (baselen > MAXNAME / 2)
@ -255,6 +257,9 @@ static int get_extended_base_var(char *name, int baselen, int c) @@ -255,6 +257,9 @@ static int get_extended_base_var(char *name, int baselen, int c)
if (get_next_char() != ']')
return -1;
return baselen;
error_incomplete_line:
cf->linenr--;
return -1;
}

static int get_base_var(char *name)

31
t/t1300-repo-config.sh

@ -960,4 +960,35 @@ test_expect_success 'git -c complains about empty key and value' ' @@ -960,4 +960,35 @@ test_expect_success 'git -c complains about empty key and value' '
test_must_fail git -c "" rev-parse
'

# malformed configuration files
test_expect_success 'barf on syntax error' '
cat >.git/config <<-\EOF &&
# broken section line
[section]
key garbage
EOF
test_must_fail git config --get section.key >actual 2>error &&
grep " line 3 " error
'

test_expect_success 'barf on incomplete section header' '
cat >.git/config <<-\EOF &&
# broken section line
[section
key = value
EOF
test_must_fail git config --get section.key >actual 2>error &&
grep " line 2 " error
'

test_expect_success 'barf on incomplete string' '
cat >.git/config <<-\EOF &&
# broken section line
[section]
key = "value string
EOF
test_must_fail git config --get section.key >actual 2>error &&
grep " line 3 " error
'

test_done

Loading…
Cancel
Save