diff options
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/my_fopen.c | 2 | ||||
-rw-r--r-- | mysys/my_init.c | 19 |
2 files changed, 11 insertions, 10 deletions
diff --git a/mysys/my_fopen.c b/mysys/my_fopen.c index 25b492846e5..2bc1da52d66 100644 --- a/mysys/my_fopen.c +++ b/mysys/my_fopen.c @@ -291,6 +291,8 @@ static void make_ftype(register char * to, register int flag) if (flag & FILE_BINARY) *to++='b'; + else if (flag & O_TEXT) + *to++= 't'; if (O_CLOEXEC) *to++= 'e'; diff --git a/mysys/my_init.c b/mysys/my_init.c index 2f21bcb735f..44488e5848a 100644 --- a/mysys/my_init.c +++ b/mysys/my_init.c @@ -401,16 +401,15 @@ static void my_win_init(void) _tzset(); - /* - We do not want text translation (LF->CRLF) - when stdout is console/terminal, it is buggy - */ - if (fileno(stdout) >= 0 && isatty(fileno(stdout))) - (void)setmode(fileno(stdout), O_BINARY); - - if (fileno(stderr) >= 0 && isatty(fileno(stderr))) - (void) setmode(fileno(stderr), O_BINARY); - + /* Disable automatic LF->CRLF translation. */ + FILE* stdf[]= {stdin, stdout, stderr}; + for (int i= 0; i < array_elements(stdf); i++) + { + int fd= fileno(stdf[i]); + if (fd >= 0) + (void) _setmode(fd, O_BINARY); + } + _set_fmode(O_BINARY); setup_codepages(); DBUG_VOID_RETURN; } |