On 06/21/2014 01:38 AM, Rusty Russell wrote:
Hi!In my current project, I moved a field from a structure (struct block) into another network-endian structure. I used the following patch.cocci to do the fixups: @ rule1 @ struct block *b; @@ - b->blocknum + le32_to_cpu(b->hdr->depth) It got 99%, but it missed the two cases where b was actually in another structure, ie. "te->block->blocknum". I *think* this is because I want to substitute any expression of type struct block *, rather than only identifiers? But I couldn't understand the documentation enough to do this :(
This should work. But by default coccinelle does not parse global headers, so if the struct for te is defined in a global header it won't know that te->block is of type 'struct block *'. If that is the case try to run it with --all-includes
- Lars _______________________________________________ Cocci mailing list [email protected] https://systeme.lip6.fr/mailman/listinfo/cocci
