Skip to content

Commit

Permalink
Merge branch 'master' into odbc-2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
lawrinn committed Mar 22, 2016
2 parents bbe3c2c + 91825b7 commit ffa6d03
Show file tree
Hide file tree
Showing 32 changed files with 1,786 additions and 604 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Expand Up @@ -19,9 +19,13 @@ Debug
Win32
ipch

*.msi
*.wixobj
*.wixpdb

*.*~
*.diff

*.bak
*.so
Makefile
CPackConfig.cmake
Expand Down
23 changes: 23 additions & 0 deletions CMakeLists.txt
Expand Up @@ -90,6 +90,13 @@ IF(WIN32)

SET(MARIADB_CLIENT_FILENAME mariadbclient.lib)
SET(PLATFORM_DEPENDENCIES ws2_32)
IF (MSVC)
MESSAGE(STATUS "MSVC_VERSION= ${MSVC_VERSION}")
IF (MSVC_VERSION EQUAL 1900)
MESSAGE(STATUS "Configuring to link connector against legacy_stdio_definitions")
SET(PLATFORM_DEPENDENCIES ${PLATFORM_DEPENDENCIES} legacy_stdio_definitions)
ENDIF()
ENDIF()
ELSE()
SEARCH_LIBRARY(LIB_MATH floor m)
SET(PLATFORM_DEPENDENCIES ${LIB_MATH})
Expand Down Expand Up @@ -264,6 +271,22 @@ Makefile$
/autom4te.cache/
)

