Set _O_BINARY as default fmode for both MinGW and MSVC
MinGW set the _CRT_fmode to set both the default fmode and _O_BINARY on stdin/stdout/stderr. Rather use the main() define in mingw.h to set this for both MinGW and MSVC. This will ensure that a MinGW and MSVC build will handle input and output identically. Signed-off-by: Marius Storm-Olsen <mstormo@gmail.com> Acked-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3f83bf3784
commit
a6ca8c6246
@ -3,8 +3,6 @@
|
|||||||
#include <conio.h>
|
#include <conio.h>
|
||||||
#include "../strbuf.h"
|
#include "../strbuf.h"
|
||||||
|
|
||||||
unsigned int _CRT_fmode = _O_BINARY;
|
|
||||||
|
|
||||||
static int err_win_to_posix(DWORD winerr)
|
static int err_win_to_posix(DWORD winerr)
|
||||||
{
|
{
|
||||||
int error = ENOSYS;
|
int error = ENOSYS;
|
||||||
|
@ -227,12 +227,17 @@ void free_environ(char **env);
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* A replacement of main() that ensures that argv[0] has a path
|
* 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
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define main(c,v) dummy_decl_mingw_main(); \
|
#define main(c,v) dummy_decl_mingw_main(); \
|
||||||
static int mingw_main(); \
|
static int mingw_main(); \
|
||||||
int main(int argc, const char **argv) \
|
int main(int argc, const char **argv) \
|
||||||
{ \
|
{ \
|
||||||
|
_fmode = _O_BINARY; \
|
||||||
|
_setmode(_fileno(stdin), _O_BINARY); \
|
||||||
|
_setmode(_fileno(stdout), _O_BINARY); \
|
||||||
|
_setmode(_fileno(stderr), _O_BINARY); \
|
||||||
argv[0] = xstrdup(_pgmptr); \
|
argv[0] = xstrdup(_pgmptr); \
|
||||||
return mingw_main(argc, argv); \
|
return mingw_main(argc, argv); \
|
||||||
} \
|
} \
|
||||||
|
Loading…
Reference in New Issue
Block a user