On 2014-05-23 20.44, Jonathan Nieder wrote: > Junio C Hamano wrote: >> Elia Pinto <gitter.spiros@xxxxxxxxx> writes: > >>> Found by check-non-portable-shell.pl >> >> Thanks. >> >> Makes me wonder why these two were missed, though. > > Good catch. check-non-portable-shell.pl uses an anchored regex: > > /^\s*export\s+[^=]*=/ > > Perhaps something like > > /\bexport\s+[A-Za-z0-9_]*=/ > > without anchoring would work better. > > -- >8 -- > Subject: test-lint: find unportable sed, echo, test, and export usage after && > > Instead of anchoring these checks with "^\s*", just check that the > usage is preceded by a word boundary. So now we can catch > > test $cond && export foo=bar Thanks for digging. I wonder if we could keep the anchoring (to reduce false positives) and try to catch a line "command1 && command2" at the same time: diff --git a/t/check-non-portable-shell.pl b/t/check-non-portable-shell.pl index 45971f4..f64e054 100755 --- a/t/check-non-portable-shell.pl +++ b/t/check-non-portable-shell.pl @@ -16,12 +16,12 @@ sub err { while (<>) { chomp; - /^\s*sed\s+-i/ and err 'sed -i is not portable'; - /^\s*echo\s+-n/ and err 'echo -n is not portable (please use printf)'; - /^\s*declare\s+/ and err 'arrays/declare not portable'; - /^\s*[^#]\s*which\s/ and err 'which is not portable (please use type)'; + /(^|&&)\s*sed\s+-i/ and err 'sed -i is not portable'; + /(^|&&)\s*echo\s+-n/ and err 'echo -n is not portable (please use printf)'; + /(^|&&)\s*declare\s+/ and err 'arrays/declare not portable'; + /(^|&&)\s*[^#]\s*which\s/ and err 'which is not portable (please use type)'; /test\s+[^=]*==/ and err '"test a == b" is not portable (please use =)'; - /^\s*export\s+[^=]*=/ and err '"export FOO=bar" is not portable (please use FOO=bar && export FOO)'; + /(^|&&)\s*export\s+[^=]*=/ and err '"export FOO=bar" is not portable (please use FOO=bar && export FOO)'; # this resets our $. for each file close ARGV if eof; } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html