# Build source packages
IF(GIT_BUILD_SRCPKG)
# get branch name
EXECUTE_PROCESS(COMMAND git show-branch OUTPUT_VARIABLE git_branch)
STRING(REGEX MATCH "\\[([^]]+)\\]" git_branch ${git_branch})
STRING(REGEX REPLACE "\\[|\\]" "" GIT_BRANCH ${git_branch})
MESSAGE(STATUS "Git branch: ${GIT_BRANCH}")
IF(WIN32)
EXECUTE_PROCESS(COMMAND git archive ${GIT_BRANCH} --format=zip --prefix=${CPACK_SOURCE_PACKAGE_FILE_NAME}/ --output=${CPACK_SOURCE_PACKAGE_FILE_NAME}.zip)
ELSE()
EXECUTE_PROCESS(COMMAND git archive ${GIT_BRANCH} --format=zip --prefix=${CPACK_SOURCE_PACKAGE_FILE_NAME}/ --output=${CPACK_SOURCE_PACKAGE_FILE_NAME}.zip)
EXECUTE_PROCESS(COMMAND git archive ${GIT_BRANCH} --format=tar --prefix=${CPACK_SOURCE_PACKAGE_FILE_NAME}/ --output=${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar)
EXECUTE_PROCESS(COMMAND gzip -9 -f ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar)
ENDIF()
ENDIF()

IF(WIN32)
SET(DEFAULT_GENERATOR "ZIP")
ELSE()
Expand Down
198 changes: 119 additions & 79 deletions dsn/odbc_dsn.c
Expand Up @@ -24,7 +24,7 @@
#include <tchar.h>
#include <windowsx.h>
#include <winuser.h>
#include <shlobj.h>
#include <shobjidl.h>
#include "resource.h"
#include <ma_odbc.h>
#include <ma_odbc_setup.h>
Expand All @@ -45,6 +45,7 @@ char DSNStr[2048];
HWND hwndTab[7], hwndMain;
const int *EffectiveDisabledPages= NULL,
*EffectiveDisabledControls= NULL;
BOOL OpenCurSelection= TRUE;

const int DisabledPages[MAODBC_PROMPT_REQUIRED + 1][LASTPAGE + 1]= {
{ 0, 0, 0, 0, 0, 0},
Expand All @@ -62,25 +63,25 @@ const int* DisabledControls[]= {
MADB_DsnMap DsnMap[] = {
{&DsnKeys[0], 0, txtDsnName, 64, 1},
{&DsnKeys[1], 0, txtDSNDescription, 64, 0},
{&DsnKeys[3], 1, rbPipe, 0, 0},
{&DsnKeys[4], 1, rbTCP, 0, 0},
{&DsnKeys[5], 1, txtServerName, 128, 0},
{&DsnKeys[6], 1, txtUserName, 64, 0},
{&DsnKeys[7], 1, txtPassword, 64, 0},
{&DsnKeys[8], 1, cbDatabase, 0, 0},
{&DsnKeys[9], 1, txtPort, 5, 0},
{&DsnKeys[10], 2, txtInitCmd, 2048, 0},
{&DsnKeys[11], 2, txtConnectionTimeOut, 5, 0},
{&DsnKeys[12], 2, ckReconnect, 0, 0},
{&DsnKeys[13], 2, ckConnectPrompt, 0, 0},
{&DsnKeys[14], 2, cbCharset, 0, 0},
{&DsnKeys[17], 3, txtPluginDir, 260, 0},
{&DsnKeys[18], 4, txtSslKey, 260, 0},
{&DsnKeys[19], 4, txtSslCert, 260, 0},
{&DsnKeys[20], 4, txtSslCertAuth, 260, 0},
{&DsnKeys[21], 4, txtSslCaPath, 260, 0},
{&DsnKeys[22], 4, txtSslCipher, 32, 0},
{&DsnKeys[23], 4, cbSslVerify, 0, 0},
{&DsnKeys[5], 1, rbPipe, 0, 0},
{&DsnKeys[6], 1, rbTCP, 0, 0},
{&DsnKeys[7], 1, txtServerName, 128, 0},
{&DsnKeys[8], 1, txtUserName, 64, 0},
{&DsnKeys[9], 1, txtPassword, 64, 0},
{&DsnKeys[10], 1, cbDatabase, 0, 0},
{&DsnKeys[11], 1, txtPort, 5, 0},
{&DsnKeys[12], 2, txtInitCmd, 2048, 0},
{&DsnKeys[13], 2, txtConnectionTimeOut, 5, 0},
{&DsnKeys[14], 2, ckReconnect, 0, 0},
{&DsnKeys[15], 2, ckConnectPrompt, 0, 0},
{&DsnKeys[16], 2, cbCharset, 0, 0},
{&DsnKeys[18], 3, txtPluginDir, 260, 0},
{&DsnKeys[19], 4, txtSslKey, 260, 0},
{&DsnKeys[20], 4, txtSslCert, 260, 0},
{&DsnKeys[21], 4, txtSslCertAuth, 260, 0},
{&DsnKeys[22], 4, txtSslCaPath, 260, 0},
{&DsnKeys[23], 4, txtSslCipher, 32, 0},
{&DsnKeys[24], 4, cbSslVerify, 0, 0},

{NULL, 0, 0, 0, 0}
};
Expand Down Expand Up @@ -451,51 +452,75 @@ void MADB_WIN_TestDsn(my_bool ShowSuccess)
}


static int CALLBACK SelectFolderCallbackProc(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
INT_PTR SelectPath(HWND ParentWnd, int BoundEditId, const wchar_t *Caption, BOOL FolderPath, BOOL OpenCurrentSelection)
{

if(uMsg == BFFM_INITIALIZED)
if (SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)))
{
SendMessage(hWnd, BFFM_SETSELECTION, TRUE, lpData);
//SendMessage(hWnd, BFFM_SETEXPANDED, TRUE, lpData) ;
}

return 0;
}
IFileDialog *PathDialog;

if (SUCCEEDED(CoCreateInstance(&CLSID_FileOpenDialog, NULL, CLSCTX_ALL,
&IID_IFileOpenDialog, (void**)&PathDialog)))
{
HWND BoundEditWnd= GetDlgItem(ParentWnd, BoundEditId);
DWORD DialogOptions;
TCHAR Path[MAX_PATH];
IShellItem *SelectedItem;
int Length;
LPWSTR wPath;

if (FolderPath && SUCCEEDED(PathDialog->lpVtbl->GetOptions(PathDialog, &DialogOptions)))
{
PathDialog->lpVtbl->SetOptions(PathDialog, DialogOptions | FOS_PICKFOLDERS);
}

INT_PTR SelectFolder(HWND ParentWnd, int BoundEditId, const TCHAR *Caption)
{
TCHAR Path[MAX_PATH];
HWND BoundEditWnd= GetDlgItem(ParentWnd, BoundEditId);
BROWSEINFO bi;
LPITEMIDLIST pidl;

Edit_GetText(BoundEditWnd, Path, sizeof(Path));
Edit_GetText(BoundEditWnd, Path, sizeof(Path));
Length= MultiByteToWideChar(GetACP(), 0, Path, -1, NULL, 0);

bi.hwndOwner= ParentWnd;
bi.lpszTitle= Caption;
bi.ulFlags= BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;
bi.lpfn= SelectFolderCallbackProc;
bi.lParam= (LPARAM)Path;
wPath= (SQLWCHAR *)malloc(Length * sizeof(SQLWCHAR));
if (wPath == NULL)
{
return FALSE;
}

pidl= SHBrowseForFolder(&bi);
MultiByteToWideChar(GetACP(), 0, Path, -1, wPath, Length);

if (pidl != 0)
{
IMalloc *imalloc= NULL;
SHCreateItemFromParsingName(wPath, NULL, &IID_IShellItem, (void**)&SelectedItem);
if (OpenCurrentSelection)
{
PathDialog->lpVtbl->SetFolder(PathDialog, SelectedItem);
}
else
{
PathDialog->lpVtbl->SetDefaultFolder(PathDialog, SelectedItem);
}
SelectedItem->lpVtbl->Release(SelectedItem);

SHGetPathFromIDList(pidl, Path);
free(wPath);

Edit_SetText(BoundEditWnd, Path);
PathDialog->lpVtbl->SetTitle(PathDialog, Caption);

if (SUCCEEDED(SHGetMalloc(&imalloc)))
{
imalloc->lpVtbl->Free(imalloc, pidl);
imalloc->lpVtbl->Release(imalloc);
if (SUCCEEDED(PathDialog->lpVtbl->Show(PathDialog, ParentWnd)))
{
if (SUCCEEDED(PathDialog->lpVtbl->GetResult(PathDialog, &SelectedItem)))
{
LPWSTR SelectedValue;
if (SUCCEEDED(SelectedItem->lpVtbl->GetDisplayName(SelectedItem, SIGDN_FILESYSPATH, &SelectedValue)))
{
BOOL Error;

/* TODO: I guess conversions from/to utf8 has to be done when syncing edits with DSN */
WideCharToMultiByte(GetACP(), 0, SelectedValue, -1, Path, sizeof(Path), NULL, &Error);
Edit_SetText(BoundEditWnd, Path);
CoTaskMemFree(SelectedValue);

return TRUE;
}
SelectedItem->lpVtbl->Release(SelectedItem);
}
}
PathDialog->lpVtbl->Release(PathDialog);
}

return TRUE;
CoUninitialize();
}

return FALSE;
Expand All @@ -504,7 +529,9 @@ INT_PTR SelectFolder(HWND ParentWnd, int BoundEditId, const TCHAR *Caption)

INT_PTR CALLBACK DialogDSNProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
BOOL res;

switch(uMsg)
{
case WM_CTLCOLORDLG:
if (!hbrBg)
Expand Down Expand Up @@ -545,23 +572,37 @@ INT_PTR CALLBACK DialogDSNProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
}
return TRUE;
case pbPlugindirBrowse:
return SelectFolder(hDlg, txtPluginDir, _T("Select Plugins Directory"));
return SelectPath(hDlg, txtPluginDir, L"Select Plugins Directory", /* Folder*/ TRUE, TRUE);
case pbCaPathBrowse:
return SelectFolder(hDlg, txtSslCaPath, _T("Select CA Path"));
case rbTCP:
case rbPipe:
if (HIWORD(wParam) == BN_CLICKED)
{
SendMessage(GetDlgItem(hwndTab[CurrentPage], lblServerName), WM_SETTEXT, 0,
(LOWORD(wParam) == rbTCP) ? (LPARAM)"Server name:" : (LPARAM)"Named pipe:");
ShowWindow(GetDlgItem(hwndTab[CurrentPage], lblPort),
(LOWORD(wParam) == rbTCP) ? SW_SHOW : SW_HIDE);
ShowWindow(GetDlgItem(hwndTab[CurrentPage], txtPort),
(LOWORD(wParam) == rbTCP) ? SW_SHOW : SW_HIDE);
}
return TRUE;
res= SelectPath(hDlg, txtSslCaPath, L"Select CA Path", TRUE, OpenCurSelection);
OpenCurSelection= OpenCurSelection && !res;
return res;
case pbKeyBrowse:
res= SelectPath(hDlg, txtSslKey, L"Select Client Private Key File", /* File */ FALSE,OpenCurSelection);
OpenCurSelection= OpenCurSelection && !res;
return res;
case pbCertBrowse:
res= SelectPath(hDlg, txtSslCert, L"Select Public Key Certificate File", FALSE,OpenCurSelection);
OpenCurSelection= OpenCurSelection && !res;
return res;
case pbCaCertBrowse:
res= SelectPath(hDlg, txtSslCertAuth, L"Select Certificate Authority Certificate File", FALSE,OpenCurSelection);
OpenCurSelection= OpenCurSelection && !res;
return res;
case rbTCP:
case rbPipe:
if (HIWORD(wParam) == BN_CLICKED)
{
SendMessage(GetDlgItem(hwndTab[CurrentPage], lblServerName), WM_SETTEXT, 0,
(LOWORD(wParam) == rbTCP) ? (LPARAM)"Server name:" : (LPARAM)"Named pipe:");
ShowWindow(GetDlgItem(hwndTab[CurrentPage], lblPort),
(LOWORD(wParam) == rbTCP) ? SW_SHOW : SW_HIDE);
ShowWindow(GetDlgItem(hwndTab[CurrentPage], txtPort),
(LOWORD(wParam) == rbTCP) ? SW_SHOW : SW_HIDE);
}
return TRUE;

}
}
break;
}
return FALSE;
Expand Down Expand Up @@ -642,15 +683,15 @@ void CenterWindow(HWND hwndWindow)

}

