Hi all, thanks for the feedback.
I didn't realise that Coccinelle could be used to remove modifiers but
turns out I was wrong. However, Coccinelle seems to choke whenever
there's an __attribute__ or when there are varargs and I couldn't figure
out how to work around that. As a result, this patchset is written in
two parts: one using spatch and another using sed to get the rest.
Hopefully the sed patch is more easily digestable now.
Change since v1:
* Use spatch with sed instead of sed alone
* Fix sed expression to ignore function variables
Denton Liu (3):
*.[ch]: remove extern from function declarations using spatch
*.[ch]: remove extern from function declarations using sed
cocci: prevent extern function declarations
advice.h | 2 +-
archive.h | 14 +-
bisect.h | 12 +-
blame.h | 2 +-
branch.h | 12 +-
builtin.h | 252 +++++++++++-----------
bulk-checkin.h | 6 +-
cache.h | 344 +++++++++++++++---------------
checkout.h | 2 +-
column.h | 12 +-
commit.h | 72 +++----
compat/mingw.c | 2 +-
compat/mingw.h | 6 +-
compat/nedmalloc/malloc.c.h | 6 +-
compat/obstack.h | 8 +-
compat/poll/poll.h | 2 +-
compat/regex/regex.h | 28 +--
compat/win32/pthread.h | 6 +-
config.h | 184 ++++++++--------
connect.h | 20 +-
contrib/coccinelle/noextern.cocci | 6 +
csum-file.h | 20 +-
decorate.h | 4 +-
delta.h | 10 +-
dir.h | 70 +++---
exec-cmd.h | 16 +-
fmt-merge-msg.h | 2 +-
fsmonitor.h | 14 +-
gettext.h | 8 +-
git-compat-util.h | 128 +++++------
grep.h | 22 +-
hashmap.h | 30 +--
help.h | 30 +--
http.h | 52 ++---
khash.h | 14 +-
kwset.h | 10 +-
line-log.h | 16 +-
lockfile.h | 10 +-
ls-refs.h | 2 +-
mailinfo.h | 6 +-
merge-blobs.h | 2 +-
object-store.h | 16 +-
object.h | 12 +-
oidmap.h | 10 +-
pack.h | 24 +--
packfile.h | 74 +++----
path.h | 32 +--
pkt-line.h | 6 +-
ppc/sha1.c | 2 +-
prio-queue.h | 10 +-
protocol.h | 6 +-
quote.h | 32 +--
reachable.h | 4 +-
reflog-walk.h | 16 +-
refs.h | 2 +-
remote.h | 12 +-
replace-object.h | 2 +-
resolve-undo.h | 14 +-
run-command.h | 8 +-
serve.h | 4 +-
sha1-lookup.h | 2 +-
streaming.h | 8 +-
string-list.h | 2 +-
sub-process.h | 2 +-
submodule-config.h | 20 +-
tag.h | 14 +-
tempfile.h | 26 +--
trace.h | 34 +--
transport.h | 4 +-
tree-walk.h | 4 +-
upload-pack.h | 4 +-
url.h | 16 +-
urlmatch.h | 4 +-
utf8.h | 2 +-
varint.h | 4 +-
vcs-svn/sliding_window.h | 2 +-
vcs-svn/svndiff.h | 2 +-
worktree.h | 22 +-
xdiff-interface.h | 10 +-
79 files changed, 969 insertions(+), 963 deletions(-)
create mode 100644 contrib/coccinelle/noextern.cocci
Interdiff against v1:
diff --git a/compat/mingw.c b/compat/mingw.c
index 6b04514cdc..8e1ab3129e 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -2483,7 +2483,7 @@ typedef struct {
int newmode;
} _startupinfo;
-extern int __wgetmainargs(int *argc, wchar_t ***argv, wchar_t ***env, int glob,
+int __wgetmainargs(int *argc, wchar_t ***argv, wchar_t ***env, int glob,
_startupinfo *si);
static NORETURN void die_startup(void)
diff --git a/compat/obstack.h b/compat/obstack.h
index 1ff8f3fc1e..168d1d8b38 100644
--- a/compat/obstack.h
+++ b/compat/obstack.h
@@ -197,7 +197,7 @@ void obstack_free (struct obstack *, void *);
more memory. This can be set to a user defined function which
should either abort gracefully or use longjump - but shouldn't
return. The default action is to print a message and abort. */
-void (*obstack_alloc_failed_handler) (void);
+extern void (*obstack_alloc_failed_handler) (void);
/* Pointer to beginning of object being allocated or to be allocated next.
Note that this might not be the final address of the object
diff --git a/contrib/coccinelle/noextern.cocci
b/contrib/coccinelle/noextern.cocci
new file mode 100644
index 0000000000..8cb39ac947
--- /dev/null
+++ b/contrib/coccinelle/noextern.cocci
@@ -0,0 +1,6 @@
+@@
+type T;
+identifier f;
+@@
+- extern
+ T f(...);
diff --git a/delta.h b/delta.h
index 592bd9c27e..0fc3659633 100644
--- a/delta.h
+++ b/delta.h
@@ -13,7 +13,7 @@ struct delta_index;
* before free_delta_index() is called. The returned pointer must be freed
* using free_delta_index().
*/
-extern struct delta_index *
+struct delta_index *
create_delta_index(const void *buf, unsigned long bufsize);
/*
@@ -40,7 +40,7 @@ unsigned long sizeof_delta_index(struct delta_index *index);
* returned and *delta_size is updated with its size. The returned buffer
* must be freed by the caller.
*/
-extern void *
+void *
create_delta(const struct delta_index *index,
const void *buf, unsigned long bufsize,
unsigned long *delta_size, unsigned long max_delta_size);
diff --git a/git-compat-util.h b/git-compat-util.h
index fbfc53df4b..cc2cd27f30 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -484,9 +484,9 @@ static inline int const_error(void)
void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list
params));
void set_error_routine(void (*routine)(const char *err, va_list params));
-void (*get_error_routine(void))(const char *err, va_list params);
+extern void (*get_error_routine(void))(const char *err, va_list params);
void set_warn_routine(void (*routine)(const char *warn, va_list params));
-void (*get_warn_routine(void))(const char *warn, va_list params);
+extern void (*get_warn_routine(void))(const char *warn, va_list params);
void set_die_is_recursing_routine(int (*routine)(void));
int starts_with(const char *str, const char *prefix);
diff --git a/packfile.h b/packfile.h
index dab50405e0..4eb4d5f521 100644
--- a/packfile.h
+++ b/packfile.h
@@ -43,7 +43,7 @@ void for_each_file_in_pack_dir(const char *objdir,
#define PACKDIR_FILE_PACK 1
#define PACKDIR_FILE_IDX 2
#define PACKDIR_FILE_GARBAGE 4
-void (*report_garbage)(unsigned seen_bits, const char *path);
+extern void (*report_garbage)(unsigned seen_bits, const char *path);
void reprepare_packed_git(struct repository *r);
void install_packed_git(struct repository *r, struct packed_git *pack);
diff --git a/ppc/sha1.c b/ppc/sha1.c
index ec6a1926d4..b5d8af4551 100644
--- a/ppc/sha1.c
+++ b/ppc/sha1.c
@@ -10,7 +10,7 @@
#include <string.h>
#include "sha1.h"
-extern void ppc_sha1_core(uint32_t *hash, const unsigned char *p,
+void ppc_sha1_core(uint32_t *hash, const unsigned char *p,
unsigned int nblocks);
int ppc_SHA1_Init(ppc_SHA_CTX *c)
--
2.21.0.921.gb27c68c4e9