cocci.inria.fr archive mirror
 help / color / mirror / Atom feed
From: Julia Lawall <julia.lawall@lip6.fr>
To: Max <msuraev@sysmocom.de>
Cc: cocci@systeme.lip6.fr
Subject: Re: [Cocci] struct replacement
Date: Tue, 18 Dec 2018 17:19:02 +0100 (CET)	[thread overview]
Message-ID: <alpine.DEB.2.20.1812181716490.2886@hadrien> (raw)
In-Reply-To: <28194663-42c4-83b6-4a21-545408fd7e12@sysmocom.de>

[-- Attachment #1: Type: text/plain, Size: 2274 bytes --]



On Tue, 18 Dec 2018, Max wrote:

> That almost works: both function parameters and variable declarations
> are updated in .c files but the function prototypes in .h are ignored.
>
> I call it as follows:
>
> spatch --in-place --sp-file struct.spatch -I include --dir src
>
> The source code from 'src' is updated but header files in 'include' are
> not affected.
>
> Specifying multiple dir doesn't work: "ignoring all but the last
> specified directory".
>
> Adding --include-headers doesn't do what I hoped it would.
>
> Using top-level directory doesn't help as well: .c in multiple sub-dirs
> are processed but .h are not.
>
> Reading docs so far revealed no way to update function definition in
> both .c and .h at the same time.
>
> Does spatch have to be called in some special way for this to work? Or
> .spatch file should have some particular syntax so it would affect both
> .c and .h simultaneously?

By default, Coccinelle only includes the headers that have the same name
as the .c file.  Ie for foo.c, it considers that foo.h is prbably
important, and thus worth the often large extra runtime cost to take into
account.

If you want more aggressive inclusion of headers, you need --all-includes
(the headers explicitly mentioned in the .c file) or --recursive-includes
(headers included by other headers).

julia


>
> 13.12.18 21:01, Julia Lawall пишет:
> >
> > If this is to be a function prototype, the parameter should be surrounded
> > with commas.  If there is no comma before or after the parameter
> > declaration, Coccinelle will take care of doing the right thing.
> >
> > But actually your rule should be:
> >
> > @@
> > @@
> >
> > struct
> > -   old_thing
> > +   new_thing
> >
> > Then it will just change the type whereever it occurs.
> >
> --
> - Max Suraev <msuraev@sysmocom.de>       http://www.sysmocom.de/
> =======================================================================
> * sysmocom - systems for mobile communications GmbH
> * Alt-Moabit 93
> * 10559 Berlin, Germany
> * Sitz / Registered office: Berlin, HRB 134158 B
> * Geschaeftsfuehrer / Managing Directors: Harald Welte
>
> _______________________________________________
> Cocci mailing list
> Cocci@systeme.lip6.fr
> https://systeme.lip6.fr/mailman/listinfo/cocci
>

[-- Attachment #2: Type: text/plain, Size: 136 bytes --]

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

  reply	other threads:[~2018-12-18 16:19 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-12 18:39 [Cocci] struct replacement Max
2018-12-13  6:24 ` Julia Lawall
2018-12-13 16:43   ` Max
2018-12-13 20:01     ` Julia Lawall
     [not found]       ` <c8041b90-d4e9-a9a6-603d-7f5498fe081c@users.sourceforge.net>
2018-12-15 13:49         ` Julia Lawall
2018-12-18 16:15       ` Max
2018-12-18 16:19         ` Julia Lawall [this message]
2018-12-18 16:44           ` Max
2018-12-18 16:54             ` Julia Lawall
2018-12-18 17:12               ` Max
2018-12-18 17:18                 ` Julia Lawall
2018-12-18 18:13                   ` Max

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.2.20.1812181716490.2886@hadrien \
    --to=julia.lawall@lip6.fr \
    --cc=cocci@systeme.lip6.fr \
    --cc=msuraev@sysmocom.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).