Modified:
branches/guffert/wingui/dialog/callbacks.cpp
branches/guffert/wingui/dialog/callbacks.h
branches/guffert/wingui/dialog/utils.cpp
branches/guffert/wingui/dialog/utils.h
branches/guffert/wingui/odbcdialogparams/main.cpp
branches/guffert/wingui/odbcdialogparams/myString.cpp
branches/guffert/wingui/odbcdialogparams/myString.h
branches/guffert/wingui/odbcdialogparams/odbcdialogparams.cpp
branches/guffert/wingui/odbcdialogparams/odbcdialogparams.h
branches/guffert/wingui/odbcdialogparams/odbcdialogparams.rc
branches/guffert/wingui/odbcdialogparams/odbcdialogparams.vcproj
branches/guffert/wingui/odbcdialogparams/resource.h
branches/guffert/wingui/setup/MYODBCSetupConfigDSNAdd.c
branches/guffert/wingui/setup/MYODBCSetupConfigDSNEdit.c
branches/guffert/wingui/setup/myodbc3S.vcproj
branches/guffert/wingui/util/installer.c
branches/guffert/wingui/util/installer.h
branches/guffert/wingui/util/stringutil.c
branches/guffert/wingui/util/stringutil.h
Log:
unverified and untested move from OdbcDialogParams to DataSource
Modified: branches/guffert/wingui/dialog/callbacks.cpp
===================================================================
--- branches/guffert/wingui/dialog/callbacks.cpp 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/dialog/callbacks.cpp 2007-10-17 21:28:57 UTC (rev 824)
@@ -30,7 +30,7 @@
clearList(errorMsgs);
}
-const wchar_t * mytest(HWND hwnd, OdbcDialogParams* params)
+const wchar_t * mytest(HWND hwnd, DataSource* params)
{
SQLHDBC hDbc = hDBC;
SQLHENV hEnv = SQL_NULL_HENV;
@@ -39,21 +39,27 @@
return L"Connection successful";
else
{
- strAssign(popupMsg, concat(myString(L"Connection Failed:"), popupMsg ) );
+ myString tmp = NULL;
- return popupMsg.c_str();
+ strAssign(tmp,myString(L"Connection Failed:"));
+
+ strAssign(popupMsg, concat( tmp, popupMsg ) );
+
+ x_free( tmp );
+
+ return popupMsg;
}
Disconnect( hDbc, hEnv );
//MessageBox(hwnd, params->dbname.c_str(), params->drvdesc.c_str(), MB_OK);
}
-BOOL mytestaccept(HWND hwnd, OdbcDialogParams* params)
+BOOL mytestaccept(HWND hwnd, DataSource* params)
{
return true/*(IDYES == MessageBoxW(hwnd, params->dbname.c_str(),
params->drvdesc.c_str(), MB_YESNO))*/;
}
-const WCHAR** mygetdatabases(HWND hwnd, OdbcDialogParams* params)
+const WCHAR** mygetdatabases(HWND hwnd, DataSource* params)
{
// = { L"DB1", L"DB2", NULL };
Modified: branches/guffert/wingui/dialog/callbacks.h
===================================================================
--- branches/guffert/wingui/dialog/callbacks.h 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/dialog/callbacks.h 2007-10-17 21:28:57 UTC (rev 824)
@@ -11,10 +11,10 @@
void cleanUp();
// Callbacks indeed
-const wchar_t * mytest (HWND hwnd, OdbcDialogParams* params);
- BOOL mytestaccept (HWND hwnd, OdbcDialogParams* params);
- /*BOOL mytestaccept (HWND hwnd, OdbcDialogParams* params);*/
-const WCHAR** mygetdatabases (HWND hwnd, OdbcDialogParams* params);
+const wchar_t * mytest (HWND hwnd, DataSource* params);
+ BOOL mytestaccept (HWND hwnd, DataSource* params);
+ /*BOOL mytestaccept (HWND hwnd, DataSource* params);*/
+const WCHAR** mygetdatabases (HWND hwnd, DataSource* params);
void myhelp (HWND hwnd);
Modified: branches/guffert/wingui/dialog/utils.cpp
===================================================================
--- branches/guffert/wingui/dialog/utils.cpp 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/dialog/utils.cpp 2007-10-17 21:28:57 UTC (rev 824)
@@ -33,84 +33,35 @@
extern WCHAR ** errorMsgs;
extern myString popupMsg;
-void DS2DialogParams(DataSource &src, OdbcDialogParams &target)
+void DecompileOptions(DataSource ¶ms)
{
- strAssign( target.drvname, src.driver );
- strAssign( target.dsname, src.name );
- strAssign(target.drvdesc, src.description);
- strAssign(target.srvname, src.server);
+ ulong nOptions = sqlwchartoul( params.option );
- target.port = src.port;
-
- strAssign(target.dbname, src.database);
- strAssign(target.username, src.uid);
- strAssign(target.password, src.pwd);
- strAssign(target.socket, src.socket);
-
- strAssign(target.sslkey, src.sslkey);
- strAssign(target.sslcert, src.sslcert);
- strAssign(target.sslca, src.sslca);
- strAssign(target.sslcapath, src.sslcapath);
- strAssign(target.sslcipher, src.sslcipher);
-
- strAssign(target.initstmt, src.initstmt);
- strAssign(target.charset, src.charset);
-
- ulong nOptions = sqlwchartoul( src.option );
-
- target.dont_optimize_column_width= (nOptions & FLAG_FIELD_LENGTH) > 0;
- target.return_matching_rows= (nOptions & FLAG_FOUND_ROWS) >
0; /* 2 */
- target.allow_big_results= (nOptions & FLAG_BIG_PACKETS) > 0;
- target.dont_prompt_upon_connect= (nOptions & FLAG_NO_PROMPT) > 0;
- target.enable_dynamic_cursor= (nOptions & FLAG_DYNAMIC_CURSOR) > 0;
- target.ignore_N_in_name_table= (nOptions & FLAG_NO_SCHEMA) > 0;
- target.user_manager_cursor= (nOptions & FLAG_NO_DEFAULT_CURSOR) > 0;
- target.dont_use_set_locale= (nOptions & FLAG_NO_LOCALE) > 0;
- target.pad_char_to_full_length= (nOptions & FLAG_PAD_SPACE) > 0;
- target.return_table_names_for_SqlDesribeCol= (nOptions & FLAG_FULL_COLUMN_NAMES)
> 0;
- target.use_compressed_protocol= (nOptions & FLAG_COMPRESSED_PROTO) > 0;
- target.ignore_space_after_function_names= (nOptions & FLAG_IGNORE_SPACE) > 0;
- target.force_use_of_named_pipes= (nOptions & FLAG_NAMED_PIPE) > 0;
- target.change_bigint_columns_to_int= (nOptions & FLAG_NO_BIGINT) > 0;
- target.no_catalog= (nOptions & FLAG_NO_CATALOG) > 0;
- target.read_options_from_mycnf= (nOptions & FLAG_USE_MYCNF) > 0;
- target.safe= (nOptions & FLAG_SAFE) > 0;
- target.disable_transactions= (nOptions & FLAG_NO_TRANSACTIONS) > 0;
- target.save_queries= (nOptions & FLAG_LOG_QUERY) > 0;
- target.dont_cache_result= (nOptions & FLAG_NO_CACHE) > 0;
- target.force_use_of_forward_only_cursors= (nOptions & FLAG_FORWARD_CURSOR) > 0;
- target.enable_auto_reconnect= (nOptions & FLAG_AUTO_RECONNECT) > 0;
- target.enable_auto_increment_null_search= (nOptions & FLAG_AUTO_IS_NULL ) > 0;
+ params.dont_optimize_column_width= (nOptions & FLAG_FIELD_LENGTH) > 0;
+ params.return_matching_rows= (nOptions & FLAG_FOUND_ROWS) >
0; /* 2 */
+ params.allow_big_results= (nOptions & FLAG_BIG_PACKETS) > 0;
+ params.dont_prompt_upon_connect= (nOptions & FLAG_NO_PROMPT) > 0;
+ params.enable_dynamic_cursor= (nOptions & FLAG_DYNAMIC_CURSOR) > 0;
+ params.ignore_N_in_name_table= (nOptions & FLAG_NO_SCHEMA) > 0;
+ params.user_manager_cursor= (nOptions & FLAG_NO_DEFAULT_CURSOR) > 0;
+ params.dont_use_set_locale= (nOptions & FLAG_NO_LOCALE) > 0;
+ params.pad_char_to_full_length= (nOptions & FLAG_PAD_SPACE) > 0;
+ params.return_table_names_for_SqlDesribeCol= (nOptions & FLAG_FULL_COLUMN_NAMES)
> 0;
+ params.use_compressed_protocol= (nOptions & FLAG_COMPRESSED_PROTO) > 0;
+ params.ignore_space_after_function_names= (nOptions & FLAG_IGNORE_SPACE) > 0;
+ params.force_use_of_named_pipes= (nOptions & FLAG_NAMED_PIPE) > 0;
+ params.change_bigint_columns_to_int= (nOptions & FLAG_NO_BIGINT) > 0;
+ params.no_catalog= (nOptions & FLAG_NO_CATALOG) > 0;
+ params.read_options_from_mycnf= (nOptions & FLAG_USE_MYCNF) > 0;
+ params.safe= (nOptions & FLAG_SAFE) > 0;
+ params.disable_transactions= (nOptions & FLAG_NO_TRANSACTIONS) > 0;
+ params.save_queries= (nOptions & FLAG_LOG_QUERY) > 0;
+ params.dont_cache_result= (nOptions & FLAG_NO_CACHE) > 0;
+ params.force_use_of_forward_only_cursors= (nOptions & FLAG_FORWARD_CURSOR) > 0;
+ params.enable_auto_reconnect= (nOptions & FLAG_AUTO_RECONNECT) > 0;
+ params.enable_auto_increment_null_search= (nOptions & FLAG_AUTO_IS_NULL ) > 0;
}
-void DialogParams2DS( OdbcDialogParams &src, DataSource &target )
-{
- //TODO: should make copy probably
- target.name= (SQLWCHAR*)src.dsname.c_str();
- target.description= (SQLWCHAR*)src.drvdesc.c_str();
- target.server= (SQLWCHAR*)src.srvname.c_str();
-
- target.port= src.port;
-
- target.database= (SQLWCHAR*)src.dbname.c_str();
- target.uid= (SQLWCHAR*)src.username.c_str();
- target.pwd= (SQLWCHAR*)src.password.c_str();
- target.socket= (SQLWCHAR*)src.socket.c_str();
-
- target.sslkey= (SQLWCHAR*)src.sslkey.c_str();
- target.sslcert= (SQLWCHAR*)src.sslcert.c_str();
- target.sslca= (SQLWCHAR*)src.sslca.c_str();
- target.sslcapath= (SQLWCHAR*)src.sslcapath.c_str();
- target.sslcipher= (SQLWCHAR*)src.sslcipher.c_str();
-
- target.initstmt= (SQLWCHAR*)src.initstmt.c_str();
- target.charset= (SQLWCHAR*)src.charset.c_str();
-
- unsigned long nOptions = CompileOptions( &src );
- target.option = L"";
-}
-
-
void FreeEnvHandle( SQLHENV &hEnv )
{
if ( hDBC == SQL_NULL_HDBC )
@@ -137,12 +88,12 @@
}
-const myString & buildConnectString( OdbcDialogParams* params )
+const myString & buildConnectString( DataSource* params )
{
stringConnectIn = L"DRIVER=";
- if ( myStrlen(params->drvname) > 0 )
- concat(stringConnectIn, params->drvname);
+ if ( myStrlen(params->driver) > 0 )
+ concat(stringConnectIn, params->driver);
else
concat( stringConnectIn, MYODBCINST_DRIVER_NAME );
@@ -204,14 +155,14 @@
concat(stringConnectIn, params->drvname );//pDataSource->pszDRIVER);*/
#endif
- concat( concat( stringConnectIn, L";UID=" ), params->username );
+ concat( concat( stringConnectIn, L";UID=" ), params->uid );
- concat( concat( stringConnectIn, L";PWD=" ), params->password );
+ concat( concat( stringConnectIn, L";PWD=" ), params->pwd );
- concat( concat( stringConnectIn, L";SERVER=" ), params->srvname );
+ concat( concat( stringConnectIn, L";SERVER=" ), params->server );
- if ( myStrlen( params->dbname ) )
- concat( concat( stringConnectIn, L";DATABASE="), params->dbname );
+ if ( myStrlen( params->database ) )
+ concat( concat( stringConnectIn, L";DATABASE="), params->database );
if ( params->port > 0 )
{
@@ -241,7 +192,7 @@
}
-SQLRETURN Connect( SQLHDBC & hDbc, SQLHENV & hEnv, OdbcDialogParams *
params )
+SQLRETURN Connect( SQLHDBC & hDbc, SQLHENV & hEnv, DataSource * params )
{
SQLRETURN nReturn;
// QStringList stringlistDatabases;
@@ -277,7 +228,7 @@
}
}
- nReturn = SQLDriverConnectW( hDbc, NULL, (SQLWCHAR*)( stringConnectIn.c_str() ),
SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT );
+ nReturn = SQLDriverConnectW( hDbc, NULL, (SQLWCHAR*)( stringConnectIn ), SQL_NTS, NULL,
0, NULL, SQL_DRIVER_NOPROMPT );
if ( nReturn != SQL_SUCCESS )
ShowDiagnostics( nReturn, SQL_HANDLE_DBC, hDbc );
@@ -340,7 +291,7 @@
}
-unsigned long CompileOptions( OdbcDialogParams * params )
+unsigned long CompileOptions( DataSource * params )
{
unsigned long nFlags = 0;
Modified: branches/guffert/wingui/dialog/utils.h
===================================================================
--- branches/guffert/wingui/dialog/utils.h 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/dialog/utils.h 2007-10-17 21:28:57 UTC (rev 824)
@@ -13,10 +13,9 @@
void FreeEnvHandle ( SQLHENV &hEnv );
void Disconnect ( SQLHDBC &hDbc, SQLHENV &hEnv );
void Disconnect ( SQLHSTMT &hStmt, SQLHDBC &hDbc, SQLHENV &hEnv );
-const myString & buildConnectString ( OdbcDialogParams* params );
-SQLRETURN Connect ( SQLHDBC & hDbc, SQLHENV & hEnv, OdbcDialogParams *
params );
-unsigned long CompileOptions ( OdbcDialogParams * params );
-void DS2DialogParams ( DataSource &src, OdbcDialogParams &target );
-void DialogParams2DS ( OdbcDialogParams &src, DataSource &target );
+const myString & buildConnectString ( DataSource* params );
+SQLRETURN Connect ( SQLHDBC & hDbc, SQLHENV & hEnv, DataSource *
params );
+unsigned long CompileOptions ( DataSource * params );
+void DecompileOptions ( DataSource &src );
#endif
Modified: branches/guffert/wingui/odbcdialogparams/main.cpp
===================================================================
--- branches/guffert/wingui/odbcdialogparams/main.cpp 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/odbcdialogparams/main.cpp 2007-10-17 21:28:57 UTC (rev 824)
@@ -1,6 +1,6 @@
+#include "stdafx.h"
#include <winsock2.h>
-#include "mysql.h"
-#include "stdafx.h"
+#include <mysql.h>
#include "resource.h"
#ifdef _MANAGED
Modified: branches/guffert/wingui/odbcdialogparams/myString.cpp
===================================================================
--- branches/guffert/wingui/odbcdialogparams/myString.cpp 2007-10-17 04:49:28 UTC (rev
823)
+++ branches/guffert/wingui/odbcdialogparams/myString.cpp 2007-10-17 21:28:57 UTC (rev
824)
@@ -93,5 +93,89 @@
}
#else
-/*** will need to write for wchar_t* later when we will actually switch to it from
wstring */
+
+myString & concat( myString &left, const myString &right )
+{
+ size_t len = myStrlen(right);
+ my_realloc((gptr)left,myStrlen(left)+myStrlen(right)+1, MY_ALLOW_ZERO_PTR);
+ sqlwcharncat2(left, right, &len );
+ //return left.length();
+ return left;
+}
+
+size_t myStrlen( const myString & str )
+{
+ return sqlwcharlen( str );
+}
+
+myString & strAssign ( myString &dest, const wchar_t * src )
+{
+ if (src != NULL)
+ return strAssign( dest, myString( src ) );
+ else
+ {
+ dest= L"";
+ return dest;
+ }
+}
+
+myString & strAssign( myString &dest, const myString & src )
+{
+ if ( dest )
+ x_free(dest);
+ dest = sqlwchardup( src, myStrlen( src ));
+
+ return dest;
+}
+
+void add2list( WCHAR ** & list, const wchar_t * newmember )
+{
+ size_t pos = listSize( (const WCHAR **) list);
+
+ WCHAR** prev = list;
+
+ list = (WCHAR **) realloc( list, (pos + 1 + 1)*sizeof(WCHAR*) );
+
+ if ( list == NULL )
+ {
+ clearList( prev );
+ return;
+ }
+
+ list[ pos + 1 ] = NULL;
+
+ size_t len = wcslen(newmember);
+ wchar_t *realnew = (wchar_t*)malloc(sizeof(wchar_t)*( len + 1 ) );
+
+ wcsncpy( realnew, newmember, len + 1 );
+
+ list[pos] = realnew;
+}
+
+void clearList( WCHAR ** & list )
+{
+ if ( ! list )
+ return;
+
+ for ( unsigned i = 0; list[ i ]; ++i )
+ {
+ free( list[i] );
+ }
+
+ free( list );
+
+ list = NULL;
+}
+
+size_t listSize( const WCHAR ** list )
+{
+ if ( ! list )
+ return 0;/*InvalidSize*/;
+
+ size_t size = 0;
+
+ while ( list[size] ) ++size;
+
+ return size;
+}
#endif
\ No newline at end of file
Modified: branches/guffert/wingui/odbcdialogparams/myString.h
===================================================================
--- branches/guffert/wingui/odbcdialogparams/myString.h 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/odbcdialogparams/myString.h 2007-10-17 21:28:57 UTC (rev 824)
@@ -12,9 +12,10 @@
/** Type definitions and includes if _do_not_ use string class*/
-#include <string.h>
-#typedef wchar_t* myString;
+#include "../util/stringutil.h"
+typedef SQLWCHAR* myString;
+
#endif /*using wstring or wchar_t **/
/*myString & operator += ( myString & lhs, const wchar_t * rhs);*/
@@ -30,7 +31,7 @@
myString & concat ( myString &left, const myString &right );
-size_t myStrlen ( myString & str );
+size_t myStrlen ( const myString & str );
myString & strAssign ( myString &dest, const myString & src );
myString & strAssign ( myString &dest, const wchar_t * src );
Modified: branches/guffert/wingui/odbcdialogparams/odbcdialogparams.cpp
===================================================================
--- branches/guffert/wingui/odbcdialogparams/odbcdialogparams.cpp 2007-10-17 04:49:28 UTC
(rev 823)
+++ branches/guffert/wingui/odbcdialogparams/odbcdialogparams.cpp 2007-10-17 21:28:57 UTC
(rev 824)
@@ -12,7 +12,7 @@
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
-#include <tchar.h>
+/* #include <tchar.h> */
#include <stdio.h>
#include "resource.h"
#include "TabCtrl.h"
@@ -20,11 +20,12 @@
#include <assert.h>
#include <commdlg.h>
#include <shlobj.h>
+#include <xstring>
extern HINSTANCE ghInstance;
-OdbcDialogParams* pParams = NULL;
+DataSource* pParams = NULL;
PWCHAR pCaption = NULL;
bool OkPressed = false;
@@ -60,13 +61,13 @@
#define DO_DATA_EXCHANGE do {\
- SET_STRING(dsname);\
- SET_STRING(drvdesc);\
- SET_STRING(srvname);\
+ SET_STRING(name);\
+ SET_STRING(description);\
+ SET_STRING(server);\
SET_UNSIGNED(port);\
- SET_STRING(username);\
- SET_STRING(password);\
- SET_STRING(dbname);\
+ SET_STRING(uid);\
+ SET_STRING(pwd);\
+ SET_STRING(database);\
SET_STRING(sslkey)\
SET_STRING(sslcert);\
SET_STRING(sslca);\
@@ -143,16 +144,16 @@
return FALSE;
}
-void FillParameters(HWND hwnd, OdbcDialogParams& params)
+void FillParameters(HWND hwnd, DataSource & params)
{
/** need also to resize, cuz otherwise string thinks it's zero length*/
#define SET_STRING(param) { \
- params.param = L""; \
+ if (params.param)\
+ *(params.param) = NULL; \
int len = Edit_GetTextLength(GetDlgItem(hwnd,IDC_EDIT_##param)); \
if(len>0) { \
- params.param.reserve(len+1);\
- params.param.resize(len);\
- Edit_GetText(GetDlgItem(hwnd,IDC_EDIT_##param), (LPWSTR)params.param.c_str(), len+1);}}
+ my_realloc(params.param, len+1, 64 );\
+ Edit_GetText(GetDlgItem(hwnd,IDC_EDIT_##param), (LPWSTR)params.param, len+1);}}
#define SET_UNSIGNED(param) { \
params.param = 0U; \
@@ -237,9 +238,9 @@
{
if ( gAcceptParamsCallback )
{
- OdbcDialogParams params;
- FillParameters(hwnd, params);
- if( (*gAcceptParamsCallback)( hwnd, ¶ms ) )
+ /*DataSource params;*/
+ FillParameters(hwnd, *pParams);
+ if( (*gAcceptParamsCallback)( hwnd, pParams ) )
{
OkPressed = true;
PostMessage(hwnd, WM_CLOSE, NULL, NULL);
@@ -257,15 +258,15 @@
{
if(gTestButtonPressedCallback)
{
- OdbcDialogParams params;
- FillParameters(hwnd, params);
+ /*OdbcDialogParams params;*/
+ FillParameters(hwnd, *pParams);
- if ( pParams )
- params.drvname= pParams->drvname;
+ /*if ( pParams )
+ params.driver= pParams->driver;*/
- const wchar_t * testResultMsg = (*gTestButtonPressedCallback)( hwnd, ¶ms );
+ const wchar_t * testResultMsg = (*gTestButtonPressedCallback)( hwnd, pParams );
- MessageBoxW( hwnd, testResultMsg, params.dsname.c_str(), MB_OK );
+ MessageBoxW( hwnd, testResultMsg, pParams->name, MB_OK );
}
}
@@ -362,10 +363,10 @@
chooseFile( hwnd, IDC_EDIT_sslca ); break;
case IDC_SSLCAPATHCHOOSER:
choosePath( hwnd, IDC_EDIT_sslcapath ); break;
- case IDC_EDIT_dsname:
+ case IDC_EDIT_name:
{
if (codeNotify==EN_CHANGE) {
- int len = Edit_GetTextLength(GetDlgItem(hwnd,IDC_EDIT_dsname));
+ int len = Edit_GetTextLength(GetDlgItem(hwnd,IDC_EDIT_name));
Button_Enable(GetDlgItem(hwnd,IDOK), len > 0);
Button_Enable(GetDlgItem(hwnd,IDC_BUTTON_TEST), len > 0);
RedrawWindow(hwnd,NULL,NULL,RDW_INVALIDATE);
@@ -376,9 +377,9 @@
case IDC_EDIT_dbname:
{
if(codeNotify==CBN_DROPDOWN && gDatabaseNamesCallback) {
- OdbcDialogParams params;
- FillParameters(hwnd, params);
- const WCHAR** items = gDatabaseNamesCallback( hwnd, ¶ms );
+ /*OdbcDialogParams params;*/
+ FillParameters(hwnd, *pParams);
+ const WCHAR** items = gDatabaseNamesCallback( hwnd, pParams );
if( items )
{
ComboBox_ResetContent(hwndCtl);
@@ -461,7 +462,7 @@
//in order to fix the minimum size of dialog
#define SET_STRING(param) \
- Edit_SetText(GetDlgItem(hwnd,IDC_EDIT_##param), pParams->param.c_str());
+ Edit_SetText(GetDlgItem(hwnd,IDC_EDIT_##param), pParams->param);
#define SET_UNSIGNED(param) { \
wchar_t buf[1024]; \
@@ -477,6 +478,9 @@
BOOL FormMain_DlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
+ int *i;
+ i = (int*)0x1003879e;
+
switch(msg)
{
HANDLE_MSG (hwndDlg, WM_CLOSE, FormMain_OnClose);
@@ -495,7 +499,7 @@
// returns FALSE if 'cancel' button pressed
int ShowOdbcParamsDialog(
PWCHAR caption,
- OdbcDialogParams* params, /*[inout]*/
+ DataSource* params, /*[inout]*/
HWND ParentWnd, /* [in] could be NULL */
HelpButtonPressedCallbackType* hcallback, /* [in] could be NULL */
TestButtonPressedCallbackType* tcallback, /* [in] could be NULL */
Modified: branches/guffert/wingui/odbcdialogparams/odbcdialogparams.h
===================================================================
--- branches/guffert/wingui/odbcdialogparams/odbcdialogparams.h 2007-10-17 04:49:28 UTC
(rev 823)
+++ branches/guffert/wingui/odbcdialogparams/odbcdialogparams.h 2007-10-17 21:28:57 UTC
(rev 824)
@@ -1,79 +1,34 @@
#ifndef __ODBCPARAMS_H__
#define __ODBCPARAMS_H__
-#ifdef ODBCDIALOGPARAMS_EXPORTS
+#ifdef DataSource_EXPORTS
#define _ODBCPARAMDLL __declspec(dllexport)
#else
#define _ODBCPARAMDLL __declspec(dllimport)
#endif
#include "myString.h"
+#include "../util/installer.h"
// procedure describes all items shown on the dialog
-struct OdbcDialogParams
-{
- myString drvname;
- myString dsname;
- myString drvdesc;
- myString srvname;
- unsigned port;
- myString username;
- myString password;
- myString dbname;
- myString socket;
- myString sslkey;
- myString sslcert;
- myString sslca;
- myString sslcapath;
- myString sslcipher;
- myString initstmt;
- myString charset;
- // flags 1
- bool dont_optimize_column_width;
- bool return_matching_rows;
- bool allow_big_results;
- bool use_compressed_protocol;
- bool change_bigint_columns_to_int;
- bool safe;
- bool enable_auto_reconnect;
- bool enable_auto_increment_null_search;
- // flags 2
- bool dont_prompt_upon_connect;
- bool enable_dynamic_cursor;
- bool ignore_N_in_name_table;
- bool user_manager_cursor;
- bool dont_use_set_locale;
- bool pad_char_to_full_length;
- bool dont_cache_result;
- // flags 3
- bool return_table_names_for_SqlDesribeCol;
- bool ignore_space_after_function_names;
- bool force_use_of_named_pipes;
- bool no_catalog;
- bool read_options_from_mycnf;
- bool disable_transactions;
- bool force_use_of_forward_only_cursors;
- // debug
- bool save_queries;
-};
// four callbacks:
// called when [Help] pressed
typedef void HelpButtonPressedCallbackType(HWND dialog);
// called when [Test] pressed - show any messages to user here
-typedef const wchar_t * TestButtonPressedCallbackType(HWND dialog, OdbcDialogParams*
params);
+typedef const wchar_t * TestButtonPressedCallbackType(HWND dialog, DataSource* params);
// called when [OK] pressed - show errors here (if any) and return false to prevent
dialog close
-typedef BOOL AcceptParamsCallbackType(HWND dialog, OdbcDialogParams* params);
+typedef BOOL AcceptParamsCallbackType(HWND dialog, DataSource* params);
// called when DataBase combobox Drops Down
-typedef const WCHAR** DatabaseNamesCallbackType(HWND dialog, OdbcDialogParams* params);
+typedef const WCHAR** DatabaseNamesCallbackType(HWND dialog, DataSource* params);
// exported procedure (the one) - not any more. statically linked.
// returns TRUE if user pressed OK, FALSE - otherwise
int /*_ODBCPARAMDLL*/ ShowOdbcParamsDialog(
PWCHAR caption, /*[in] Dialog caption*/
- OdbcDialogParams* params, /*[inout] params */
+ DataSource* params, /*[inout] params */
HWND ParentWnd = NULL, /* [in] could be NULL */
HelpButtonPressedCallbackType* hcallback = NULL, /* [in] could be NULL */
TestButtonPressedCallbackType* tcallback = NULL, /* [in] could be NULL */
Modified: branches/guffert/wingui/odbcdialogparams/odbcdialogparams.rc
===================================================================
--- branches/guffert/wingui/odbcdialogparams/odbcdialogparams.rc 2007-10-17 04:49:28 UTC
(rev 823)
+++ branches/guffert/wingui/odbcdialogparams/odbcdialogparams.rc 2007-10-17 21:28:57 UTC
(rev 824)
@@ -34,12 +34,12 @@
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
GROUPBOX "ODBC Connection Paramentes",IDC_STATIC,18,53,248,148
- EDITTEXT IDC_EDIT_dsname,98,69,143,14,ES_AUTOHSCROLL
- EDITTEXT IDC_EDIT_drvdesc,98,89,143,14,ES_AUTOHSCROLL
- EDITTEXT 10002,98,121,85,14,ES_AUTOHSCROLL
+ EDITTEXT IDC_EDIT_name,98,69,143,14,ES_AUTOHSCROLL
+ EDITTEXT IDC_EDIT_description,98,89,143,14,ES_AUTOHSCROLL
+ EDITTEXT IDC_EDIT_server,98,121,85,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_port,212,121,28,14,ES_AUTOHSCROLL | ES_NUMBER
- EDITTEXT IDC_EDIT_username,98,140,85,14,ES_AUTOHSCROLL
- EDITTEXT IDC_EDIT_password,98,158,85,14,ES_PASSWORD | ES_AUTOHSCROLL
+ EDITTEXT IDC_EDIT_uid,98,140,85,14,ES_AUTOHSCROLL
+ EDITTEXT IDC_EDIT_pwd,98,158,85,14,ES_PASSWORD | ES_AUTOHSCROLL
RTEXT "Data Source Name:",IDC_STATIC,23,72,67,8
RTEXT "Description:",IDC_STATIC,23,92,67,8
RTEXT "Server:",IDC_STATIC,23,123,67,8
@@ -54,7 +54,7 @@
PUSHBUTTON "&Details >>",IDC_BUTTON_DETAILS,17,376,50,14
PUSHBUTTON "&Help",IDC_BUTTON_HELP,217,375,49,15
CONTROL 130,IDC_STATIC,"Static",SS_BITMAP,0,0,279,39
- COMBOBOX IDC_EDIT_dbname,98,176,85,42,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL |
WS_TABSTOP
+ COMBOBOX IDC_EDIT_database,98,176,85,42,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL |
WS_TABSTOP
END
IDD_TAB1 DIALOGEX 0, 0, 209, 151
Modified: branches/guffert/wingui/odbcdialogparams/odbcdialogparams.vcproj
===================================================================
--- branches/guffert/wingui/odbcdialogparams/odbcdialogparams.vcproj 2007-10-17 04:49:28
UTC (rev 823)
+++ branches/guffert/wingui/odbcdialogparams/odbcdialogparams.vcproj 2007-10-17 21:28:57
UTC (rev 824)
@@ -40,8 +40,8 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories=""D:\Program Files\MySQL\MySQL Server
5.0\include""
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;ODBCDIALOGPARAMS_EXPORTS"
+ AdditionalIncludeDirectories="D:\mysqlclient5.0.26\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;ODBCDIALOGPARAMS_EXPORTS;_DO_NOT_USE_STRING_"
MinimalRebuild="false"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -62,6 +62,7 @@
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="comctl32.lib"
+ AdditionalLibraryDirectories=""
/>
<Tool
Name="VCALinkTool"
@@ -105,6 +106,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
+ AdditionalIncludeDirectories="D:\mysqlclient5.0.26\include"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;ODBCDIALOGPARAMS_EXPORTS"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
@@ -124,6 +126,7 @@
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="comctl32.lib"
+ AdditionalLibraryDirectories=""
/>
<Tool
Name="VCALinkTool"
Modified: branches/guffert/wingui/odbcdialogparams/resource.h
===================================================================
--- branches/guffert/wingui/odbcdialogparams/resource.h 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/odbcdialogparams/resource.h 2007-10-17 21:28:57 UTC (rev 824)
@@ -55,13 +55,18 @@
#define IDC_SSLCACHOOSER 1026
#define IDC_SSLCAPATHCHOOSER 1027
#define IDC_EDIT_drvname 10000
-#define IDC_EDIT_dsname 10000
+#define IDC_EDIT_name 10000
#define IDC_EDIT_drvdesc 10001
+#define IDC_EDIT_description 10001
#define IDC_EDIT_srvname 10002
+#define IDC_EDIT_server 10002
#define IDC_EDIT_port 10003
#define IDC_EDIT_username 10004
+#define IDC_EDIT_uid 10004
#define IDC_EDIT_password 10005
+#define IDC_EDIT_pwd 10005
#define IDC_EDIT_dbname 10006
+#define IDC_EDIT_database 10006
#define IDC_CHECK_dont_optimize_column_width 10007
#define IDC_CHECK_return_matching_rows 10008
#define IDC_CHECK_allow_big_results 10009
Modified: branches/guffert/wingui/setup/MYODBCSetupConfigDSNAdd.c
===================================================================
--- branches/guffert/wingui/setup/MYODBCSetupConfigDSNAdd.c 2007-10-17 04:49:28 UTC (rev
823)
+++ branches/guffert/wingui/setup/MYODBCSetupConfigDSNAdd.c 2007-10-17 21:28:57 UTC (rev
824)
@@ -105,13 +105,9 @@
*/
if ( hWnd )
{
- OdbcDialogParams params;
- DS2DialogParams(*pDataSource,params);
-
- if ( !ShowOdbcParamsDialog( L"Adding New DSN", ¶ms, hWnd, myhelp, mytest,
mytestaccept, mygetdatabases ) )
+ if ( !ShowOdbcParamsDialog( L"Adding New DSN", pDataSource, hWnd, myhelp, mytest,
mytestaccept, mygetdatabases ) )
return FALSE;
- DialogParams2DS( params, *pDataSource );
cleanUp();
}
Modified: branches/guffert/wingui/setup/MYODBCSetupConfigDSNEdit.c
===================================================================
--- branches/guffert/wingui/setup/MYODBCSetupConfigDSNEdit.c 2007-10-17 04:49:28 UTC (rev
823)
+++ branches/guffert/wingui/setup/MYODBCSetupConfigDSNEdit.c 2007-10-17 21:28:57 UTC (rev
824)
@@ -93,13 +93,9 @@
*/
if ( hWnd )
{
- OdbcDialogParams params;
- DS2DialogParams(*pDataSource,params);
-
- if ( !ShowOdbcParamsDialog( L"Adding New DSN", ¶ms, hWnd, myhelp, mytest,
mytestaccept, mygetdatabases ) )
+ if ( !ShowOdbcParamsDialog( L"Adding New DSN", pDataSource, hWnd, myhelp, mytest,
mytestaccept, mygetdatabases ) )
return FALSE;
- DialogParams2DS( params, *pDataSource );
cleanUp();
}
Modified: branches/guffert/wingui/setup/myodbc3S.vcproj
===================================================================
--- branches/guffert/wingui/setup/myodbc3S.vcproj 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/setup/myodbc3S.vcproj 2007-10-17 21:28:57 UTC (rev 824)
@@ -55,7 +55,7 @@
Optimization="0"
InlineFunctionExpansion="0"
AdditionalIncludeDirectories=""D:\Qt-4.3.0\include";"D:\Qt-4.3.0\include\Qt";"D:\Qt-4.3.0\mkspecs\default";"E:\work\!MySQL!!!\Projects\ODBC3.51\connOdbc3-pr2\branches\guffert\1";"D:\Qt-4.3.0\include\QtCore";"D:\Qt-4.3.0\include\QtGui";"D:\Qt-4.3.0\include\Qt3Support";"D:\Qt-4.3.0\include\QtAssistant";"D:\Qt-4.3.0\include\QtDesigner";"D:\Qt-4.3.0\include\QtNetwork";"D:\Qt-4.3.0\include\QtOpenGL";"D:\Qt-4.3.0\include\QtSql";"D:\Qt-4.3.0\include\QtXml";"D:\Qt-4.3.0\include\QtSvg";"D:\Qt-4.3.0\include\QtUiTools";"D:\Qt-4.3.0\include\QtTest";"D:\Program
Files\MySQL\MySQL Server 5.0\include""
- PreprocessorDefinitions="WIN32,_WINDOWS,_DEBUG,MYODBC_DBG,_CRT_SECURE_NO_DEPRECATE,_CRT_NONSTDC_NO_DEPRECATE,ENGLISH,MYODBC_EXPORTS,_USERDLL,_WIN32,WIN32,_WINDOWS,__WIN__,"CMAKE_INTDIR=\"Debug\"",myodbc3S_EXPORTS"
+ PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;MYODBC_DBG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ENGLISH;MYODBC_EXPORTS;_USERDLL;_WIN32;__WIN__;"CMAKE_INTDIR=\"Debug\"";myodbc3S_EXPORTS;_DO_NOT_USE_STRING_"
BasicRuntimeChecks="3"
SmallerTypeCheck="true"
RuntimeLibrary="1"
Modified: branches/guffert/wingui/util/installer.c
===================================================================
--- branches/guffert/wingui/util/installer.c 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/util/installer.c 2007-10-17 21:28:57 UTC (rev 824)
@@ -190,6 +190,49 @@
/*
+ * Lookup a driver given only the filename of the driver. This is used
+ * to support prompting for additional DSN info upon connect when the
+ * driver uses an external setup library.
+ */
+int driver_lookup_name(Driver *driver)
+{
+ SQLWCHAR drivers[1024];
+ SQLWCHAR *pdrv= drivers;
+ SQLWCHAR driverinfo[1024];
+ int len;
+ short slen; /* WORD needed for windows */
+
+ /* get list of drivers */
+#ifdef _WIN32
+ if (!SQLGetInstalledDriversW(pdrv, 1023, &slen) || !(len= slen))
+#else
+ if (!(len= SQLGetPrivateProfileStringW(NULL, NULL, W_EMPTY, pdrv,
+ 1023, W_ODBCINST_INI)))
+#endif
+ return -1;
+
+ /* check the lib of each driver for one that matches the given lib name */
+ while (len > 0)
+ {
+ if (!SQLGetPrivateProfileStringW(pdrv, W_DRIVER, W_EMPTY, driverinfo,
+ 1023, W_ODBCINST_INI))
+ continue;
+
+ if (!sqlwcharcasecmp(driverinfo, driver->lib))
+ {
+ sqlwcharncpy(driver->name, pdrv, ODBCDRIVER_STRLEN);
+ return 0;
+ }
+
+ len -= sqlwcharlen(pdrv) + 1;
+ pdrv += sqlwcharlen(pdrv) + 1;
+ }
+
+ return -1;
+}
+
+
+/*
* Lookup a driver in the system. The driver name is read from the given
* object. If greater-than zero is returned, additional information
* can be obtained from SQLInstallerError(). A less-than zero return code
@@ -200,6 +243,12 @@
SQLWCHAR buf[4096];
SQLWCHAR *entries= buf;
SQLWCHAR *dest;
+ /* if only the filename is given, we must get the driver's name */
+ if (!*driver->name && *driver->lib)
+ {
+ if (driver_lookup_name(driver))
+ return -1;
+ }
/* get entries and make sure the driver exists */
if (SQLGetPrivateProfileStringW(driver->name, NULL, W_EMPTY, buf, 4096,
@@ -368,6 +417,7 @@
x_free(ds->database8);
x_free(ds->socket8);
x_free(ds->initstmt8);
+ x_free(ds->option8);
x_free(ds->charset8);
x_free(ds->sslkey8);
x_free(ds->sslcert8);
@@ -385,8 +435,7 @@
*/
int ds_set_strattr(SQLWCHAR **attr, const SQLWCHAR *val)
{
- if (*attr)
- x_free(*attr);
+ x_free(*attr);
if (val && *val)
*attr= sqlwchardup(val, SQL_NTS);
else
@@ -401,8 +450,7 @@
*/
int ds_set_strnattr(SQLWCHAR **attr, const SQLWCHAR *val, size_t charcount)
{
- if (*attr)
- x_free(*attr);
+ x_free(*attr);
if (charcount == SQL_NTS)
charcount= sqlwcharlen(val);
@@ -777,9 +825,20 @@
SQLCHAR *ds_get_utf8attr(SQLWCHAR *attrw, SQLCHAR **attr8)
{
SQLINTEGER len= SQL_NTS;
- if (*attr8)
- x_free(*attr8);
+ x_free(*attr8);
*attr8= sqlwchar_as_utf8(attrw, &len);
return *attr8;
}
+/*
+ * Assign a data source attribute from a UTF-8 string.
+ */
+int ds_setattr_from_utf8(SQLWCHAR **attr, SQLCHAR *val8)
+{
+ size_t len= strlen(val8);
+ x_free(*attr);
+ if (!(*attr= (SQLWCHAR *)my_malloc((len + 1) * sizeof(SQLWCHAR), MYF(0))))
+ return -1;
+ utf8_as_sqlwchar(*attr, len, val8, len);
+ return 0;
+}
Modified: branches/guffert/wingui/util/installer.h
===================================================================
--- branches/guffert/wingui/util/installer.h 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/util/installer.h 2007-10-17 21:28:57 UTC (rev 824)
@@ -66,6 +66,7 @@
Driver *driver_new();
void driver_delete(Driver *driver);
+int driver_lookup_name(Driver *driver);
int driver_lookup(Driver *driver);
int driver_from_kvpair_semicolon(Driver *driver, const SQLWCHAR *attrs);
int driver_to_kvpair_null(Driver *driver, SQLWCHAR *attrs, size_t attrslen);
@@ -99,6 +100,7 @@
SQLCHAR *database8;
SQLCHAR *socket8;
SQLCHAR *initstmt8;
+ SQLCHAR *option8;
SQLCHAR *charset8;
SQLCHAR *sslkey8;
SQLCHAR *sslcert8;
@@ -106,6 +108,35 @@
SQLCHAR *sslcapath8;
SQLCHAR *sslcipher8;
/* A bitmask of all options carried over from MyODBC 3.51 */
+
+ // flags 1
+ bool dont_optimize_column_width;
+ bool return_matching_rows;
+ bool allow_big_results;
+ bool use_compressed_protocol;
+ bool change_bigint_columns_to_int;
+ bool safe;
+ bool enable_auto_reconnect;
+ bool enable_auto_increment_null_search;
+ // flags 2
+ bool dont_prompt_upon_connect;
+ bool enable_dynamic_cursor;
+ bool ignore_N_in_name_table;
+ bool user_manager_cursor;
+ bool dont_use_set_locale;
+ bool pad_char_to_full_length;
+ bool dont_cache_result;
+ // flags 3
+ bool return_table_names_for_SqlDesribeCol;
+ bool ignore_space_after_function_names;
+ bool force_use_of_named_pipes;
+ bool no_catalog;
+ bool read_options_from_mycnf;
+ bool disable_transactions;
+ bool force_use_of_forward_only_cursors;
+ // debug
+ bool save_queries;
+
} DataSource;
DataSource *ds_new();
@@ -119,6 +150,7 @@
int ds_add(DataSource *ds);
int ds_exists(SQLWCHAR *name);
SQLCHAR *ds_get_utf8attr(SQLWCHAR *attrw, SQLCHAR **attr8);
+int ds_setattr_from_utf8(SQLWCHAR **attr, SQLCHAR *val8);
#ifdef __cplusplus
}
Modified: branches/guffert/wingui/util/stringutil.c
===================================================================
--- branches/guffert/wingui/util/stringutil.c 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/util/stringutil.c 2007-10-17 21:28:57 UTC (rev 824)
@@ -552,7 +552,7 @@
* @return The integer result of the conversion or 0 if the
* string could not be parsed.
*/
-ulong sqlwchartoul(const SQLWCHAR *wstr)
+unsigned long sqlwchartoul(const SQLWCHAR *wstr)
{
const SQLWCHAR *end= wstr + sqlwcharlen(wstr) - 1;
SQLWCHAR c;
@@ -611,3 +611,18 @@
}
+/*
+ * Copy up to 'n' characters (including NULL) from src to dest.
+ */
+SQLWCHAR *sqlwcharncpy(SQLWCHAR *dest, const SQLWCHAR *src, size_t n)
+{
+ if (!dest || !src)
+ return NULL;
+ while (*src && n--)
+ *dest++= *src++;
+ if (n)
+ *dest= 0;
+ else
+ *(dest - 1)= 0;
+ return dest;
+}
Modified: branches/guffert/wingui/util/stringutil.h
===================================================================
--- branches/guffert/wingui/util/stringutil.h 2007-10-17 04:49:28 UTC (rev 823)
+++ branches/guffert/wingui/util/stringutil.h 2007-10-17 21:28:57 UTC (rev 824)
@@ -90,9 +90,10 @@
const SQLWCHAR *sqlwcharchr(const SQLWCHAR *wstr, SQLWCHAR wchr);
size_t sqlwcharlen(const SQLWCHAR *wstr);
SQLWCHAR *sqlwchardup(const SQLWCHAR *wstr, size_t charlen);
-ulong sqlwchartoul(const SQLWCHAR *wstr);
+unsigned long sqlwchartoul(const SQLWCHAR *wstr);
void sqlwcharfromul(SQLWCHAR *wstr, unsigned long v);
size_t sqlwcharncat2(SQLWCHAR *dest, const SQLWCHAR *src, size_t *n);
+SQLWCHAR *sqlwcharncpy(SQLWCHAR *dest, const SQLWCHAR *src, size_t n);
#endif /* _STRINGUTIL_H */
| Thread |
|---|
| • Connector/ODBC 3.51 commit: r824 - in branches/guffert/wingui: dialog odbcdialogparams setup util | lnovitsky | 17 Oct |