Hi Denton, 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. > > Signed-off-by: Denton Liu <liu.denton@xxxxxxxxx> > --- > compat/mingw.h | 6 +++--- > compat/win32/pthread.h | 6 +++--- > 2 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/compat/mingw.h b/compat/mingw.h > index a03e40e6e2..9ad204c57c 100644 > --- a/compat/mingw.h > +++ b/compat/mingw.h > @@ -11,7 +11,7 @@ typedef _sigset_t sigset_t; > #undef _POSIX_THREAD_SAFE_FUNCTIONS > #endif > > -extern int mingw_core_config(const char *var, const char *value, void *cb); > +int mingw_core_config(const char *var, const char *value, void *cb); > #define platform_core_config mingw_core_config > > /* > @@ -443,7 +443,7 @@ static inline void convert_slashes(char *path) > *path = '/'; > } > #define PATH_SEP ';' > -extern char *mingw_query_user_email(void); > +char *mingw_query_user_email(void); > #define query_user_email mingw_query_user_email > #if !defined(__MINGW64_VERSION_MAJOR) && (!defined(_MSC_VER) || _MSC_VER < 1800) > #define PRIuMAX "I64u" > @@ -580,4 +580,4 @@ int main(int argc, const char **argv); > /* > * Used by Pthread API implementation for Windows > */ > -extern int err_win_to_posix(DWORD winerr); > +int err_win_to_posix(DWORD winerr); > diff --git a/compat/win32/pthread.h b/compat/win32/pthread.h > index c6cb8dd219..f1cfe73de9 100644 > --- a/compat/win32/pthread.h > +++ b/compat/win32/pthread.h > @@ -50,7 +50,7 @@ typedef struct { > DWORD tid; > } pthread_t; > > -extern int pthread_create(pthread_t *thread, const void *unused, > +int pthread_create(pthread_t *thread, const void *unused, > void *(*start_routine)(void*), void *arg); > > /* > @@ -59,10 +59,10 @@ extern int pthread_create(pthread_t *thread, const void *unused, > */ > #define pthread_join(a, b) win32_pthread_join(&(a), (b)) > > -extern int win32_pthread_join(pthread_t *thread, void **value_ptr); > +int win32_pthread_join(pthread_t *thread, void **value_ptr); > > #define pthread_equal(t1, t2) ((t1).tid == (t2).tid) > -extern pthread_t pthread_self(void); > +pthread_t pthread_self(void); ACK! Thanks, Dscho > > static inline void NORETURN pthread_exit(void *ret) > { > -- > 2.23.0.248.g3a9dd8fb08 > >