my_bool DSNDialog(HWND hwndParent,
WORD fRequest,
LPCSTR lpszDriver,
LPCSTR lpszAttributes,
my_bool DSNDialog(HWND hwndParent,
WORD fRequest,
LPCSTR lpszDriver,
LPCSTR lpszAttributes,
MADB_Dsn *Dsn)
{
MSG msg;
BOOL ret;
char *DsnName= NULL;
MSG msg;
BOOL ret;
char *DsnName= NULL;
my_bool DsnExists= FALSE;

if (Dsn->isPrompt < 0 || Dsn->isPrompt > MAODBC_PROMPT_REQUIRED)
Expand Down Expand Up @@ -685,8 +726,7 @@ my_bool DSNDialog(HWND hwndParent,
}
else if (DsnName && Dsn)
{
/* Need to free current value in Dsn->DSNName */
MADB_SUBSTITUTE(Dsn->DSNName, _strdup(DsnName));
MADB_RESET(Dsn->DSNName, DsnName);
}

/* Even if DsnName invalid(in case of prompt) - we should not have problem */
Expand Down
3 changes: 3 additions & 0 deletions dsn/odbc_dsn.rc
Expand Up @@ -195,12 +195,15 @@ BEGIN

LTEXT "Key",IDC_STATIC,15,25,56,8,0,WS_EX_TRANSPARENT
EDITTEXT txtSslKey,84,25,110,10,ES_AUTOHSCROLL
PUSHBUTTON "Browse",pbKeyBrowse,195,23,30,14

LTEXT "Certificate",IDC_STATIC,15,39,56,8,0,WS_EX_TRANSPARENT
EDITTEXT txtSslCert,84,39,110,10,ES_AUTOHSCROLL
PUSHBUTTON "Browse",pbCertBrowse,195,37,30,14

LTEXT "Certificate Authority",IDC_STATIC,15,53,68,8,0,WS_EX_TRANSPARENT
EDITTEXT txtSslCertAuth,84,53,110,10,ES_AUTOHSCROLL
PUSHBUTTON "Browse",pbCaCertBrowse,195,51,30,14

LTEXT "CA Path",IDC_STATIC,15,67,56,8,0,WS_EX_TRANSPARENT
EDITTEXT txtSslCaPath,84,67,110,10,ES_AUTOHSCROLL
Expand Down
Binary file modified dsn/resource.h
Binary file not shown.

0 comments on commit ffa6d03

Please sign in to comment.