summaryrefslogtreecommitdiff
path: root/compat
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2014-07-09 11:34:22 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2014-07-09 11:34:22 -0700
commitba655d15b58ab2a00032b74e5b2617a0b658a01f (patch)
treed5085d283250abde9bbb8493e16c4d83e4f69090 /compat
parentMerge branch 'jk/pretty-G-format-fixes' (diff)
parentmingw: avoid const warning (diff)
downloadtgif-ba655d15b58ab2a00032b74e5b2617a0b658a01f.tar.xz
Merge branch 'sk/mingw-main'
* sk/mingw-main: mingw: avoid const warning Win32: move main macro to a function
Diffstat (limited to 'compat')
-rw-r--r--compat/mingw.c15
-rw-r--r--compat/mingw.h14
2 files changed, 19 insertions, 10 deletions
diff --git a/compat/mingw.c b/compat/mingw.c
index a0e13bc862..c03bafa9c4 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -1847,3 +1847,18 @@ int mingw_offset_1st_component(const char *path)
return offset + is_dir_sep(path[offset]);
}
+
+void mingw_startup()
+{
+ /* copy executable name to argv[0] */
+ __argv[0] = xstrdup(_pgmptr);
+
+ /* initialize critical section for waitpid pinfo_t list */
+ InitializeCriticalSection(&pinfo_cs);
+
+ /* set up default file mode and file modes for stdin/out/err */
+ _fmode = _O_BINARY;
+ _setmode(_fileno(stdin), _O_BINARY);
+ _setmode(_fileno(stdout), _O_BINARY);
+ _setmode(_fileno(stderr), _O_BINARY);
+}
diff --git a/compat/mingw.h b/compat/mingw.h
index 3eaf822e28..6dc8b1a1b4 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -363,22 +363,16 @@ void free_environ(char **env);
extern CRITICAL_SECTION pinfo_cs;
/*
- * A replacement of main() that ensures that argv[0] has a path
- * and that default fmode and std(in|out|err) are in binary mode
+ * A replacement of main() that adds win32 specific initialization.
*/
+void mingw_startup();
#define main(c,v) dummy_decl_mingw_main(); \
static int mingw_main(c,v); \
int main(int argc, char **argv) \
{ \
- extern CRITICAL_SECTION pinfo_cs; \
- _fmode = _O_BINARY; \
- _setmode(_fileno(stdin), _O_BINARY); \
- _setmode(_fileno(stdout), _O_BINARY); \
- _setmode(_fileno(stderr), _O_BINARY); \
- argv[0] = xstrdup(_pgmptr); \
- InitializeCriticalSection(&pinfo_cs); \
- return mingw_main(argc, argv); \
+ mingw_startup(); \
+ return mingw_main(__argc, (void *)__argv); \
} \
static int mingw_main(c,v)