All of lore.kernel.org
 help / color / mirror / Atom feed
From: tipecaml@gmail.com (Cyril Roelandt)
To: cocci@systeme.lip6.fr
Subject: [Cocci] Converting old-style function definitions.
Date: Wed, 05 Jun 2013 02:37:31 +0200	[thread overview]
Message-ID: <51AE884B.3080308@gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1305291835300.2246@hadrien>

On 05/29/2013 06:37 PM, Julia Lawall wrote:
> On Wed, 29 May 2013, Ond?ej B?lka wrote:
>
>>
>> Hi,
>>
>> I am interested in common cleanup to convert K&R function
>> definitions to ISO ones (As gcc warning in -Wold-style-definition).
>>
>> Probably someone already wrote spatch so I ask here who?
>
> Unfortunately, it is not supported.  The Coccinelle C parser makes at
> least an attempt to parse K&R function definitions, but the SmPL parser,
> ie the parser of the transformation specification language, doesn't accept
> them.
>

Wouldn't it be possible to use a Python/OCaml rule to do this 
transformation ? I did not manage to do it, but I think the attached 
Coccinelle script might still be useful, since it can probably be used 
to "fix" prototypes without having to write a complete C parser first. 
The attached Coccinelle script does 3 things:

1) Find all function definitions (the "find" rule);
2) Parse their prototypes in a python rule and compute the "correct" 
prototype (the "fix" rule);
3) Write the "correct" prototype in the code.

This does not work well, as it just turns:

void
k_r_function(foo, bar)
         int foo; int bar;
{
}

into

void
k_r_function(foo, bar)
         int foo; int bar;
{
}
+k_r_function(int foo, int bar);


Even if the third step cannot be fixed, it's probably quite easy to fix 
the code in the second step, and to write the whole source file in a new 
file.

WDYT ?

Cyril.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: kr.cocci
URL: <https://systeme.lip6.fr/pipermail/cocci/attachments/20130605/d2328d37/attachment.ksh>

      parent reply	other threads:[~2013-06-05  0:37 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-29 16:22 [Cocci] Converting old-style function definitions Ondřej Bílka
2013-05-29 16:37 ` Julia Lawall
2013-05-29 22:09   ` Ondřej Bílka
2013-06-05  0:37   ` Cyril Roelandt [this message]

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=51AE884B.3080308@gmail.com \
    --to=tipecaml@gmail.com \
    --cc=cocci@systeme.lip6.fr \
    /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 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.