summaryrefslogtreecommitdiff
path: root/coccinelle
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2022-02-22 14:59:10 +0100
committerLennart Poettering <lennart@poettering.net>2022-02-22 22:47:12 +0100
commitec93eb48f2b23b9451c3d08064b07ee23e39a053 (patch)
tree9492a25c98c5998f4d4bd4a5a9d3fd26ce331db3 /coccinelle
parentcab4ed0f4a5cb1f2e2d236082370e0a7982b9fbf (diff)
downloadsystemd-ec93eb48f2b23b9451c3d08064b07ee23e39a053.tar.gz
coccinelle: automatically look for timestamp_is_set candidates
Based on @mrc0mmand's Coccinelle skills, not mine. All credit is his. Co-authored-by: Frantisek Sumsal <frantisek@sumsal.cz>
Diffstat (limited to 'coccinelle')
-rw-r--r--coccinelle/timestamp-is-set.cocci73
1 files changed, 73 insertions, 0 deletions
diff --git a/coccinelle/timestamp-is-set.cocci b/coccinelle/timestamp-is-set.cocci
new file mode 100644
index 0000000000..2d251fa205
--- /dev/null
+++ b/coccinelle/timestamp-is-set.cocci
@@ -0,0 +1,73 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+@@
+expression x;
+constant USEC_INFINITY = USEC_INFINITY;
+/* We want to stick with the literal expression in the implementation of timestamp_is_set(), i.e. in time-util.c */
+position p : script:python() { p[0].file != "src/basic/time-util.h" };
+@@
+(
+- x > 0 && x < USEC_INFINITY
++ timestamp_is_set(x)
+|
+- x < USEC_INFINITY && x > 0
++ timestamp_is_set(x)
+|
+- x@p > 0 && x != USEC_INFINITY
++ timestamp_is_set(x)
+|
+- x != USEC_INFINITY && x > 0
++ timestamp_is_set(x)
+|
+- x != 0 && x < USEC_INFINITY
++ timestamp_is_set(x)
+|
+- x < USEC_INFINITY && x != 0
++ timestamp_is_set(x)
+|
+- x != 0 && x != USEC_INFINITY
++ timestamp_is_set(x)
+|
+- x != USEC_INFINITY && x != 0
++ timestamp_is_set(x)
+|
+- !IN_SET(x, 0, USEC_INFINITY)
++ timestamp_is_set(x)
+|
+- !IN_SET(x, USEC_INFINITY, 0)
++ timestamp_is_set(x)
+)
+@@
+expression x;
+constant USEC_INFINITY = USEC_INFINITY;
+@@
+(
+- x <= 0 || x >= USEC_INFINITY
++ !timestamp_is_set(x)
+|
+- x >= USEC_INFINITY || x <= 0
++ !timestamp_is_set(x)
+|
+- x <= 0 || x == USEC_INFINITY
++ !timestamp_is_set(x)
+|
+- x == USEC_INFINITY || x <= 0
++ !timestamp_is_set(x)
+|
+- x == 0 || x >= USEC_INFINITY
++ !timestamp_is_set(x)
+|
+- x >= USEC_INFINITY || x == 0
++ !timestamp_is_set(x)
+|
+- x == 0 || x == USEC_INFINITY
++ !timestamp_is_set(x)
+|
+- x == USEC_INFINITY || x == 0
++ !timestamp_is_set(x)
+|
+- IN_SET(x, 0, USEC_INFINITY)
++ !timestamp_is_set(x)
+|
+- IN_SET(x, USEC_INFINITY, 0)
++ !timestamp_is_set(x)
+)