Code

Fix compat/regex ANSIfication on MinGW
authorJohannes Sixt <j6t@kdbg.org>
Thu, 26 Aug 2010 07:58:26 +0000 (09:58 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 26 Aug 2010 16:25:53 +0000 (09:25 -0700)
commitce518bbd6c891f1b9e172b8cb9212c05d731c18e
tree933ad8613826e7294df35b792447870775e4f253
parent231682469b2a6de21a30dbd1dc3d9b3bb8b62e0a
Fix compat/regex ANSIfication on MinGW

compat/regexec.c had a weird combination of function declaration in ANSI
style and function definition in K&R style, for example:

 static unsigned
 re_copy_regs (struct re_registers *regs, regmatch_t *pmatch,
      int nregs, int regs_allocated) internal_function;

 static unsigned
 re_copy_regs (regs, pmatch, nregs, regs_allocated)
     struct re_registers *regs;
     regmatch_t *pmatch;
     int nregs, regs_allocated;
 { ... }

with this #define:

 #ifndef _LIBC
 # ifdef __i386__
 #  define internal_function   __attribute ((regparm (3), stdcall))
 # else
 #  define internal_function
 # endif
 #endif

The original version as shown above was fine, but with the ANSIfied
function definition and in the case where internal_function is not empty,
gcc identifies the declaration and definition as different and bails out.

Adding internal_function to the definition doesn't help (it results in
a syntax error); hence, remove it from the subset of declarations that gcc
flags as erroneous.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/regex/regexec.c