 22e3e0241a
			
		
	
	22e3e0241a
	
	
	
		
			
			chainlint.sed recognizes multi-line quoted strings within subshells:
    echo "abc
        def" >out &&
so it can avoid incorrectly classifying lines internal to the string as
breaking the &&-chain. To identify the first line of a multi-line
string, it checks if the line contains a single quote. However, this is
fragile and can be easily fooled by a line containing multiple strings:
    echo "xyz" "abc
        def" >out &&
Make detection more robust by checking for an odd number of quotes
rather than only a single one.
(Escaped quotes are not handled, but support may be added later.)
The original multi-line string recognizer rather cavalierly threw away
all but the final quote, whereas the new one is careful to retain all
quotes, so the "expected" output of a couple existing chainlint tests is
updated to account for this new behavior.
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
	
		
			
				
	
	
		
			16 lines
		
	
	
		
			232 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			16 lines
		
	
	
		
			232 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| (
 | |
| 	x="line 1		line 2		line 3" &&
 | |
| ?!AMP?!	y='line 1		line2'
 | |
| 	foobar
 | |
| >) &&
 | |
| (
 | |
| 	echo "there's nothing to see here" &&
 | |
| 	exit
 | |
| >) &&
 | |
| (
 | |
| 	echo "xyz" "abc		def		ghi" &&
 | |
| 	echo 'xyz' 'abc		def		ghi' &&
 | |
| 	echo 'xyz' "abc		def		ghi" &&
 | |
| 	barfoo
 | |
| >)
 |