Commit 32f8b3a3 authored by msvensson@pilot.mysql.com's avatar msvensson@pilot.mysql.com

Merge pilot.mysql.com:/data/msvensson/mysql/my51-mtr-bug33748

into  pilot.mysql.com:/data/msvensson/mysql/mysql-5.1-mtr
parents a7c70e49 76951b55
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#endif #endif
my_bool have_tcpip=0; my_bool have_tcpip=0;
static void my_win_init(void); static void my_win_init(void);
static my_bool win32_have_tcpip(void);
static my_bool win32_init_tcp_ip(); static my_bool win32_init_tcp_ip();
#else #else
#define my_win_init() #define my_win_init()
...@@ -233,29 +232,6 @@ Voluntary context switches %ld, Involuntary context switches %ld\n", ...@@ -233,29 +232,6 @@ Voluntary context switches %ld, Involuntary context switches %ld\n",
#ifdef __WIN__ #ifdef __WIN__
/*
This code is specially for running MySQL, but it should work in
other cases too.
Inizializzazione delle variabili d'ambiente per Win a 32 bit.
Vengono inserite nelle variabili d'ambiente (utilizzando cosi'
le funzioni getenv e putenv) i valori presenti nelle chiavi
del file di registro:
HKEY_LOCAL_MACHINE\software\MySQL
Se la kiave non esiste nonn inserisce nessun valore
*/
/* Crea la stringa d'ambiente */
void setEnvString(char *ret, const char *name, const char *value)
{
DBUG_ENTER("setEnvString");
strxmov(ret, name,"=",value,NullS);
DBUG_VOID_RETURN ;
}
/* /*
my_parameter_handler my_parameter_handler
...@@ -305,17 +281,6 @@ int handle_rtc_failure(int err_type, const char *file, int line, ...@@ -305,17 +281,6 @@ int handle_rtc_failure(int err_type, const char *file, int line,
static void my_win_init(void) static void my_win_init(void)
{ {
HKEY hSoftMysql ;
DWORD dimName = 256 ;
DWORD dimData = 1024 ;
DWORD dimNameValueBuffer = 256 ;
DWORD dimDataValueBuffer = 1024 ;
DWORD indexValue = 0 ;
long retCodeEnumValue ;
char NameValueBuffer[256] ;
char DataValueBuffer[1024] ;
char EnvString[1271] ;
const char *targetKey = "Software\\MySQL" ;
DBUG_ENTER("my_win_init"); DBUG_ENTER("my_win_init");
setlocale(LC_CTYPE, ""); /* To get right sortorder */ setlocale(LC_CTYPE, ""); /* To get right sortorder */
...@@ -343,42 +308,57 @@ static void my_win_init(void) ...@@ -343,42 +308,57 @@ static void my_win_init(void)
_tzset(); _tzset();
/* apre la chiave HKEY_LOCAL_MACHINES\software\MySQL */ {
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,(LPCTSTR)targetKey,0,
KEY_READ,&hSoftMysql) != ERROR_SUCCESS)
DBUG_VOID_RETURN;
/* /*
** Ne legge i valori e li inserisce nell'ambiente Open HKEY_LOCAL_MACHINE\SOFTWARE\MySQL and set any strings found
** suppone che tutti i valori letti siano di tipo stringa + '\0' there as environment variables
** Legge il valore con indice 0 e lo scarta
*/ */
retCodeEnumValue = RegEnumValue(hSoftMysql, indexValue++, HKEY key_handle;
(LPTSTR)NameValueBuffer, &dimNameValueBuffer, if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)"SOFTWARE\\MySQL",
NULL, NULL, (LPBYTE)DataValueBuffer, 0, KEY_READ, &key_handle) == ERROR_SUCCESS)
&dimDataValueBuffer) ; {
LONG ret;
while (retCodeEnumValue != ERROR_NO_MORE_ITEMS) DWORD index= 0;
DWORD type;
char key_name[256], key_data[1024];
size_t key_name_len= sizeof(key_name) - 1;
size_t key_data_len= sizeof(key_data) - 1;
while ((ret= RegEnumValue(key_handle, index++,
key_name, &key_name_len,
NULL, &type, (LPBYTE)&key_data,
&key_data_len)) != ERROR_NO_MORE_ITEMS)
{ {
char *my_env; char env_string[sizeof(key_name) + sizeof(key_data) + 2];
/* Crea la stringa d'ambiente */
setEnvString(EnvString, NameValueBuffer, DataValueBuffer) ;
/* Inserisce i dati come variabili d'ambiente */ if (ret == ERROR_MORE_DATA)
my_env=strdup(EnvString); /* variable for putenv must be allocated ! */ {
putenv(my_env) ; /* Registry value larger than 'key_data', skip it */
DBUG_PRINT("error", ("Skipped registry value that was too large"));
}
else if (ret == ERROR_SUCCESS)
{
if (type == REG_SZ)
{
strxmov(env_string, key_name, "=", key_data, NullS);
dimNameValueBuffer = dimName ; /* variable for putenv must be allocated ! */
dimDataValueBuffer = dimData ; putenv(strdup(env_string)) ;
}
}
else
{
/* Unhandled error, break out of loop */
break;
}
retCodeEnumValue = RegEnumValue(hSoftMysql, indexValue++, key_name_len= sizeof(key_name) - 1;
NameValueBuffer, &dimNameValueBuffer, key_data_len= sizeof(key_data) - 1;
NULL, NULL, (LPBYTE)DataValueBuffer,
&dimDataValueBuffer) ;
} }
/* chiude la chiave */ RegCloseKey(key_handle) ;
RegCloseKey(hSoftMysql) ; }
}
/* The following is used by time functions */ /* The following is used by time functions */
#define OFFSET_TO_EPOC ((__int64) 134774 * 24 * 60 * 60 * 1000 * 1000 * 10) #define OFFSET_TO_EPOC ((__int64) 134774 * 24 * 60 * 60 * 1000 * 1000 * 10)
...@@ -387,7 +367,8 @@ static void my_win_init(void) ...@@ -387,7 +367,8 @@ static void my_win_init(void)
FILETIME ft; FILETIME ft;
LARGE_INTEGER li, t_cnt; LARGE_INTEGER li, t_cnt;
DBUG_ASSERT(sizeof(LARGE_INTEGER) == sizeof(query_performance_frequency)); DBUG_ASSERT(sizeof(LARGE_INTEGER) == sizeof(query_performance_frequency));
if (QueryPerformanceFrequency((LARGE_INTEGER *)&query_performance_frequency)) if (QueryPerformanceFrequency((LARGE_INTEGER *)
&query_performance_frequency) == 0)
query_performance_frequency= 0; query_performance_frequency= 0;
else else
{ {
......
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