You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-12-15 08:03:15 -08:00
Rebase against 01269452e0fbb1f081d506bd64996590a553e2b9.
This commit is contained in:
@@ -1,64 +0,0 @@
|
||||
From e6c3fae4360c375015e75165fc9a3c16af79ec4a Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sat, 26 Apr 2025 12:33:23 +1000
|
||||
Subject: [PATCH] odbc32: SQLDriverConnectW fallback to SQLDriverConnect when
|
||||
required.
|
||||
|
||||
---
|
||||
dlls/odbc32/proxyodbc.c | 37 +++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 35 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
|
||||
index 0893537aef9..6685b4306f5 100644
|
||||
--- a/dlls/odbc32/proxyodbc.c
|
||||
+++ b/dlls/odbc32/proxyodbc.c
|
||||
@@ -6937,11 +6937,44 @@ static SQLRETURN driver_connect_win32_w( struct connection *con, SQLHWND window,
|
||||
SQLSMALLINT len, SQLWCHAR *out_conn_str, SQLSMALLINT buflen, SQLSMALLINT *len2,
|
||||
SQLUSMALLINT completion )
|
||||
{
|
||||
+ SQLRETURN ret = SQL_ERROR;
|
||||
+
|
||||
if (con->hdr.win32_funcs->SQLDriverConnectW)
|
||||
return con->hdr.win32_funcs->SQLDriverConnectW( con->hdr.win32_handle, window, in_conn_str, len, out_conn_str,
|
||||
buflen, len2, completion );
|
||||
- if (con->hdr.win32_funcs->SQLDriverConnect) FIXME( "Unicode to ANSI conversion not handled\n" );
|
||||
- return SQL_ERROR;
|
||||
+ if (con->hdr.win32_funcs->SQLDriverConnect)
|
||||
+ {
|
||||
+ SQLCHAR *in = NULL, *out = NULL;
|
||||
+ SQLSMALLINT in_len = 0, out_len = 0;
|
||||
+
|
||||
+ in_len = WideCharToMultiByte(CP_ACP, 0, in_conn_str, len, NULL, 0, NULL, NULL);
|
||||
+ if (!(in = malloc(in_len + 1))) return SQL_ERROR;
|
||||
+
|
||||
+ WideCharToMultiByte(CP_ACP, 0, in_conn_str, len, (char *)in, in_len, NULL, NULL);
|
||||
+ in[in_len] = 0;
|
||||
+
|
||||
+ if (out_conn_str && buflen > 0)
|
||||
+ {
|
||||
+ if (!(out = malloc(buflen)))
|
||||
+ {
|
||||
+ free(in);
|
||||
+ return SQL_ERROR;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ret = con->hdr.win32_funcs->SQLDriverConnect( con->hdr.win32_handle, window, in, in_len, out, buflen, &out_len, completion );
|
||||
+
|
||||
+ if (SQL_SUCCEEDED(ret) && out_conn_str && out)
|
||||
+ {
|
||||
+ MultiByteToWideChar(CP_ACP, 0, (char *)out, out_len, out_conn_str, buflen);
|
||||
+ if (len2) *len2 = out_len;
|
||||
+ }
|
||||
+
|
||||
+ free(in);
|
||||
+ free(out);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static SQLRETURN driver_connect_unix_w( struct connection *con, SQLHWND window, SQLWCHAR *in_conn_str, SQLSMALLINT len,
|
||||
--
|
||||
2.50.1
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
From f451eeaf15d825d8be8f5c661f5a9f249935674d Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sat, 26 Apr 2025 16:27:58 +1000
|
||||
Subject: [PATCH] odbc32: SQLGetInfoW support ANSI fallback.
|
||||
|
||||
---
|
||||
dlls/odbc32/proxyodbc.c | 72 +++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 70 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
|
||||
index 6685b4306f5..e18117d5ad8 100644
|
||||
--- a/dlls/odbc32/proxyodbc.c
|
||||
+++ b/dlls/odbc32/proxyodbc.c
|
||||
@@ -7104,13 +7104,81 @@ static SQLRETURN get_info_unix_w( struct connection *con, SQLUSMALLINT type, SQL
|
||||
return ODBC_CALL( SQLGetInfoW, ¶ms );
|
||||
}
|
||||
|
||||
+static BOOL typeinfo_is_string( SQLSMALLINT type )
|
||||
+{
|
||||
+ switch (type)
|
||||
+ {
|
||||
+ case SQL_ACCESSIBLE_PROCEDURES:
|
||||
+ case SQL_ACCESSIBLE_TABLES:
|
||||
+ case SQL_CATALOG_NAME:
|
||||
+ case SQL_CATALOG_NAME_SEPARATOR:
|
||||
+ case SQL_CATALOG_TERM:
|
||||
+ case SQL_COLLATION_SEQ:
|
||||
+ case SQL_COLUMN_ALIAS:
|
||||
+ case SQL_DATA_SOURCE_NAME:
|
||||
+ case SQL_DATA_SOURCE_READ_ONLY:
|
||||
+ case SQL_DATABASE_NAME:
|
||||
+ case SQL_DBMS_NAME:
|
||||
+ case SQL_DBMS_VER:
|
||||
+ case SQL_DESCRIBE_PARAMETER:
|
||||
+ case SQL_DRIVER_NAME:
|
||||
+ case SQL_DRIVER_ODBC_VER:
|
||||
+ case SQL_DRIVER_VER:
|
||||
+ case SQL_ODBC_VER:
|
||||
+ case SQL_EXPRESSIONS_IN_ORDERBY:
|
||||
+ case SQL_IDENTIFIER_QUOTE_CHAR:
|
||||
+ case SQL_INTEGRITY:
|
||||
+ case SQL_KEYWORDS:
|
||||
+ case SQL_LIKE_ESCAPE_CLAUSE:
|
||||
+ case SQL_MAX_ROW_SIZE_INCLUDES_LONG:
|
||||
+ case SQL_MULT_RESULT_SETS:
|
||||
+ case SQL_MULTIPLE_ACTIVE_TXN:
|
||||
+ case SQL_NEED_LONG_DATA_LEN:
|
||||
+ case SQL_ORDER_BY_COLUMNS_IN_SELECT:
|
||||
+ case SQL_PROCEDURE_TERM:
|
||||
+ case SQL_PROCEDURES:
|
||||
+ case SQL_ROW_UPDATES:
|
||||
+ case SQL_SCHEMA_TERM:
|
||||
+ case SQL_SEARCH_PATTERN_ESCAPE:
|
||||
+ case SQL_SERVER_NAME:
|
||||
+ case SQL_SPECIAL_CHARACTERS:
|
||||
+ case SQL_TABLE_TERM:
|
||||
+ case SQL_USER_NAME:
|
||||
+ case SQL_XOPEN_CLI_YEAR:
|
||||
+ case SQL_OUTER_JOINS:
|
||||
+ return TRUE;
|
||||
+ default:
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static SQLRETURN get_info_win32_w( struct connection *con, SQLUSMALLINT type, SQLPOINTER value, SQLSMALLINT buflen,
|
||||
SQLSMALLINT *retlen )
|
||||
{
|
||||
+ SQLRETURN ret = SQL_ERROR;
|
||||
+
|
||||
if (con->hdr.win32_funcs->SQLGetInfoW)
|
||||
return con->hdr.win32_funcs->SQLGetInfoW( con->hdr.win32_handle, type, value, buflen, retlen );
|
||||
- if (con->hdr.win32_funcs->SQLGetInfo) FIXME( "Unicode to ANSI conversion not handled\n" );
|
||||
- return SQL_ERROR;
|
||||
+ if (con->hdr.win32_funcs->SQLGetInfo)
|
||||
+ {
|
||||
+ ret = con->hdr.win32_funcs->SQLGetInfo( con->hdr.win32_handle, type, value, buflen, retlen );
|
||||
+ if (SQL_SUCCEEDED(ret) && typeinfo_is_string(type))
|
||||
+ {
|
||||
+ if (value)
|
||||
+ {
|
||||
+ WCHAR *p = strnAtoW(value, -1);
|
||||
+ wcscpy(value, p);
|
||||
+ free(p);
|
||||
+
|
||||
+ if (retlen)
|
||||
+ *retlen = wcslen(value) * sizeof(WCHAR);
|
||||
+ }
|
||||
+
|
||||
+ if (retlen)
|
||||
+ *retlen = *retlen * sizeof(WCHAR);
|
||||
+ }
|
||||
+ }
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
--
|
||||
2.50.1
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
From 8b2a6e19672b17ea61b2b4b5e141368a988ec9cf Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sat, 26 Apr 2025 17:07:21 +1000
|
||||
Subject: [PATCH] odbc32: SQLExecDirectW call fallback SQLExecDirect
|
||||
|
||||
---
|
||||
dlls/odbc32/proxyodbc.c | 25 +++++++++++++++++++++++--
|
||||
1 file changed, 23 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
|
||||
index e18117d5ad8..aace16cde55 100644
|
||||
--- a/dlls/odbc32/proxyodbc.c
|
||||
+++ b/dlls/odbc32/proxyodbc.c
|
||||
@@ -1113,6 +1113,20 @@ static SQLWCHAR *strnAtoW( const SQLCHAR *str, int len )
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static inline char *strdupWtoA(const WCHAR *str)
|
||||
+{
|
||||
+ char *ret = NULL;
|
||||
+
|
||||
+ if(str) {
|
||||
+ DWORD size = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
|
||||
+ ret = malloc(size);
|
||||
+ if(ret)
|
||||
+ WideCharToMultiByte(CP_ACP, 0, str, -1, ret, size, NULL, NULL);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static SQLRETURN columns_unix_a( struct statement *stmt, SQLCHAR *catalog, SQLSMALLINT len1, SQLCHAR *schema,
|
||||
SQLSMALLINT len2, SQLCHAR *table, SQLSMALLINT len3, SQLCHAR *column,
|
||||
SQLSMALLINT len4 )
|
||||
@@ -6148,10 +6162,17 @@ static SQLRETURN exec_direct_unix_w( struct statement *stmt, SQLWCHAR *text, SQL
|
||||
|
||||
static SQLRETURN exec_direct_win32_w( struct statement *stmt, SQLWCHAR *text, SQLINTEGER len )
|
||||
{
|
||||
+ SQLRETURN ret = SQL_ERROR;
|
||||
+
|
||||
if (stmt->hdr.win32_funcs->SQLExecDirectW)
|
||||
return stmt->hdr.win32_funcs->SQLExecDirectW( stmt->hdr.win32_handle, text, len );
|
||||
- if (stmt->hdr.win32_funcs->SQLExecDirect) FIXME( "Unicode to ANSI conversion not handled\n" );
|
||||
- return SQL_ERROR;
|
||||
+ if (stmt->hdr.win32_funcs->SQLExecDirect)
|
||||
+ {
|
||||
+ SQLCHAR *textA = (SQLCHAR*)strdupWtoA( text );
|
||||
+ ret = stmt->hdr.win32_funcs->SQLExecDirect( stmt->hdr.win32_handle, textA, len );
|
||||
+ free(textA);
|
||||
+ }
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
--
|
||||
2.50.1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From e482d2dec06bdbefa1aafff913cb34aeaa7c854e Mon Sep 17 00:00:00 2001
|
||||
From 1afac79a78e568ed8fa6e2f2aa5b9eef986188b8 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sat, 26 Apr 2025 17:32:49 +1000
|
||||
Subject: [PATCH] odbc32: SQLDescribeColW add ANSI fallback
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] odbc32: SQLDescribeColW add ANSI fallback
|
||||
1 file changed, 12 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
|
||||
index aace16cde55..00d25d06ec2 100644
|
||||
index 0beeafd27cd..7a0d5e46cda 100644
|
||||
--- a/dlls/odbc32/proxyodbc.c
|
||||
+++ b/dlls/odbc32/proxyodbc.c
|
||||
@@ -6050,11 +6050,21 @@ static SQLRETURN describe_col_win32_w( struct statement *stmt, SQLUSMALLINT col_
|
||||
@@ -6059,11 +6059,21 @@ static SQLRETURN describe_col_win32_w( struct statement *stmt, SQLUSMALLINT col_
|
||||
SQLSMALLINT buf_len, SQLSMALLINT *name_len, SQLSMALLINT *data_type,
|
||||
SQLULEN *col_size, SQLSMALLINT *decimal_digits, SQLSMALLINT *nullable )
|
||||
{
|
||||
@@ -24,7 +24,7 @@ index aace16cde55..00d25d06ec2 100644
|
||||
- return SQL_ERROR;
|
||||
+ if (stmt->hdr.win32_funcs->SQLDescribeCol)
|
||||
+ {
|
||||
+ SQLCHAR *name = (SQLCHAR*)strdupWtoA( (WCHAR*)col_name );
|
||||
+ SQLCHAR *name = (SQLCHAR*)strdupWA( (WCHAR*)col_name );
|
||||
+
|
||||
+ ret = stmt->hdr.win32_funcs->SQLDescribeCol( stmt->hdr.win32_handle, col_number, name, buf_len, name_len,
|
||||
+ data_type, col_size, decimal_digits, nullable);
|
||||
@@ -36,5 +36,5 @@ index aace16cde55..00d25d06ec2 100644
|
||||
|
||||
/*************************************************************************
|
||||
--
|
||||
2.50.1
|
||||
2.51.0
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 472c0a3a3962a82dc17fc3c0aa2dc6ed5ade8b22 Mon Sep 17 00:00:00 2001
|
||||
From 0affa8ade82076038f5c5ccfc9bb295401be7f95 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Thu, 1 May 2025 08:05:31 +1000
|
||||
Subject: [PATCH] odbc32: SQLNativeSqlW add ANSI fallback
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] odbc32: SQLNativeSqlW add ANSI fallback
|
||||
1 file changed, 24 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
|
||||
index 4ff20236cce..416d5aa77fa 100644
|
||||
index e39964d3489..cbd769fff44 100644
|
||||
--- a/dlls/odbc32/proxyodbc.c
|
||||
+++ b/dlls/odbc32/proxyodbc.c
|
||||
@@ -7895,11 +7895,33 @@ static SQLRETURN native_sql_unix_w( struct connection *con, SQLWCHAR *in_stateme
|
||||
@@ -7888,11 +7888,33 @@ static SQLRETURN native_sql_unix_w( struct connection *con, SQLWCHAR *in_stateme
|
||||
static SQLRETURN native_sql_win32_w( struct connection *con, SQLWCHAR *in_statement, SQLINTEGER len,
|
||||
SQLWCHAR *out_statement, SQLINTEGER buflen, SQLINTEGER *retlen )
|
||||
{
|
||||
@@ -24,7 +24,7 @@ index 4ff20236cce..416d5aa77fa 100644
|
||||
- return SQL_ERROR;
|
||||
+ if (con->hdr.win32_funcs->SQLNativeSql)
|
||||
+ {
|
||||
+ SQLCHAR *statement = (SQLCHAR*)strdupWtoA( (WCHAR*)in_statement );
|
||||
+ SQLCHAR *statement = (SQLCHAR *)strdupWA( (WCHAR *)in_statement );
|
||||
+ SQLCHAR *out = NULL;
|
||||
+ if (buflen)
|
||||
+ out = malloc( buflen );
|
||||
@@ -48,5 +48,5 @@ index 4ff20236cce..416d5aa77fa 100644
|
||||
|
||||
/*************************************************************************
|
||||
--
|
||||
2.50.1
|
||||
2.51.0
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 52ea953c3395206435d5bd9eb9f3dbbebde47993 Mon Sep 17 00:00:00 2001
|
||||
From b9c01073dd390b5b241b1e87afefb5e61dbd1635 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Thu, 1 May 2025 08:10:04 +1000
|
||||
Subject: [PATCH] odbc32: SQLPrepareW add ANSI fallback
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] odbc32: SQLPrepareW add ANSI fallback
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
|
||||
index 416d5aa77fa..138ccb0f112 100644
|
||||
index cbd769fff44..b20ccaf5e55 100644
|
||||
--- a/dlls/odbc32/proxyodbc.c
|
||||
+++ b/dlls/odbc32/proxyodbc.c
|
||||
@@ -6274,10 +6274,17 @@ static SQLRETURN prepare_unix_w( struct statement *stmt, SQLWCHAR *statement, SQ
|
||||
@@ -6307,10 +6307,17 @@ static SQLRETURN prepare_unix_w( struct statement *stmt, SQLWCHAR *statement, SQ
|
||||
|
||||
static SQLRETURN prepare_win32_w( struct statement *stmt, SQLWCHAR *statement, SQLINTEGER len )
|
||||
{
|
||||
@@ -23,7 +23,7 @@ index 416d5aa77fa..138ccb0f112 100644
|
||||
- return SQL_ERROR;
|
||||
+ if (stmt->hdr.win32_funcs->SQLPrepare)
|
||||
+ {
|
||||
+ SQLCHAR *statementA = (SQLCHAR*)strdupWtoA( statement );
|
||||
+ SQLCHAR *statementA = (SQLCHAR *)strdupWA( statement );
|
||||
+ ret = stmt->hdr.win32_funcs->SQLPrepare( stmt->hdr.win32_handle, statementA, len );
|
||||
+ free(statementA);
|
||||
+ }
|
||||
@@ -32,5 +32,5 @@ index 416d5aa77fa..138ccb0f112 100644
|
||||
|
||||
/*************************************************************************
|
||||
--
|
||||
2.50.1
|
||||
2.51.0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user