diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-07-09 11:34:22 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-07-09 11:34:22 -0700 |
commit | ba655d15b58ab2a00032b74e5b2617a0b658a01f (patch) | |
tree | d5085d283250abde9bbb8493e16c4d83e4f69090 /compat | |
parent | ce8350f8ea8702a4983ce250f12b6f5def6bd7d9 (diff) | |
parent | a15d4af4497d147bfdb672e121b67db335ec1c21 (diff) | |
download | git-ba655d15b58ab2a00032b74e5b2617a0b658a01f.tar.gz |
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.c | 15 | ||||
-rw-r--r-- | compat/mingw.h | 14 |
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) |