From 838f0ce4dccce88397deb0e06ac98fc0191c2951 Mon Sep 17 00:00:00 2001 From: Vidar Holen Date: Sat, 17 Dec 2016 12:48:09 -0800 Subject: [PATCH] Count "%(%Y%m%d)T" as a single format in printf. --- ShellCheck/Checks/Commands.hs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ShellCheck/Checks/Commands.hs b/ShellCheck/Checks/Commands.hs index 64d73da..3ffbfc7 100644 --- a/ShellCheck/Checks/Commands.hs +++ b/ShellCheck/Checks/Commands.hs @@ -471,6 +471,7 @@ prop_checkPrintfVar7 = verify checkPrintfVar "printf -- foo bar baz" prop_checkPrintfVar8 = verifyNot checkPrintfVar "printf '%s %s %s' \"${var[@]}\"" prop_checkPrintfVar9 = verifyNot checkPrintfVar "printf '%s %s %s\\n' *.png" prop_checkPrintfVar10= verifyNot checkPrintfVar "printf '%s %s %s' foo bar baz" +prop_checkPrintfVar11= verifyNot checkPrintfVar "printf '%(%s%s)T' -1" checkPrintfVar = CommandCheck (Exactly "printf") (f . arguments) where f (doubledash:rest) | getLiteralString doubledash == Just "--" = f rest f (dashv:var:rest) | getLiteralString dashv == Just "-v" = f rest @@ -480,6 +481,7 @@ checkPrintfVar = CommandCheck (Exactly "printf") (f . arguments) where countFormats string = case string of '%':'%':rest -> countFormats rest + '%':'(':rest -> 1 + countFormats (dropWhile (/= ')') rest) '%':rest -> 1 + countFormats rest _:rest -> countFormats rest [] -> 0