Merge branch '5.5' into 10.0
This commit is contained in:
commit
a3f11f7549
@ -24,7 +24,7 @@ use File::Path;
|
|||||||
use base qw(Exporter);
|
use base qw(Exporter);
|
||||||
our @EXPORT= qw(IS_CYGWIN IS_WINDOWS IS_WIN32PERL
|
our @EXPORT= qw(IS_CYGWIN IS_WINDOWS IS_WIN32PERL
|
||||||
native_path posix_path mixed_path
|
native_path posix_path mixed_path
|
||||||
check_socket_path_length process_alive);
|
check_socket_path_length process_alive open_for_append);
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
if ($^O eq "cygwin") {
|
if ($^O eq "cygwin") {
|
||||||
@ -161,4 +161,51 @@ sub process_alive {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use Symbol qw( gensym );
|
||||||
|
|
||||||
|
use if $^O eq 'MSWin32', 'Win32API::File', qw( CloseHandle CreateFile GetOsFHandle OsFHandleOpen OPEN_ALWAYS FILE_APPEND_DATA
|
||||||
|
FILE_SHARE_READ FILE_SHARE_WRITE FILE_SHARE_DELETE );
|
||||||
|
use if $^O eq 'MSWin32', 'Win32::API';
|
||||||
|
|
||||||
|
use constant WIN32API_FILE_NULL => [];
|
||||||
|
|
||||||
|
# Open a file for append
|
||||||
|
# On Windows we use CreateFile with FILE_APPEND_DATA
|
||||||
|
# to insure that writes are atomic, not interleaved
|
||||||
|
# with writes by another processes.
|
||||||
|
sub open_for_append
|
||||||
|
{
|
||||||
|
my ($file) = @_;
|
||||||
|
my $fh = gensym();
|
||||||
|
|
||||||
|
if (IS_WIN32PERL)
|
||||||
|
{
|
||||||
|
my $handle;
|
||||||
|
if (!($handle = CreateFile(
|
||||||
|
$file,
|
||||||
|
FILE_APPEND_DATA(),
|
||||||
|
FILE_SHARE_READ()|FILE_SHARE_WRITE()|FILE_SHARE_DELETE(),
|
||||||
|
WIN32API_FILE_NULL,
|
||||||
|
OPEN_ALWAYS(),# Create if doesn't exist.
|
||||||
|
0,
|
||||||
|
WIN32API_FILE_NULL,
|
||||||
|
)))
|
||||||
|
{
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!OsFHandleOpen($fh, $handle, 'wat'))
|
||||||
|
{
|
||||||
|
CloseHandle($handle);
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
return $fh;
|
||||||
|
}
|
||||||
|
|
||||||
|
open($fh,">>",$file) or return undef;
|
||||||
|
return $fh;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use Carp;
|
use Carp;
|
||||||
|
use My::Platform;
|
||||||
|
|
||||||
sub mtr_fromfile ($);
|
sub mtr_fromfile ($);
|
||||||
sub mtr_tofile ($@);
|
sub mtr_tofile ($@);
|
||||||
@ -45,10 +46,10 @@ sub mtr_fromfile ($) {
|
|||||||
|
|
||||||
sub mtr_tofile ($@) {
|
sub mtr_tofile ($@) {
|
||||||
my $file= shift;
|
my $file= shift;
|
||||||
|
my $fh= open_for_append $file;
|
||||||
open(FILE,">>",$file) or mtr_error("can't open file \"$file\": $!");
|
mtr_error("can't open file \"$file\": $!") unless defined($fh);
|
||||||
print FILE join("", @_);
|
print $fh join("", @_);
|
||||||
close FILE;
|
close $fh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -102,6 +102,7 @@ static FILE *my_win_freopen(const char *path, const char *mode, FILE *stream)
|
|||||||
HANDLE osfh;
|
HANDLE osfh;
|
||||||
|
|
||||||
DBUG_ASSERT(path && stream);
|
DBUG_ASSERT(path && stream);
|
||||||
|
DBUG_ASSERT(strchr(mode, 'a')); /* We use FILE_APPEND_DATA below */
|
||||||
|
|
||||||
/* Services don't have stdout/stderr on Windows, so _fileno returns -1. */
|
/* Services don't have stdout/stderr on Windows, so _fileno returns -1. */
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
@ -112,15 +113,14 @@ static FILE *my_win_freopen(const char *path, const char *mode, FILE *stream)
|
|||||||
fd= _fileno(stream);
|
fd= _fileno(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((osfh= CreateFile(path, GENERIC_READ | GENERIC_WRITE,
|
if ((osfh= CreateFile(path, GENERIC_READ | FILE_APPEND_DATA,
|
||||||
FILE_SHARE_READ | FILE_SHARE_WRITE |
|
FILE_SHARE_READ | FILE_SHARE_WRITE |
|
||||||
FILE_SHARE_DELETE, NULL,
|
FILE_SHARE_DELETE, NULL,
|
||||||
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,
|
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,
|
||||||
NULL)) == INVALID_HANDLE_VALUE)
|
NULL)) == INVALID_HANDLE_VALUE)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if ((handle_fd= _open_osfhandle((intptr_t)osfh,
|
if ((handle_fd= _open_osfhandle((intptr_t)osfh, _O_TEXT)) == -1)
|
||||||
_O_APPEND | _O_TEXT)) == -1)
|
|
||||||
{
|
{
|
||||||
CloseHandle(osfh);
|
CloseHandle(osfh);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -43,7 +43,11 @@ static const char *get_os_version_name(OSVERSIONINFOEX *ver)
|
|||||||
{
|
{
|
||||||
DWORD major = ver->dwMajorVersion;
|
DWORD major = ver->dwMajorVersion;
|
||||||
DWORD minor = ver->dwMinorVersion;
|
DWORD minor = ver->dwMinorVersion;
|
||||||
|
if (major == 10 && minor == 0)
|
||||||
|
{
|
||||||
|
return (ver->wProductType == VER_NT_WORKSTATION) ?
|
||||||
|
"Windows 10" : "Windows Server 2016";
|
||||||
|
}
|
||||||
if (major == 6 && minor == 3)
|
if (major == 6 && minor == 3)
|
||||||
{
|
{
|
||||||
return (ver->wProductType == VER_NT_WORKSTATION)?
|
return (ver->wProductType == VER_NT_WORKSTATION)?
|
||||||
@ -102,7 +106,12 @@ static int uname(struct utsname *buf)
|
|||||||
if(version_str && version_str[0])
|
if(version_str && version_str[0])
|
||||||
sprintf(buf->version, "%s %s",version_str, ver.szCSDVersion);
|
sprintf(buf->version, "%s %s",version_str, ver.szCSDVersion);
|
||||||
else
|
else
|
||||||
sprintf(buf->version, "%s", ver.szCSDVersion);
|
{
|
||||||
|
/* Fallback for unknown versions, e.g "Windows <major_ver>.<minor_ver>" */
|
||||||
|
sprintf(buf->version, "Windows %d.%d%s",
|
||||||
|
ver.dwMajorVersion, ver.dwMinorVersion,
|
||||||
|
(ver.wProductType == VER_NT_WORKSTATION ? "" : " Server"));
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
strcpy(buf->machine, "x64");
|
strcpy(buf->machine, "x64");
|
||||||
|
@ -626,6 +626,10 @@ else
|
|||||||
logging=syslog
|
logging=syslog
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# close stdout and stderr, everything goes to $logging now
|
||||||
|
exec 1>&-
|
||||||
|
exec 2>&-
|
||||||
|
|
||||||
USER_OPTION=""
|
USER_OPTION=""
|
||||||
if test -w / -o "$USER" = "root"
|
if test -w / -o "$USER" = "root"
|
||||||
then
|
then
|
||||||
@ -656,7 +660,7 @@ if [ ! -d $mysql_unix_port_dir ]
|
|||||||
then
|
then
|
||||||
if ! `mkdir -p $mysql_unix_port_dir`
|
if ! `mkdir -p $mysql_unix_port_dir`
|
||||||
then
|
then
|
||||||
echo "Fatal error Can't create database directory '$mysql_unix_port'"
|
log_error "Fatal error Can't create database directory '$mysql_unix_port'"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
chown $user $mysql_unix_port_dir
|
chown $user $mysql_unix_port_dir
|
||||||
|
@ -303,7 +303,7 @@ case "$mode" in
|
|||||||
then
|
then
|
||||||
# Give extra arguments to mysqld with the my.cnf file. This script
|
# Give extra arguments to mysqld with the my.cnf file. This script
|
||||||
# may be overwritten at next upgrade.
|
# may be overwritten at next upgrade.
|
||||||
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" >/dev/null &
|
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" &
|
||||||
wait_for_ready; return_value=$?
|
wait_for_ready; return_value=$?
|
||||||
|
|
||||||
# Make lock for RedHat / SuSE
|
# Make lock for RedHat / SuSE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user