Hi, I am working on a semantic patch for replacing specific format string token based on the used data-type. so, I have several calls of my_printf() and some special macros pointing to them around my code. e.g: part of my code. ..... struct mydata *m; struct mydata h; ..... my_printf("%s", m->name); ..... my_printf("%s", h.name); ..... my_printf("whatever id %d following the string %s\n", id, m->name); .... Macro_to_my_printf("Hey id %d, let's see %s\n", id, h.name); ..... Macro2_to_my_printf(fd, "Hey id %d, let's see %s\n", id, m->name); ..... My current humble *.cocci $ cat fix-my_printf.cocci @r1_heap@ struct mydata *SMD; format F =~ "s"; @@ -my_printf("%@F@", SMD->name); +my_printf("%m", SMD); @r1_stack@ struct mydata SMD; format F =~ "s"; @@ -my_printf("%@F@", SMD.name); +my_printf("%m", &SMD); $ But, I can match only with partial content as can be seen below. $ spatch --partial-match --sp-file fix-my_printf.cocci sample-format-string.c | egrep "^(\+|-)" HANDLING: sample-format-string.c diff = HANDLING: /Volumes/Users/jpereira/Devel/Sandbox/sample-format-string.c diff = --- /Volumes/Users/jpereira/Devel/Sandbox/sample-format-string.c +++ /var/folders/ld/6tg9c6qj4fx4c85q26mcqrsh0000gn/T/cocci-output-24659-130f86-sample-format-string.c - my_printf("%s", m->name); + my_printf("%m", m); - my_printf("%s", h.name); + my_printf("%m", &h); $ Anyone could give me a light about how to proceed to match the entire ".....string format..." ? Thanks in advance,