1c75a33c8SJacob Keller// SPDX-License-Identifier: GPL-2.0-only 2c75a33c8SJacob Keller/// 3c75a33c8SJacob Keller/// Catch strings ending in newline with GENL_SET_ERR_MSG, NL_SET_ERR_MSG, 4c75a33c8SJacob Keller/// NL_SET_ERR_MSG_MOD. 5c75a33c8SJacob Keller/// 6c75a33c8SJacob Keller// Confidence: Very High 7c75a33c8SJacob Keller// Copyright: (C) 2020 Intel Corporation 8*f01701ceSJulia Lawall// URL: https://coccinelle.gitlabpages.inria.fr/website 9c75a33c8SJacob Keller// Options: --no-includes --include-headers 10c75a33c8SJacob Keller 11c75a33c8SJacob Kellervirtual context 12c75a33c8SJacob Kellervirtual org 13c75a33c8SJacob Kellervirtual report 14c75a33c8SJacob Keller 15c75a33c8SJacob Keller@r depends on context || org || report@ 16c75a33c8SJacob Kellerexpression e; 17c75a33c8SJacob Kellerconstant m; 18c75a33c8SJacob Kellerposition p; 19c75a33c8SJacob Keller@@ 20c75a33c8SJacob Keller \(GENL_SET_ERR_MSG\|NL_SET_ERR_MSG\|NL_SET_ERR_MSG_MOD\)(e,m@p) 21c75a33c8SJacob Keller 22c75a33c8SJacob Keller@script:python@ 23c75a33c8SJacob Kellerm << r.m; 24c75a33c8SJacob Keller@@ 25c75a33c8SJacob Keller 26c75a33c8SJacob Kellerif not m.endswith("\\n\""): 27c75a33c8SJacob Keller cocci.include_match(False) 28c75a33c8SJacob Keller 29c75a33c8SJacob Keller@r1 depends on r@ 30c75a33c8SJacob Kelleridentifier fname; 31c75a33c8SJacob Kellerexpression r.e; 32c75a33c8SJacob Kellerconstant r.m; 33c75a33c8SJacob Kellerposition r.p; 34c75a33c8SJacob Keller@@ 35c75a33c8SJacob Keller fname(e,m@p) 36c75a33c8SJacob Keller 37c75a33c8SJacob Keller//---------------------------------------------------------- 38c75a33c8SJacob Keller// For context mode 39c75a33c8SJacob Keller//---------------------------------------------------------- 40c75a33c8SJacob Keller 41c75a33c8SJacob Keller@depends on context && r@ 42c75a33c8SJacob Kelleridentifier r1.fname; 43c75a33c8SJacob Kellerexpression r.e; 44c75a33c8SJacob Kellerconstant r.m; 45c75a33c8SJacob Keller@@ 46c75a33c8SJacob Keller* fname(e,m) 47c75a33c8SJacob Keller 48c75a33c8SJacob Keller//---------------------------------------------------------- 49c75a33c8SJacob Keller// For org mode 50c75a33c8SJacob Keller//---------------------------------------------------------- 51c75a33c8SJacob Keller 52c75a33c8SJacob Keller@script:python depends on org@ 53c75a33c8SJacob Kellerfname << r1.fname; 54c75a33c8SJacob Kellerm << r.m; 55c75a33c8SJacob Kellerp << r.p; 56c75a33c8SJacob Keller@@ 57c75a33c8SJacob Keller 58c75a33c8SJacob Kellerif m.endswith("\\n\""): 59c75a33c8SJacob Keller msg="WARNING avoid newline at end of message in %s" % (fname) 60c75a33c8SJacob Keller msg_safe=msg.replace("[","@(").replace("]",")") 61c75a33c8SJacob Keller coccilib.org.print_todo(p[0], msg_safe) 62c75a33c8SJacob Keller 63c75a33c8SJacob Keller//---------------------------------------------------------- 64c75a33c8SJacob Keller// For report mode 65c75a33c8SJacob Keller//---------------------------------------------------------- 66c75a33c8SJacob Keller 67c75a33c8SJacob Keller@script:python depends on report@ 68c75a33c8SJacob Kellerfname << r1.fname; 69c75a33c8SJacob Kellerm << r.m; 70c75a33c8SJacob Kellerp << r.p; 71c75a33c8SJacob Keller@@ 72c75a33c8SJacob Keller 73c75a33c8SJacob Kellerif m.endswith("\\n\""): 74c75a33c8SJacob Keller msg="WARNING avoid newline at end of message in %s" % (fname) 75c75a33c8SJacob Keller coccilib.report.print_report(p[0], msg) 76