Win32: move main macro to a function
The code in the MinGW main macro is getting more and more complex, move to a separate initialization function for readabiliy and extensibility. Signed-off-by: Karsten Blees <blees@dcon.de> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Signed-off-by: Stepan Kasal <kasal@ucw.cz> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c2369bdf7f
commit
13f1df432e
@ -1847,3 +1847,18 @@ int mingw_offset_1st_component(const char *path)
|
|||||||
|
|
||||||
return offset + is_dir_sep(path[offset]);
|
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);
|
||||||
|
}
|
||||||
|
@ -363,22 +363,16 @@ void free_environ(char **env);
|
|||||||
extern CRITICAL_SECTION pinfo_cs;
|
extern CRITICAL_SECTION pinfo_cs;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A replacement of main() that ensures that argv[0] has a path
|
* A replacement of main() that adds win32 specific initialization.
|
||||||
* and that default fmode and std(in|out|err) are in binary mode
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void mingw_startup();
|
||||||
#define main(c,v) dummy_decl_mingw_main(); \
|
#define main(c,v) dummy_decl_mingw_main(); \
|
||||||
static int mingw_main(c,v); \
|
static int mingw_main(c,v); \
|
||||||
int main(int argc, char **argv) \
|
int main(int argc, char **argv) \
|
||||||
{ \
|
{ \
|
||||||
extern CRITICAL_SECTION pinfo_cs; \
|
mingw_startup(); \
|
||||||
_fmode = _O_BINARY; \
|
return mingw_main(__argc, __argv); \
|
||||||
_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); \
|
|
||||||
} \
|
} \
|
||||||
static int mingw_main(c,v)
|
static int mingw_main(c,v)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user