sparse: Fix mingw_main() argument number/type errors
authorRamsay Jones <ramsay@ramsay1.demon.co.uk>
Sat, 27 Apr 2013 19:19:47 +0000 (20:19 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 28 Apr 2013 19:32:08 +0000 (12:32 -0700)
Sparse issues 68 errors (two errors for each main() function) such
as the following:

SP git.c
git.c:510:5: error: too many arguments for function mingw_main
git.c:510:5: error: symbol 'mingw_main' redeclared with different type \
(originally declared at git.c:510) - different argument counts

The errors are caused by the 'main' macro used by the MinGW build
to provide a replacement main() function. The original main function
is effectively renamed to 'mingw_main' and is called from the new
main function. The replacement main is used to execute certain actions
common to all git programs on MinGW (e.g. ensure the standard I/O
streams are in binary mode).

In order to suppress the errors, we change the macro to include the
parameters in the declaration of the mingw_main function.

Unfortunately, this change provokes both sparse and gcc to complain
about 9 calls to mingw_main(), such as the following:

CC git.o
git.c: In function 'main':
git.c:510: warning: passing argument 2 of 'mingw_main' from \
incompatible pointer type
git.c:510: note: expected 'const char **' but argument is of \
type 'char **'

In order to suppress these warnings, since both of the main
functions need to be declared with the same prototype, we
change the declaration of the 9 main functions, thus:

int main(int argc, char **argv)

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/mingw.h
credential-store.c
fast-import.c
git.c
remote-testsvn.c
test-chmtime.c
test-index-version.c
test-mergesort.c
test-parse-options.c
test-subprocess.c
index 3036980ca2f83b2139b5c2895687ebd775ad5834..bd0a88bc1d19583b7dfed36fd8f7a7af7f386296 100644 (file)
@@ -346,8 +346,8 @@ extern CRITICAL_SECTION pinfo_cs;
  */
 
 #define main(c,v) dummy_decl_mingw_main(); \
-static int mingw_main(); \
-int main(int argc, const char **argv) \
+static int mingw_main(c,v); \
+int main(int argc, char **argv) \
 { \
        extern CRITICAL_SECTION pinfo_cs; \
        _fmode = _O_BINARY; \
index 26f7589a60b882251b1e601433a6d8be4ddfe794..f9146e576f82cd774f697420e2bb456f56ad65dd 100644 (file)
@@ -114,7 +114,7 @@ static int lookup_credential(const char *fn, struct credential *c)
        return c->username && c->password;
 }
 
-int main(int argc, const char **argv)
+int main(int argc, char **argv)
 {
        const char * const usage[] = {
                "git credential-store [options] <action>",
@@ -131,7 +131,7 @@ int main(int argc, const char **argv)
 
        umask(077);
 
-       argc = parse_options(argc, argv, NULL, options, usage, 0);
+       argc = parse_options(argc, (const char **)argv, NULL, options, usage, 0);
        if (argc != 1)
                usage_with_options(usage, options);
        op = argv[0];
index 5f539d7d8f7e087423734fb1d19e0d5e580fbe6e..6d9445302614318c0322fdb2fc403aa22cd79804 100644 (file)
@@ -297,7 +297,7 @@ static int failure;
 static FILE *pack_edges;
 static unsigned int show_stats = 1;
 static int global_argc;
-static const char **global_argv;
+static char **global_argv;
 
 /* Memory pools */
 static size_t mem_pool_alloc = 2*1024*1024 - sizeof(struct mem_pool);
@@ -3347,7 +3347,7 @@ static void parse_argv(void)
                read_marks();
 }
 
-int main(int argc, const char **argv)
+int main(int argc, char **argv)
 {
        unsigned int i;
 
diff --git a/git.c b/git.c
index 1ada169d5cff3051effee33c6f9ba5b9be15b2e6..7dd07aae7a13aca1c910d6f126495e8280d00a71 100644 (file)
--- a/git.c
+++ b/git.c
@@ -507,8 +507,9 @@ static int run_argv(int *argcp, const char ***argv)
 }
 
 
-int main(int argc, const char **argv)
+int main(int argc, char **av)
 {
+       const char **argv = (const char **) av;
        const char *cmd;
 
        startup_info = &git_startup_info;
index 5ddf11cc61e22e39f28b3cbe0dbd1075c0881556..d7cd5d272fd23624223f37ec8bda7d4fa8c39bce 100644 (file)
@@ -286,7 +286,7 @@ static int do_command(struct strbuf *line)
        return 0;
 }
 
-int main(int argc, const char **argv)
+int main(int argc, char **argv)
 {
        struct strbuf buf = STRBUF_INIT, url_sb = STRBUF_INIT,
                        private_ref_sb = STRBUF_INIT, marksfilename_sb = STRBUF_INIT,
index 02b42badd550a4b775aab084b38a63c2f4f561a9..94903c4bff1ea7fa8818032b5fd310c98007eee3 100644 (file)
@@ -56,7 +56,7 @@ static int timespec_arg(const char *arg, long int *set_time, int *set_eq)
        return 1;
 }
 
-int main(int argc, const char *argv[])
+int main(int argc, char *argv[])
 {
        static int verbose;
 
index bfaad9e09e63a3f9e0d0d3575cce32859382398c..05d4699c4a6cf32b2b6291e275dafa2744fe19d6 100644 (file)
@@ -1,6 +1,6 @@
 #include "cache.h"
 
-int main(int argc, const char **argv)
+int main(int argc, char **argv)
 {
        struct cache_header hdr;
        int version;
index 3f388b4ce0bde90ff5593b42948338d5b73e8da9..ea3b959e94ff6f53726d4fce955bca1181a3be07 100644 (file)
@@ -22,7 +22,7 @@ static int compare_strings(const void *a, const void *b)
        return strcmp(x->text, y->text);
 }
 
-int main(int argc, const char **argv)
+int main(int argc, char **argv)
 {
        struct line *line, *p = NULL, *lines = NULL;
        struct strbuf sb = STRBUF_INIT;
index 3c9510a70107eed584916d61707002390d7d246a..434e8b892981e3b052437d1c7eb2668a70cf2dfa 100644 (file)
@@ -29,7 +29,7 @@ static int number_callback(const struct option *opt, const char *arg, int unset)
        return 0;
 }
 
-int main(int argc, const char **argv)
+int main(int argc, char **argv)
 {
        const char *prefix = "prefix/";
        const char *usage[] = {
@@ -81,7 +81,7 @@ int main(int argc, const char **argv)
        };
        int i;
 
-       argc = parse_options(argc, argv, prefix, options, usage, 0);
+       argc = parse_options(argc, (const char **)argv, prefix, options, usage, 0);
 
        printf("boolean: %d\n", boolean);
        printf("integer: %u\n", integer);
index f2d4c0d22bd418836eb47424a03d0e903246d92e..93525eb7be48eb11c242200827a7f6f0706ee241 100644 (file)
@@ -1,7 +1,7 @@
 #include "cache.h"
 #include "run-command.h"
 
-int main(int argc, const char **argv)
+int main(int argc, char **argv)
 {
        struct child_process cp;
        int nogit = 0;
@@ -15,6 +15,6 @@ int main(int argc, const char **argv)
        }
        memset(&cp, 0, sizeof(cp));
        cp.git_cmd = 1;
-       cp.argv = argv + 1;
+       cp.argv = (const char **)argv + 1;
        return run_command(&cp);
 }