From df3c286c53ac51e7267f2761c7a0c62e11b6e815 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 3 Aug 2016 13:37:51 +0200 Subject: error: Strip trailing '\n' from error string arguments (again) Commit 9af9e0f, 6daf194d, be62a2eb and 312fd5f got rid of a bunch, but they keep coming back. checkpatch.pl tries to flag them since commit 5d596c2, but it's not very good at it. Offenders tracked down with Coccinelle script scripts/coccinelle/err-bad-newline.cocci, an updated version of the script from commit 312fd5f. Signed-off-by: Markus Armbruster Message-Id: <1470224274-31522-2-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake --- scripts/coccinelle/err-bad-newline.cocci | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 scripts/coccinelle/err-bad-newline.cocci (limited to 'scripts') diff --git a/scripts/coccinelle/err-bad-newline.cocci b/scripts/coccinelle/err-bad-newline.cocci new file mode 100644 index 0000000000..1316cc86a6 --- /dev/null +++ b/scripts/coccinelle/err-bad-newline.cocci @@ -0,0 +1,29 @@ +// Error messages should not contain newlines. This script finds +// messages that do. Fixing them is manual. +@r@ +expression errp, eno, cls, fmt; +position p; +@@ +( +error_report(fmt, ...)@p +| +error_setg(errp, fmt, ...)@p +| +error_setg_errno(errp, eno, fmt, ...)@p +| +error_setg_win32(errp, eno, cls, fmt, ...)@p +| +error_prepend(errp, fmt, ...)@p +| +error_setg_file_open(errp, eno, cls, fmt, ...)@p +| +error_reportf_err(errp, fmt, ...)@p +| +error_set(errp, cls, fmt, ...)@p +) +@script:python@ +fmt << r.fmt; +p << r.p; +@@ +if "\\n" in str(fmt): + print "%s:%s:%s:%s" % (p[0].file, p[0].line, p[0].column, fmt) -- cgit 1.4.1 From a47eb010983b98d41330878f8b3e3193da40e6ed Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 3 Aug 2016 13:37:52 +0200 Subject: checkpatch: Fix newline detection in error_setg() & friends Commit 5d596c2's regexp assumes the error message string is the first argument. Correct for error_report(), wrong for all the others. Relax the regexp to match newline in anywhere. This might cause additional false positives. While there, update the list of error_reporting functions. Cc: Jason J. Herne Signed-off-by: Markus Armbruster Message-Id: <1470224274-31522-3-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake --- scripts/checkpatch.pl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index b7cb4ab478..9297087212 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -2514,11 +2514,14 @@ sub process { my $qemu_error_funcs = qr{error_setg| error_setg_errno| error_setg_win32| + error_setg_file_open| error_set| + error_prepend| + error_reportf_err| error_vreport| error_report}x; - if ($rawline =~ /\b(?:$qemu_error_funcs)\s*\(\s*\".*\\n/) { + if ($rawline =~ /\b(?:$qemu_error_funcs)\s*\(.*\".*\\n/) { WARN("Error messages should not contain newlines\n" . $herecurr); } -- cgit 1.4.1