1// SPDX-License-Identifier: GPL-2.0-only
2///
3/// Use resource_size function on resource object
4/// instead of explicit computation.
5///
6//  Confidence: High
7//  Copyright: (C) 2009, 2010 Nicolas Palix, DIKU.
8//  Copyright: (C) 2009, 2010 Julia Lawall, DIKU.
9//  Copyright: (C) 2009, 2010 Gilles Muller, INRIA/LiP6.
10//  URL: https://coccinelle.gitlabpages.inria.fr/website
11//  Options:
12//
13//  Keywords: resource_size
14//  Version min: 2.6.27 resource_size
15//
16
17virtual context
18virtual patch
19virtual org
20virtual report
21
22//----------------------------------------------------------
23//  For context mode
24//----------------------------------------------------------
25
26@r_context depends on context && !patch && !org@
27struct resource *res;
28@@
29
30* (res->end - res->start) + 1
31
32//----------------------------------------------------------
33//  For patch mode
34//----------------------------------------------------------
35
36@r_patch depends on !context && patch && !org@
37struct resource *res;
38@@
39
40- (res->end - res->start) + 1
41+ resource_size(res)
42
43//----------------------------------------------------------
44//  For org mode
45//----------------------------------------------------------
46
47
48@r_org depends on !context && !patch && (org || report)@
49struct resource *res;
50position p;
51@@
52
53 (res->end@p - res->start) + 1
54
55@rbad_org depends on !context && !patch && (org || report)@
56struct resource *res;
57position p != r_org.p;
58@@
59
60 res->end@p - res->start
61
62@script:python depends on org@
63p << r_org.p;
64x << r_org.res;
65@@
66
67msg="ERROR with %s" % (x)
68msg_safe=msg.replace("[","@(").replace("]",")")
69coccilib.org.print_todo(p[0], msg_safe)
70
71@script:python depends on report@
72p << r_org.p;
73x << r_org.res;
74@@
75
76msg="ERROR: Missing resource_size with %s" % (x)
77coccilib.report.print_report(p[0], msg)
78
79@script:python depends on org@
80p << rbad_org.p;
81x << rbad_org.res;
82@@
83
84msg="WARNING with %s" % (x)
85msg_safe=msg.replace("[","@(").replace("]",")")
86coccilib.org.print_todo(p[0], msg_safe)
87
88@script:python depends on report@
89p << rbad_org.p;
90x << rbad_org.res;
91@@
92
93msg="WARNING: Suspicious code. resource_size is maybe missing with %s" % (x)
94coccilib.report.print_report(p[0], msg)
95