Thank you both. This was exactly what I was looking for. Without "declarer name" it probably looks for identifiers.
Regards Andreas Bach Aaen -----Original Message----- From: Nicolas Palix [mailto:[email protected]] Sent: 2. marts 2010 18:58 To: Julia Lawall; Aaen, Andreas.Bach Cc: [email protected] Subject: Re: [Cocci] How to remove a macro... On Tuesday 02 March 2010 16:54:50 Julia Lawall wrote: > Try declarer name RELEASESTR; in the metavariable list. Works for me with @delete@ expression E; declarer name RELEASESTR; @@ -RELEASESTR(E); @add@ expression delete.E; @@ #include <std.h> +RELEASESTR(E); > > julia > > > On Tue, 2 Mar 2010, Nicolas Palix wrote: > > > On Tuesday 02 March 2010 14:55:22 Aaen, Andreas.Bach wrote: > > > I have loads of c-files starting with: > > > > > > #include <std.h> > > > RELEASESTR("$Id:$"); > > > #include <stdio.h> > > > Now if I would like to remove the RELEASESTR statement, I would expect to > > > do: > > > @@ > > > expression E; > > > @@ > > > -RELEASESTR(E); > > > but that doens't match anything. Now what did I overlook? > > > > As it's a macro statement, it must be declare as such in a > > Coccinelle macro header file. See standard.h for examples. > > I think your macro file should contain: > > > > #define RELEASESTR(x) MACROSTATEMENT > > > > > > Then give your macro file to spatch with the "-macro_file" option > > > > > > > > > > Actually I would like to build a litte more complex rule: > > > --------------- > > > @@ > > > @@ > > > -RELEASESTR("$Id:$"); > > > @r@ > > > @@ > > > #include <std.h> > > > +RELEASESTR("$Id:$"); > > > ----------------- > > > > > > So that I am sure that there only is one RELEASESTR in each file > > > and that it's lpacved right after #include <std.h> > > > > > > Regards > > > Andreas Bach Aaen > > > > > > -- Nicolas Palix Tel: (+33) 1 44 27 87 25 _______________________________________________ Cocci mailing list [email protected] http://lists.diku.dk/mailman/listinfo/cocci (Web access from inside DIKUs LAN only)
