]> git.ipfire.org Git - thirdparty/git.git/commitdiff
column: fix parsing of the '--nl' option
authorSZEDER Gábor <szeder.dev@gmail.com>
Wed, 18 Aug 2021 09:24:56 +0000 (11:24 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 26 Aug 2021 21:36:27 +0000 (14:36 -0700)
'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>
Documentation/git-column.txt
builtin/column.c
t/t9002-column.sh

index f58e9c43e60cec3b56fb84f54859f3d01d1a963a..6cea9ab4638be5d1cada5e3350ddf41696280112 100644 (file)
@@ -39,7 +39,7 @@ OPTIONS
 --indent=<string>::
        String to be printed at the beginning of each line.
 
---nl=<N>::
+--nl=<string>::
        String to be printed at the end of each line,
        including newline character.
 
index 40d4b3bee2dd8e7e20b2d0ecc289837a0458c771..158fdf53d9fb9ce3694502fe6edbc609d7839282 100644 (file)
@@ -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, "width", &copts.width, N_("maximum width")),
                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_END()
        };
index 89983527b62f1d6c330edaf2f50c70ce735b0c1e..6d3dbde3feb9a41dc59a42f75ef578b1ebc5b183 100755 (executable)
@@ -42,6 +42,24 @@ EOF
        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' '
        cat >expected <<\EOF &&
 one    two    three  four   five   six    seven  eight  nine   ten    eleven