summaryrefslogtreecommitdiffstats
path: root/doc/devel/variadic_debug/03-libldap_Debug.cocci
blob: 8353e6442693a0eedb3ed1ff3f054860e52ce26f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using "equivalence.iso"

@initialize:ocaml@
@@
// count the number of % characters in the format string
let fmtn(fmt,n) =
    List.length (Str.split_delim (Str.regexp_string "%") fmt) = n + 1

# replace osip_debug/oslocal_debug with Debug() macros first
@@
expression E;
expression list args;
@@
(
-osip_debug
|
-oslocal_debug
)
+Debug
 (
-E,
+LDAP_DEBUG_TRACE,
 args );

// replace Debug( ..., arg1, arg2, 0 ) with Debug2( ..., arg1, arg2 )
@@
char[] fmt : script:ocaml() { fmtn(fmt,2) };
expression list[2] args;
expression E;
@@

-Debug
+Debug2
 ( E, _(fmt), args
-, 0
 );

// replace Debug( ..., arg1, 0, 0 ) with Debug1()
@@
char[] fmt : script:ocaml() { fmtn(fmt,1) };
expression list[1] args;
expression E;
@@

-Debug
+Debug1
 ( E, _(fmt), args
-, 0, 0
 );

// Zero-argument Debug() -> Debug0()
@@
expression E, S;
@@

-Debug
+Debug0
 ( E, S
-, 0, 0, 0
 );

// everything else is a regular 3-argument debug macro, replace with Debug3()
@@
expression E, S;
expression list[3] args;
@@

-Debug
+Debug3
 ( E, S, args );