column: fix parsing of the '--nl' option
'git column's '--nl' option can be used to specify a "string to be printed at the end of each line" (quoting the man page), but this option and its mandatory argument has been parsed as OPT_INTEGER since the introduction of the command in 7e29b8254f (Add column layout skeleton and git-column, 2012-04-21). Consequently, any non-number argument is rejected by parse-options, and any number other than 0 leads to segfault: $ printf "%s\n" one two |git column --mode=plain --nl=foo error: option `nl' expects a numerical value $ printf "%s\n" one two |git column --mode=plain --nl=42 Segmentation fault (core dumped) $ printf "%s\n" one two |git column --mode=plain --nl=0 one two Parse this option as OPT_STRING. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
225bc32a98
commit
c93ca46cf5
@ -39,7 +39,7 @@ OPTIONS
|
|||||||
--indent=<string>::
|
--indent=<string>::
|
||||||
String to be printed at the beginning of each line.
|
String to be printed at the beginning of each line.
|
||||||
|
|
||||||
--nl=<N>::
|
--nl=<string>::
|
||||||
String to be printed at the end of each line,
|
String to be printed at the end of each line,
|
||||||
including newline character.
|
including newline character.
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ int cmd_column(int argc, const char **argv, const char *prefix)
|
|||||||
OPT_INTEGER(0, "raw-mode", &colopts, N_("layout to use")),
|
OPT_INTEGER(0, "raw-mode", &colopts, N_("layout to use")),
|
||||||
OPT_INTEGER(0, "width", &copts.width, N_("maximum width")),
|
OPT_INTEGER(0, "width", &copts.width, N_("maximum width")),
|
||||||
OPT_STRING(0, "indent", &copts.indent, N_("string"), N_("padding space on left border")),
|
OPT_STRING(0, "indent", &copts.indent, N_("string"), N_("padding space on left border")),
|
||||||
OPT_INTEGER(0, "nl", &copts.nl, N_("padding space on right border")),
|
OPT_STRING(0, "nl", &copts.nl, N_("string"), N_("padding space on right border")),
|
||||||
OPT_INTEGER(0, "padding", &copts.padding, N_("padding space between columns")),
|
OPT_INTEGER(0, "padding", &copts.padding, N_("padding space between columns")),
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
@ -42,6 +42,24 @@ EOF
|
|||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success '--nl' '
|
||||||
|
cat >expected <<\EOF &&
|
||||||
|
oneZ
|
||||||
|
twoZ
|
||||||
|
threeZ
|
||||||
|
fourZ
|
||||||
|
fiveZ
|
||||||
|
sixZ
|
||||||
|
sevenZ
|
||||||
|
eightZ
|
||||||
|
nineZ
|
||||||
|
tenZ
|
||||||
|
elevenZ
|
||||||
|
EOF
|
||||||
|
git column --nl="Z$LF" --mode=plain <lista >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success '80 columns' '
|
test_expect_success '80 columns' '
|
||||||
cat >expected <<\EOF &&
|
cat >expected <<\EOF &&
|
||||||
one two three four five six seven eight nine ten eleven
|
one two three four five six seven eight nine ten eleven
|
||||||
|
Loading…
x
Reference in New Issue
Block a user