Auto-merge from mysql-5.1-bugteam for bug#56821.
This commit is contained in:
commit
7cc604561c
46
sql/log.cc
46
sql/log.cc
@ -5456,10 +5456,32 @@ extern "C" my_bool reopen_fstreams(const char *filename,
|
|||||||
FILE *outstream, FILE *errstream)
|
FILE *outstream, FILE *errstream)
|
||||||
{
|
{
|
||||||
int handle_fd;
|
int handle_fd;
|
||||||
int stream_fd;
|
int err_fd, out_fd;
|
||||||
HANDLE osfh;
|
HANDLE osfh;
|
||||||
|
|
||||||
DBUG_ASSERT(filename && (outstream || errstream));
|
DBUG_ASSERT(filename && errstream);
|
||||||
|
|
||||||
|
// Services don't have stdout/stderr on Windows, so _fileno returns -1.
|
||||||
|
err_fd= _fileno(errstream);
|
||||||
|
if (err_fd < 0)
|
||||||
|
{
|
||||||
|
if (!freopen(filename, "a+", errstream))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
setbuf(errstream, NULL);
|
||||||
|
err_fd= _fileno(errstream);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (outstream)
|
||||||
|
{
|
||||||
|
out_fd= _fileno(outstream);
|
||||||
|
if (out_fd < 0)
|
||||||
|
{
|
||||||
|
if (!freopen(filename, "a+", outstream))
|
||||||
|
return TRUE;
|
||||||
|
out_fd= _fileno(outstream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((osfh= CreateFile(filename, GENERIC_READ | GENERIC_WRITE,
|
if ((osfh= CreateFile(filename, GENERIC_READ | GENERIC_WRITE,
|
||||||
FILE_SHARE_READ | FILE_SHARE_WRITE |
|
FILE_SHARE_READ | FILE_SHARE_WRITE |
|
||||||
@ -5475,24 +5497,16 @@ extern "C" my_bool reopen_fstreams(const char *filename,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (outstream)
|
if (_dup2(handle_fd, err_fd) < 0)
|
||||||
{
|
{
|
||||||
stream_fd= _fileno(outstream);
|
CloseHandle(osfh);
|
||||||
if (_dup2(handle_fd, stream_fd) < 0)
|
return TRUE;
|
||||||
{
|
|
||||||
CloseHandle(osfh);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errstream)
|
if (outstream && _dup2(handle_fd, out_fd) < 0)
|
||||||
{
|
{
|
||||||
stream_fd= _fileno(errstream);
|
CloseHandle(osfh);
|
||||||
if (_dup2(handle_fd, stream_fd) < 0)
|
return TRUE;
|
||||||
{
|
|
||||||
CloseHandle(osfh);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_close(handle_fd);
|
_close(handle_fd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user