Hi Denton, On Wed, 4 Sep 2019, Denton Liu wrote: > On Wed, Sep 04, 2019 at 11:43:06PM +0200, Johannes Schindelin wrote: > > > > On Wed, 4 Sep 2019, Denton Liu wrote: > > > > > In 554544276a (*.[ch]: remove extern from function declarations using > > > spatch, 2019-04-29), we removed externs from function declarations using > > > spatch but we intentionally excluded files under compat/ since some are > > > directly copied from an upstream and we should avoid churning them so > > > that manually merging future updates will be simpler. > > > > > > In the last commit, we determined the files which taken from an upstream > > > so we can exclude them and run spatch on the remainder. > > > > > > This was the Coccinelle patch used: > > > > > > @@ > > > type T; > > > identifier f; > > > @@ > > > - extern > > > T f(...); > > > > > > and it was run with: > > > > > > $ git ls-files compat/\*\*.{c,h} | > > > xargs spatch --sp-file contrib/coccinelle/noextern.cocci --in-place > > > $ git checkout -- \ > > > compat/regex/ \ > > > compat/inet_ntop.c \ > > > compat/inet_pton.c \ > > > compat/nedmalloc/ \ > > > compat/obstack.{c,h} \ > > > compat/poll/ > > > > > > Coccinelle has some trouble dealing with `__attribute__` and varargs so > > > we ran the following to ensure that no remaining changes were left > > > behind: > > > > > > $ git ls-files compat/\*\*.{c,h} | > > > xargs sed -i'' -e 's/^\(\s*\)extern \([^(]*([^*]\)/\1\2/' > > > $ git checkout -- \ > > > compat/regex/ \ > > > compat/inet_ntop.c \ > > > compat/inet_pton.c \ > > > compat/nedmalloc/ \ > > > compat/obstack.{c,h} \ > > > compat/poll/ > > > > I wonder whether we want to make this part of the (slightly misnamed) > > "Static Analysis" job in our CI. > > Do you mean running cocci on all of our source files as opposed to just > the files we compile? These two patches are part of an experimental (and > unsubmitted) patchset that does exactly that. Seeing that there's > interest, I'll try to send it in soon. I look forward to it! Dscho