All of lore.kernel.org
 help / color / mirror / Atom feed
* [Cocci] Patching const char * constants
@ 2018-01-10  2:22 Rob Hoelz
  2018-01-10  8:40 ` Julia Lawall
       [not found] ` <58ff3bae-29c1-19cf-99f1-5b96e7855101@users.sourceforge.net>
  0 siblings, 2 replies; 5+ messages in thread
From: Rob Hoelz @ 2018-01-10  2:22 UTC (permalink / raw)
  To: cocci

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-01-15 16:59 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-10  2:22 [Cocci] Patching const char * constants Rob Hoelz
2018-01-10  8:40 ` Julia Lawall
2018-01-10 19:34   ` Rob Hoelz
     [not found]     ` <5ab8be10-1f1a-707b-b629-e25e7fb731fa@users.sourceforge.net>
2018-01-15 16:57       ` [Cocci] Patching string literal juxtaposition Rob Hoelz
     [not found] ` <58ff3bae-29c1-19cf-99f1-5b96e7855101@users.sourceforge.net>
2018-01-15 16:59   ` Rob Hoelz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.