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>
			
			
				maint
			
			
		
							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…
	
		Reference in New Issue
	
	 SZEDER Gábor
						SZEDER Gábor