Commit 7803c443 authored by unknown's avatar unknown

Removing registry service parameter code

parent 0d62f810
......@@ -376,9 +376,6 @@ static bool read_init_file(char *file_name);
#ifdef __NT__
static pthread_handler_decl(handle_connections_namedpipes,arg);
#endif
#ifdef __WIN__
static int get_service_parameters();
#endif
extern pthread_handler_decl(handle_slave,arg);
#ifdef SET_RLIMIT_NOFILE
static uint set_maximum_open_files(uint max_file_limit);
......@@ -1620,14 +1617,6 @@ int main(int argc, char **argv)
mysql_tmpdir=(char*) P_tmpdir; /* purecov: inspected */
set_options();
#ifdef __WIN__
/* service parameters can be overwritten by options */
if (get_service_parameters())
{
my_message( 0, "Can't read MySQL service parameters", MYF(0) );
exit( 1 );
}
#endif
get_options(argc,argv);
if (opt_log || opt_update_log || opt_slow_log || opt_bin_log)
strcat(server_version,"-log");
......@@ -3925,482 +3914,6 @@ static void get_options(int argc,char **argv)
}
#ifdef __WIN__
#ifndef KEY_SERVICE_PARAMETERS
#define KEY_SERVICE_PARAMETERS "SYSTEM\\CurrentControlSet\\Services\\MySql\\Parameters"
#endif
#define COPY_KEY_VALUE(value) if (copy_key_value(hParametersKey,&(value),lpszValue)) return 1
#define CHECK_KEY_TYPE(type,name) if ( type != dwKeyValueType ) { key_type_error(hParametersKey,name); return 1; }
#define SET_CHANGEABLE_VARVAL(varname) if (set_varval(hParametersKey,varname,szKeyValueName,dwKeyValueType,lpdwValue)) return 1;
static void key_type_error(HKEY hParametersKey,const char *szKeyValueName)
{
TCHAR szErrorMsg[512];
RegCloseKey( hParametersKey );
strxmov(szErrorMsg,TEXT("Value \""),
szKeyValueName,
TEXT("\" of registry key \"" KEY_SERVICE_PARAMETERS "\" has wrong type\n"),NullS);
fprintf(stderr, szErrorMsg); /* not unicode compatible */
}
static bool copy_key_value(HKEY hParametersKey, char **var, const char *value)
{
if (!(*var=my_strdup(value,MYF(MY_WME))))
{
RegCloseKey(hParametersKey);
fprintf(stderr, "Couldn't allocate memory for registry key value\n");
return 1;
}
return 0;
}
static bool set_varval(HKEY hParametersKey,const char *var,
const char *szKeyValueName, DWORD dwKeyValueType,
LPDWORD lpdwValue)
{
CHECK_KEY_TYPE(dwKeyValueType, szKeyValueName );
if (set_changeable_varval(var, *lpdwValue, changeable_vars))
{
TCHAR szErrorMsg [ 512 ];
RegCloseKey( hParametersKey );
strxmov(szErrorMsg,
TEXT("Value \""),
szKeyValueName,
TEXT("\" of registry key \"" KEY_SERVICE_PARAMETERS "\" is invalid\n"),NullS);
fprintf( stderr, szErrorMsg ); /* not unicode compatible */
return 1;
}
return 0;
}
static int get_service_parameters()
{
DWORD dwLastError;
HKEY hParametersKey;
DWORD dwIndex;
TCHAR szKeyValueName [ 256 ];
DWORD dwKeyValueName;
DWORD dwKeyValueType;
BYTE bKeyValueBuffer [ 512 ];
DWORD dwKeyValueBuffer;
LPDWORD lpdwValue = (LPDWORD) &bKeyValueBuffer[0];
LPCTSTR lpszValue = (LPCTSTR) &bKeyValueBuffer[0];
/* open parameters of service */
dwLastError = (DWORD) RegOpenKeyEx( HKEY_LOCAL_MACHINE,
TEXT(KEY_SERVICE_PARAMETERS), 0,
KEY_READ, &hParametersKey );
if ( dwLastError == ERROR_FILE_NOT_FOUND ) /* no parameters available */
return 0;
if ( dwLastError != ERROR_SUCCESS )
{
fprintf(stderr,"Can't open registry key \"" KEY_SERVICE_PARAMETERS "\" for reading\n" );
return 1;
}
/* enumerate all values of key */
dwIndex = 0;
dwKeyValueName = sizeof( szKeyValueName ) / sizeof( TCHAR );
dwKeyValueBuffer = sizeof( bKeyValueBuffer );
while ( (dwLastError = (DWORD) RegEnumValue(hParametersKey, dwIndex,
szKeyValueName, &dwKeyValueName,
NULL, &dwKeyValueType,
&bKeyValueBuffer[0],
&dwKeyValueBuffer))
!= ERROR_NO_MORE_ITEMS )
{
/* check if error occured */
if ( dwLastError != ERROR_SUCCESS )
{
RegCloseKey( hParametersKey );
fprintf( stderr, "Can't enumerate values of registry key \"" KEY_SERVICE_PARAMETERS "\"\n" );
return 1;
}
if ( lstrcmp(szKeyValueName, TEXT("BaseDir")) == 0 )
{
CHECK_KEY_TYPE( REG_SZ, szKeyValueName);
strmov( mysql_home, lpszValue ); /* not unicode compatible */
}
else if ( lstrcmp(szKeyValueName, TEXT("BindAddress")) == 0 )
{
CHECK_KEY_TYPE( REG_SZ, szKeyValueName);
my_bind_addr = (ulong) inet_addr( lpszValue );
if ( my_bind_addr == (ulong) INADDR_NONE )
{
struct hostent* ent;
if ( !(*lpszValue) )
{
char szHostName [ 256 ];
if ( gethostname(szHostName, sizeof(szHostName)) == SOCKET_ERROR )
{
RegCloseKey( hParametersKey );
fprintf( stderr, "Can't get my own hostname\n" );
return 1;
}
ent = gethostbyname( szHostName );
}
else ent = gethostbyname( lpszValue );
if ( !ent )
{
RegCloseKey( hParametersKey );
fprintf( stderr, "Can't resolve hostname!\n" );
return 1;
}
my_bind_addr = (ulong) ((in_addr*)ent->h_addr_list[0])->s_addr;
}
}
else if ( lstrcmp(szKeyValueName, TEXT("BigTables")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName);
if ( *lpdwValue )
thd_startup_options |= OPTION_BIG_TABLES;
else
thd_startup_options &= ~((ulong)OPTION_BIG_TABLES);
}
else if ( lstrcmp(szKeyValueName, TEXT("DataDir")) == 0 )
{
CHECK_KEY_TYPE( REG_SZ, szKeyValueName );
strmov( mysql_real_data_home, lpszValue ); /* not unicode compatible */
}
else if ( lstrcmp(szKeyValueName, TEXT("Locking")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
my_disable_locking = !(*lpdwValue);
}
else if ( lstrcmp(szKeyValueName, TEXT("LogFile")) == 0 )
{
CHECK_KEY_TYPE( REG_SZ, szKeyValueName );
opt_log = 1;
COPY_KEY_VALUE( opt_logname );
}
else if ( lstrcmp(szKeyValueName, TEXT("UpdateLogFile")) == 0 )
{
CHECK_KEY_TYPE( REG_SZ, szKeyValueName );
opt_update_log = 1;
COPY_KEY_VALUE( opt_update_logname );
}
else if ( lstrcmp(szKeyValueName, TEXT("BinaryLogFile")) == 0 )
{
CHECK_KEY_TYPE( REG_SZ, szKeyValueName );
opt_bin_log = 1;
COPY_KEY_VALUE( opt_bin_logname );
}
else if ( lstrcmp(szKeyValueName, TEXT("BinaryLogIndexFile")) == 0 )
{
CHECK_KEY_TYPE( REG_SZ, szKeyValueName );
opt_bin_log = 1;
COPY_KEY_VALUE( opt_binlog_index_name );
}
else if ( lstrcmp(szKeyValueName, TEXT("ISAMLogFile")) == 0 )
{
CHECK_KEY_TYPE( REG_SZ, szKeyValueName );
COPY_KEY_VALUE( myisam_log_filename );
opt_myisam_log=1;
}
else if ( lstrcmp(szKeyValueName, TEXT("LongLogFormat")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
if ( *lpdwValue )
opt_specialflag |= SPECIAL_LONG_LOG_FORMAT;
else
opt_specialflag &= ~((ulong)SPECIAL_LONG_LOG_FORMAT);
}
else if ( lstrcmp(szKeyValueName, TEXT("LowPriorityUpdates")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
if ( *lpdwValue )
{
thd_startup_options |= OPTION_LOW_PRIORITY_UPDATES;
low_priority_updates = 1;
}
else
{
thd_startup_options &= ~((ulong)OPTION_LOW_PRIORITY_UPDATES);
low_priority_updates = 0;
}
}
else if ( lstrcmp(szKeyValueName, TEXT("Port")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
mysql_port = (unsigned int) *lpdwValue;
}
else if ( lstrcmp(szKeyValueName, TEXT("OldProtocol")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
protocol_version = *lpdwValue ? PROTOCOL_VERSION - 1 : PROTOCOL_VERSION;
}
else if ( lstrcmp(szKeyValueName, TEXT("HostnameResolving")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
if ( !*lpdwValue )
opt_specialflag |= SPECIAL_NO_RESOLVE;
else
opt_specialflag &= ~((ulong)SPECIAL_NO_RESOLVE);
}
else if ( lstrcmp(szKeyValueName, TEXT("Networking")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
opt_disable_networking = !(*lpdwValue);
}
else if ( lstrcmp(szKeyValueName, TEXT("ShowDatabase")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
opt_skip_show_db = !(*lpdwValue);
}
else if ( lstrcmp(szKeyValueName, TEXT("HostnameCaching")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
if ( !*lpdwValue )
opt_specialflag |= SPECIAL_NO_HOST_CACHE;
else
opt_specialflag &= ~((ulong)SPECIAL_NO_HOST_CACHE);
}
else if ( lstrcmp(szKeyValueName, TEXT("ThreadPriority")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
if ( !(*lpdwValue) )
opt_specialflag |= SPECIAL_NO_PRIOR;
else
opt_specialflag &= ~((ulong)SPECIAL_NO_PRIOR);
}
else if ( lstrcmp(szKeyValueName, TEXT("NamedPipe")) == 0 )
{
CHECK_KEY_TYPE( REG_SZ, szKeyValueName );
COPY_KEY_VALUE( mysql_unix_port );
}
else if ( lstrcmp(szKeyValueName, TEXT("TempDir")) == 0 )
{
CHECK_KEY_TYPE( REG_SZ, szKeyValueName );
COPY_KEY_VALUE( mysql_tmpdir );
}
else if ( lstrcmp(szKeyValueName, TEXT("FlushTables")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
nisam_flush = myisam_flush= *lpdwValue ? 1 : 0;
}
else if ( lstrcmp(szKeyValueName, TEXT("BackLog")) == 0 )
{
SET_CHANGEABLE_VARVAL( "back_log" );
}
else if ( lstrcmp(szKeyValueName, TEXT("ConnectTimeout")) == 0 )
{
SET_CHANGEABLE_VARVAL( "connect_timeout" );
}
else if ( lstrcmp(szKeyValueName, TEXT("JoinBufferSize")) == 0 )
{
SET_CHANGEABLE_VARVAL( "join_buffer" );
}
else if ( lstrcmp(szKeyValueName, TEXT("KeyBufferSize")) == 0 )
{
SET_CHANGEABLE_VARVAL( "key_buffer" );
}
else if ( lstrcmp(szKeyValueName, TEXT("LongQueryTime")) == 0 )
{
SET_CHANGEABLE_VARVAL( "long_query_time" );
}
else if ( lstrcmp(szKeyValueName, TEXT("MaxAllowedPacket")) == 0 )
{
SET_CHANGEABLE_VARVAL( "max_allowed_packet" );
}
else if ( lstrcmp(szKeyValueName, TEXT("MaxConnections")) == 0 )
{
SET_CHANGEABLE_VARVAL( "max_connections" );
}
else if ( lstrcmp(szKeyValueName, TEXT("MaxUserConnections")) == 0 )
{
SET_CHANGEABLE_VARVAL( "max_user_connections" );
}
else if ( lstrcmp(szKeyValueName, TEXT("MaxConnectErrors")) == 0 )
{
SET_CHANGEABLE_VARVAL( "max_connect_errors" );
}
else if ( lstrcmp(szKeyValueName, TEXT("MaxInsertDelayedThreads")) == 0 )
{
SET_CHANGEABLE_VARVAL( "max_delayed_threads" );
}
else if ( lstrcmp(szKeyValueName, TEXT("MaxJoinSize")) == 0 )
{
SET_CHANGEABLE_VARVAL( "max_join_size" );
}
else if ( lstrcmp(szKeyValueName, TEXT("MaxSortLength")) == 0 )
{
SET_CHANGEABLE_VARVAL( "max_sort_length" );
}
else if ( lstrcmp(szKeyValueName, TEXT("NetBufferLength")) == 0 )
{
SET_CHANGEABLE_VARVAL( "net_buffer_length" );
}
else if ( lstrcmp(szKeyValueName, TEXT("RecordBufferSize")) == 0 )
{
SET_CHANGEABLE_VARVAL( "record_buffer" );
}
else if ( lstrcmp(szKeyValueName, TEXT("SortBufferSize")) == 0 )
{
SET_CHANGEABLE_VARVAL( "sort_buffer" );
}
else if ( lstrcmp(szKeyValueName, TEXT("TableCacheSize")) == 0 )
{
SET_CHANGEABLE_VARVAL( "table_cache" );
}
else if ( lstrcmp(szKeyValueName, TEXT("TmpTableSize")) == 0 )
{
SET_CHANGEABLE_VARVAL( "tmp_table_size" );
}
else if ( lstrcmp(szKeyValueName, TEXT("ThreadStackSize")) == 0 )
{
SET_CHANGEABLE_VARVAL( "thread_stack" );
}
else if ( lstrcmp(szKeyValueName, TEXT("WaitTimeout")) == 0 )
{
SET_CHANGEABLE_VARVAL( "wait_timeout" );
}
else if ( lstrcmp(szKeyValueName, TEXT("DelayedInsertTimeout"))
== 0 )
{
SET_CHANGEABLE_VARVAL( "delayed_insert_timeout" );
}
else if ( lstrcmp(szKeyValueName, TEXT("DelayedInsertLimit")) ==
0 )
{
SET_CHANGEABLE_VARVAL( "delayed_insert_limit" );
}
else if ( lstrcmp(szKeyValueName, TEXT("DelayedQueueSize")) == 0
)
{
SET_CHANGEABLE_VARVAL( "delayed_queue_size" );
}
else if ( lstrcmp(szKeyValueName, TEXT("FlushTime")) == 0 )
{
SET_CHANGEABLE_VARVAL( "flush_time" );
}
else if ( lstrcmp(szKeyValueName, TEXT("InteractiveTimeout")) ==
0 )
{
SET_CHANGEABLE_VARVAL( "interactive_timeout" );
}
else if ( lstrcmp(szKeyValueName, TEXT("LowerCaseTableNames"))
== 0 )
{
SET_CHANGEABLE_VARVAL( "lower_case_table_names" );
}
else if ( lstrcmp(szKeyValueName, TEXT("MaxHeapTableSize")) == 0
)
{
SET_CHANGEABLE_VARVAL( "max_heap_table_size" );
}
else if ( lstrcmp(szKeyValueName, TEXT("MaxTmpTables")) == 0 )
{
SET_CHANGEABLE_VARVAL( "max_tmp_tables" );
}
else if ( lstrcmp(szKeyValueName, TEXT("MaxWriteLockCount")) ==
0 )
{
SET_CHANGEABLE_VARVAL( "max_write_lock_count" );
}
else if ( lstrcmp(szKeyValueName, TEXT("NetRetryCount")) == 0 )
{
SET_CHANGEABLE_VARVAL( "net_retry_count" );
}
else if ( lstrcmp(szKeyValueName, TEXT("QueryBufferSize")) == 0
)
{
SET_CHANGEABLE_VARVAL( "query_buffer_size" );
}
else if ( lstrcmp(szKeyValueName, TEXT("ThreadConcurrency")) ==
0 )
{
SET_CHANGEABLE_VARVAL( "thread_concurrency" );
}
#ifdef HAVE_GEMINI_DB
else if ( lstrcmp(szKeyValueName, TEXT("GeminiLazyCommit")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
if ( *lpdwValue )
gemini_options |= GEMOPT_FLUSH_LOG;
else
gemini_options &= ~GEMOPT_FLUSH_LOG;
}
else if ( lstrcmp(szKeyValueName, TEXT("GeminiFullRecovery")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
if ( *lpdwValue )
gemini_options &= ~GEMOPT_NO_CRASH_PROTECTION;
else
gemini_options |= GEMOPT_NO_CRASH_PROTECTION;
}
else if ( lstrcmp(szKeyValueName, TEXT("GeminiNoRecovery")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
if ( *lpdwValue )
gemini_options |= GEMOPT_NO_CRASH_PROTECTION;
else
gemini_options &= ~GEMOPT_NO_CRASH_PROTECTION;
}
else if ( lstrcmp(szKeyValueName, TEXT("GeminiUnbufferedIO")) == 0 )
{
CHECK_KEY_TYPE( REG_DWORD, szKeyValueName );
if ( *lpdwValue )
gemini_options |= GEMOPT_UNBUFFERED_IO;
else
gemini_options &= ~GEMOPT_UNBUFFERED_IO;
}
else if ( lstrcmp(szKeyValueName, TEXT("GeminiLockTableSize")) == 0 )
{
SET_CHANGEABLE_VARVAL( "gemini_lock_table_size" );
}
else if ( lstrcmp(szKeyValueName, TEXT("GeminiBufferCache")) == 0 )
{
SET_CHANGEABLE_VARVAL( "gemini_buffer_cache" );
}
else if ( lstrcmp(szKeyValueName, TEXT("GeminiSpinRetries")) == 0 )
{
SET_CHANGEABLE_VARVAL( "gemini_spin_retries" );
}
else if ( lstrcmp(szKeyValueName, TEXT("GeminiIoThreads")) == 0 )
{
SET_CHANGEABLE_VARVAL( "gemini_io_threads" );
}
else if ( lstrcmp(szKeyValueName, TEXT("GeminiConnectionLimit")) == 0 )
{
SET_CHANGEABLE_VARVAL( "gemini_connection_limit" );
}
else if ( lstrcmp(szKeyValueName, TEXT("GeminiLogClusterSize")) == 0 )
{
SET_CHANGEABLE_VARVAL( "gemini_log_cluster_size" );
}
else if ( lstrcmp(szKeyValueName, TEXT("GeminiLockWaitTimeout")) == 0 )
{
SET_CHANGEABLE_VARVAL( "gemini_lock_wait_timeout" );
}
#endif
else
{
TCHAR szErrorMsg [ 512 ];
RegCloseKey( hParametersKey );
lstrcpy( szErrorMsg, TEXT("Value \"") );
lstrcat( szErrorMsg, szKeyValueName );
lstrcat( szErrorMsg, TEXT("\" of registry key \"" KEY_SERVICE_PARAMETERS "\" is not defined by MySQL\n") );
fprintf( stderr, szErrorMsg ); /* not unicode compatible */
return 1;
}
dwIndex++;
dwKeyValueName = sizeof( szKeyValueName ) / sizeof( TCHAR );
dwKeyValueBuffer = sizeof( bKeyValueBuffer );
}
RegCloseKey( hParametersKey );
/* paths are fixed by method get_options() */
return 0;
}
#endif
static char *get_relative_path(const char *path)
{
if (test_if_hard_path(path) &&
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment