Hi Coccinelle community,

I just discovered Coccinelle a few days ago, and already my mind is reeling 
with the possibilities.
I'm doing some work porting the Claws Mail mail client to GTK3, and I think 
Coccinelle would be a
great tool to use to accomplish this task.

One of the thing I'm trying to use Coccinelle to do is to detect and patch 
string concatenation via
string literal juxtaposition; for example:

> ...
>  GTK_STOCK_NO, "+" GTK_STOCK_YES, NULL);

I would like to write a spatch that does something like the following:

> @@
> constant char *stock_constant =~ "^GTK_STOCK";
> @@
>
> -"+" stock_constant
> +stock_constant

For starters, Coccinelle doesn't seem to recognize string juxtaposition (spatch 
gives me an error when
I try this); secondly, I can't seem to get "constant char *p" to match *any* 
string literals.  For example,
take this simple test program:

> int
> main(void)
> {
>    const char *p = "bar";
>    return 0;
> }

If I just use "constant p", it'll match the 0 literal in the return statement.  
I can use "constant int p" to
make only that 0 match, but I'd like to match the "bar" string literal, and 
"constant char *p" doesn't seem to
work.  Is there some way I can get Coccinelle to match only string literals to 
a metavariable?

Another quick question: is there a way to tell Coccinelle to dump its AST so I 
can see which type an expression
has been assigned?  Having such a tool might help me get more familiar with the 
tool!

Thanks,
Rob

_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to