From 672a2bae70e63d7e6dae0107653934fd302b7a04 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Wed, 8 Oct 2025 08:50:17 +1100 Subject: [PATCH] Rebase against dc34fef45d491516fa8eaee45b2ae40faa7b0bfe. --- ...-support-for-creating-reparse-points.patch | 37 ++++++------ ...-odbc32-SQLGetData-support-ODBC-v2.0.patch | 27 +++++---- ...odbc32-SQLGetData-handle-ANSI-driver.patch | 60 ------------------- staging/upstream-commit | 2 +- 4 files changed, 33 insertions(+), 93 deletions(-) delete mode 100644 patches/odbc32-fixes/0024-odbc32-SQLGetData-handle-ANSI-driver.patch diff --git a/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-creating-reparse-points.patch b/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-creating-reparse-points.patch index 1599bb7d..833d8257 100644 --- a/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-creating-reparse-points.patch +++ b/patches/ntdll-Junction_Points/0001-ntdll-Add-support-for-creating-reparse-points.patch @@ -1,22 +1,21 @@ -From 32aeea846670432cf1e8d90defe6ca486b710559 Mon Sep 17 00:00:00 2001 +From f0d41c59ac06aabfba83d598fb017c7f0a918a99 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Thu, 16 Jan 2014 20:56:49 -0700 Subject: [PATCH] ntdll: Add support for creating reparse points. Signed-off-by: Erich E. Hoover --- - configure.ac | 2 + - dlls/ntdll/Makefile.in | 2 +- - dlls/ntdll/tests/file.c | 157 ++++++++++++++++++--- - dlls/ntdll/unix/file.c | 302 ++++++++++++++++++++++++++++++++++++++++ - include/ddk/ntifs.h | 5 + - 5 files changed, 450 insertions(+), 18 deletions(-) + configure.ac | 2 + + dlls/ntdll/Makefile.in | 2 +- + dlls/ntdll/unix/file.c | 302 +++++++++++++++++++++++++++++++++++++++++ + include/ddk/ntifs.h | 5 + + 4 files changed, 310 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac -index 6d093b52526..c9e433f4e6c 100644 +index 242eb15ec19..ccd5095f3ba 100644 --- a/configure.ac +++ b/configure.ac -@@ -2111,6 +2111,8 @@ AC_CHECK_FUNCS(\ +@@ -2132,6 +2132,8 @@ AC_CHECK_FUNCS(\ prctl \ sched_getcpu \ sched_yield \ @@ -26,20 +25,20 @@ index 6d093b52526..c9e433f4e6c 100644 setprogname \ sigprocmask \ diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in -index f7558bb5d86..aad14d17e61 100644 +index 3c0dfa7a895..b9a8bcba4cf 100644 --- a/dlls/ntdll/Makefile.in +++ b/dlls/ntdll/Makefile.in @@ -5,7 +5,7 @@ IMPORTLIB = ntdll IMPORTS = $(TOMCRYPT_PE_LIBS) $(MUSL_PE_LIBS) EXTRAINCL = $(TOMCRYPT_PE_CFLAGS) - UNIX_CFLAGS = $(UNWIND_CFLAGS) --UNIX_LIBS = $(IOKIT_LIBS) $(COREFOUNDATION_LIBS) $(CORESERVICES_LIBS) $(RT_LIBS) $(PTHREAD_LIBS) $(UNWIND_LIBS) $(I386_LIBS) $(PROCSTAT_LIBS) -+UNIX_LIBS = $(IOKIT_LIBS) $(COREFOUNDATION_LIBS) $(CORESERVICES_LIBS) $(RT_LIBS) $(PTHREAD_LIBS) $(UNWIND_LIBS) $(I386_LIBS) $(PROCSTAT_LIBS) -lm + UNIX_CFLAGS = $(UNWIND_CFLAGS) $(HWLOC_CFLAGS) +-UNIX_LIBS = $(IOKIT_LIBS) $(COREFOUNDATION_LIBS) $(CORESERVICES_LIBS) $(RT_LIBS) $(PTHREAD_LIBS) $(UNWIND_LIBS) $(I386_LIBS) $(PROCSTAT_LIBS) $(HWLOC_LIBS) ++UNIX_LIBS = $(IOKIT_LIBS) $(COREFOUNDATION_LIBS) $(CORESERVICES_LIBS) $(RT_LIBS) $(PTHREAD_LIBS) $(UNWIND_LIBS) $(I386_LIBS) $(PROCSTAT_LIBS) $(HWLOC_LIBS) -lm EXTRADLLFLAGS = -nodefaultlibs i386_EXTRADLLFLAGS = -Wl,--image-base,0x7bc00000 diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 8d2809ca193..672a1d1fa27 100644 +index 7ab1dbb2b55..5b4fcb3711d 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c @@ -36,6 +36,8 @@ @@ -72,7 +71,7 @@ index 8d2809ca193..672a1d1fa27 100644 #ifdef linux /* We want the real kernel dirent structure, not the libc one */ -@@ -244,6 +253,95 @@ static const BOOL is_case_sensitive = FALSE; +@@ -249,6 +258,95 @@ static const BOOL is_case_sensitive = FALSE; static pthread_mutex_t dir_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t mnt_mutex = PTHREAD_MUTEX_INITIALIZER; @@ -168,7 +167,7 @@ index 8d2809ca193..672a1d1fa27 100644 /* check if a given Unicode char is OK in a DOS short name */ static inline BOOL is_invalid_dos_char( WCHAR ch ) { -@@ -1665,6 +1763,28 @@ static int parse_samba_dos_attrib_data( char *data, int len ) +@@ -1653,6 +1751,28 @@ static int parse_samba_dos_attrib_data( char *data, int len ) } @@ -197,7 +196,7 @@ index 8d2809ca193..672a1d1fa27 100644 static BOOL fd_is_mount_point( int fd, const struct stat *st ) { struct stat parent; -@@ -3528,6 +3648,181 @@ done: +@@ -3455,6 +3575,181 @@ done: } @@ -379,7 +378,7 @@ index 8d2809ca193..672a1d1fa27 100644 /****************************************************************************** * lookup_unix_name * -@@ -6415,6 +6710,13 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap +@@ -6400,6 +6695,13 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap break; } @@ -410,5 +409,5 @@ index 980235abdc9..90248b4897c 100644 { UCHAR DataBuffer[1]; -- -2.47.2 +2.51.0 diff --git a/patches/odbc32-fixes/0005-odbc32-SQLGetData-support-ODBC-v2.0.patch b/patches/odbc32-fixes/0005-odbc32-SQLGetData-support-ODBC-v2.0.patch index 478478e0..bd60a785 100644 --- a/patches/odbc32-fixes/0005-odbc32-SQLGetData-support-ODBC-v2.0.patch +++ b/patches/odbc32-fixes/0005-odbc32-SQLGetData-support-ODBC-v2.0.patch @@ -1,20 +1,21 @@ -From 5171b6447da54618cf45fd367fcf4f5695ccc130 Mon Sep 17 00:00:00 2001 +From 9996d4b09e7ffbce58f34424475c6fcf257e6476 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Wed, 17 Jul 2024 21:55:20 +1000 Subject: [PATCH] odbc32: SQLGetData support ODBC v2.0 --- - dlls/odbc32/proxyodbc.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) + dlls/odbc32/proxyodbc.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c -index 3d4c58badfe..e1db8564f90 100644 +index 46e7ffc1d95..c95603b7030 100644 --- a/dlls/odbc32/proxyodbc.c +++ b/dlls/odbc32/proxyodbc.c -@@ -2525,7 +2525,21 @@ static SQLRETURN get_data_win32( struct statement *stmt, SQLUSMALLINT column, SQ - SQLLEN buflen, SQLLEN *retlen ) - { - if (stmt->hdr.win32_funcs->SQLGetData) +@@ -2576,8 +2576,21 @@ static SQLRETURN get_data_win32( struct statement *stmt, SQLUSMALLINT column, SQ + free( data ); + return ret; + } ++ else + { + struct environment *env = (struct environment *)find_object_type(SQL_HANDLE_ENV, stmt->hdr.parent); + if (env && env->driver_ver == SQL_OV_ODBC2) @@ -26,13 +27,13 @@ index 3d4c58badfe..e1db8564f90 100644 + else if (type == SQL_C_TYPE_TIMESTAMP) + type = SQL_C_TIMESTAMP; + } -+ - return stmt->hdr.win32_funcs->SQLGetData( stmt->hdr.win32_handle, column, type, value, buflen, retlen ); + +- return stmt->hdr.win32_funcs->SQLGetData( stmt->hdr.win32_handle, column, type, value, buflen, retlen ); ++ return stmt->hdr.win32_funcs->SQLGetData( stmt->hdr.win32_handle, column, type, value, buflen, retlen ); + } -+ - return SQL_ERROR; } + /************************************************************************* -- -2.50.1 +2.51.0 diff --git a/patches/odbc32-fixes/0024-odbc32-SQLGetData-handle-ANSI-driver.patch b/patches/odbc32-fixes/0024-odbc32-SQLGetData-handle-ANSI-driver.patch deleted file mode 100644 index 528d26b2..00000000 --- a/patches/odbc32-fixes/0024-odbc32-SQLGetData-handle-ANSI-driver.patch +++ /dev/null @@ -1,60 +0,0 @@ -From d2d82abfba3d43d4416f14ac5318acd4eab8528c Mon Sep 17 00:00:00 2001 -From: Alistair Leslie-Hughes -Date: Mon, 5 May 2025 10:17:22 +1000 -Subject: [PATCH] odbc32: SQLGetData handle ANSI driver - ---- - dlls/odbc32/proxyodbc.c | 26 ++++++++++++++++++++++++-- - 1 file changed, 24 insertions(+), 2 deletions(-) - -diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c -index a94b31cc544..78ec2683e63 100644 ---- a/dlls/odbc32/proxyodbc.c -+++ b/dlls/odbc32/proxyodbc.c -@@ -2592,8 +2592,11 @@ static SQLRETURN get_data_unix( struct statement *stmt, SQLUSMALLINT column, SQL - static SQLRETURN get_data_win32( struct statement *stmt, SQLUSMALLINT column, SQLSMALLINT type, SQLPOINTER value, - SQLLEN buflen, SQLLEN *retlen ) - { -+ SQLRETURN ret = SQL_ERROR; -+ - if (stmt->hdr.win32_funcs->SQLGetData) - { -+ BOOL wants_wchar = FALSE; - struct environment *env = (struct environment *)find_object_type(SQL_HANDLE_ENV, stmt->hdr.parent); - if (env && env->driver_ver == SQL_OV_ODBC2) - { -@@ -2605,10 +2608,29 @@ static SQLRETURN get_data_win32( struct statement *stmt, SQLUSMALLINT column, SQ - type = SQL_C_TIMESTAMP; - } - -- return stmt->hdr.win32_funcs->SQLGetData( stmt->hdr.win32_handle, column, type, value, buflen, retlen ); -+ if ( driver_ansi_only(stmt->hdr.win32_funcs) ) -+ { -+ if (type == SQL_C_WCHAR) -+ { -+ type = SQL_CHAR; -+ wants_wchar = TRUE; -+ } -+ } -+ -+ ret = stmt->hdr.win32_funcs->SQLGetData( stmt->hdr.win32_handle, column, type, value, buflen, retlen ); -+ -+ if (SUCCESS(ret) && wants_wchar ) -+ { -+ WCHAR *str = strnAtoW(value, -1); -+ wcscpy(value, str); -+ free(str); -+ -+ if (retlen) -+ *retlen = *retlen * sizeof(WCHAR); -+ } - } - -- return SQL_ERROR; -+ return ret; - } - - /************************************************************************* --- -2.50.1 - diff --git a/staging/upstream-commit b/staging/upstream-commit index 8e263172..d01e628d 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -7e62997aff603a69e67d270465088ff2ac3132d4 +dc34fef45d491516fa8eaee45b2ae40faa7b0bfe