diff --git a/patches/fsutil-Stub_Program/0001-fsutil-Add-fsutil-program-with-support-for-creating-.patch b/patches/fsutil-Stub_Program/0001-fsutil-Add-fsutil-program-with-support-for-creating-.patch index a735b1e4..4b6338d3 100644 --- a/patches/fsutil-Stub_Program/0001-fsutil-Add-fsutil-program-with-support-for-creating-.patch +++ b/patches/fsutil-Stub_Program/0001-fsutil-Add-fsutil-program-with-support-for-creating-.patch @@ -1,44 +1,42 @@ -From fe2b318c4d9cee458cc4db4d41c028a8b783282d Mon Sep 17 00:00:00 2001 +From 413b8907e3c4747d83ccacf8657554552ff18620 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Fri, 1 Apr 2016 01:29:51 +0200 Subject: fsutil: Add fsutil program with support for creating hard links. --- - configure.ac | 1 + - programs/fsutil/Makefile.in | 8 +++ - programs/fsutil/fsutil.rc | 34 ++++++++++ - programs/fsutil/main.c | 151 ++++++++++++++++++++++++++++++++++++++++++++ - programs/fsutil/resources.h | 25 ++++++++ - 5 files changed, 219 insertions(+) - create mode 100644 programs/fsutil/Makefile.in + configure.ac | 2 +- + programs/fsutil/Makefile.in | 3 + + programs/fsutil/fsutil.rc | 34 ++++++++++++ + programs/fsutil/main.c | 131 ++++++++++++++++++++++++++++++++++++++++++-- + programs/fsutil/resources.h | 25 +++++++++ + 5 files changed, 188 insertions(+), 7 deletions(-) create mode 100644 programs/fsutil/fsutil.rc - create mode 100644 programs/fsutil/main.c create mode 100644 programs/fsutil/resources.h diff --git a/configure.ac b/configure.ac -index 20478df..8cd1f4a 100644 +index 597b84e..1968321 100644 --- a/configure.ac +++ b/configure.ac -@@ -3459,6 +3459,7 @@ WINE_CONFIG_PROGRAM(expand,,[install]) +@@ -3463,7 +3463,7 @@ WINE_CONFIG_PROGRAM(expand,,[install]) WINE_CONFIG_PROGRAM(explorer,,[clean,install]) WINE_CONFIG_PROGRAM(extrac32,,[install]) WINE_CONFIG_PROGRAM(findstr,,[install]) +-WINE_CONFIG_PROGRAM(fsutil,,[install]) +WINE_CONFIG_PROGRAM(fsutil,,[clean,install]) WINE_CONFIG_PROGRAM(hh,,[install]) WINE_CONFIG_PROGRAM(hostname,,[clean,install]) WINE_CONFIG_PROGRAM(icacls,,[install]) diff --git a/programs/fsutil/Makefile.in b/programs/fsutil/Makefile.in -new file mode 100644 -index 0000000..7433695 ---- /dev/null +index f339c4c..7433695 100644 +--- a/programs/fsutil/Makefile.in +++ b/programs/fsutil/Makefile.in -@@ -0,0 +1,8 @@ -+MODULE = fsutil.exe -+APPMODE = -mconsole -municode +@@ -1,5 +1,8 @@ + MODULE = fsutil.exe + APPMODE = -mconsole -municode +IMPORTS = user32 -+ -+C_SRCS = \ -+ main.c + + C_SRCS = \ + main.c + +RC_SRCS = fsutil.rc diff --git a/programs/fsutil/fsutil.rc b/programs/fsutil/fsutil.rc @@ -82,37 +80,29 @@ index 0000000..593f817 + STRING_HARDLINK_CREATE_USAGE, "Syntax: fsutil hardlink create old new\n\n" +} diff --git a/programs/fsutil/main.c b/programs/fsutil/main.c -new file mode 100644 -index 0000000..ff58dd4 ---- /dev/null +index 2bce87e..41370b5 100644 +--- a/programs/fsutil/main.c +++ b/programs/fsutil/main.c -@@ -0,0 +1,151 @@ -+/* +@@ -1,5 +1,6 @@ + /* + * Copyright 2016 Austin English + * Copyright 2016 Michael Müller -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA -+ */ -+ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -16,18 +17,136 @@ + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +-#include "wine/debug.h" +#include +#include +#include + +#include "resources.h" -+ -+WINE_DEFAULT_DEBUG_CHANNEL(fsutil); -+ + + WINE_DEFAULT_DEBUG_CHANNEL(fsutil); + +static void output_write(const WCHAR *str, DWORD wlen) +{ + DWORD count, ret; @@ -214,15 +204,20 @@ index 0000000..ff58dd4 + return ret; +} + -+int wmain(int argc, WCHAR *argv[]) -+{ + int wmain(int argc, WCHAR *argv[]) + { +- int i; + static const WCHAR hardlinkW[]={'h','a','r','d','l','i','n','k',0}; + int i, ret = 0; -+ -+ for (i = 0; i < argc; i++) + +- WINE_FIXME("stub:"); + for (i = 0; i < argc; i++) +- WINE_FIXME(" %s", wine_dbgstr_w(argv[i])); +- WINE_FIXME("\n"); + WINE_TRACE(" %s", wine_dbgstr_w(argv[i])); + WINE_TRACE("\n"); -+ + +- return 0; + if (argc > 1) + { + if (!strcmpiW(argv[1], hardlinkW)) @@ -237,7 +232,7 @@ index 0000000..ff58dd4 + + output_string(STRING_USAGE); + return ret; -+} + } diff --git a/programs/fsutil/resources.h b/programs/fsutil/resources.h new file mode 100644 index 0000000..b85826a @@ -270,5 +265,5 @@ index 0000000..b85826a +#define STRING_HARDLINK_USAGE 104 +#define STRING_HARDLINK_CREATE_USAGE 105 -- -2.7.1 +2.8.0 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 6ee2d9e8..812c2070 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "a6e1adb8b701c390b248f8c4d74bef1ed5557599" + echo "4be4e282b737a7cfbccf18552a581ee6de3ac13c" } # Show version information @@ -385,7 +385,6 @@ patch_enable_all () enable_winmm_Delay_Import_Depends="$1" enable_winmm_mciSendCommandA="$1" enable_winspool_drv_SetPrinterW="$1" - enable_winsta_WinStationEnumerateW="$1" enable_wintrust_WinVerifyTrust="$1" enable_wpcap_Dynamic_Linking="$1" enable_wpcap_Several_Fixes="$1" @@ -1327,9 +1326,6 @@ patch_enable () winspool.drv-SetPrinterW) enable_winspool_drv_SetPrinterW="$2" ;; - winsta-WinStationEnumerateW) - enable_winsta_WinStationEnumerateW="$2" - ;; wintrust-WinVerifyTrust) enable_wintrust_WinVerifyTrust="$2" ;; @@ -7541,9 +7537,9 @@ fi # | * dlls/wininet/http.c, dlls/wininet/tests/http.c # | if test "$enable_wininet_HttpOpenRequestW" -eq 1; then - patch_apply wininet-HttpOpenRequestW/0001-wininet-Set-default-HTTP-port-correctly-when-passing.patch + patch_apply wininet-HttpOpenRequestW/0001-wininet-Handle-INTERNET_INVALID_PORT_NUMBER-in-HttpO.patch ( - echo '+ { "Michael Müller", "wininet: Set default HTTP port correctly when passing INTERNET_FLAG_SECURE to InternetConnect.", 1 },'; + echo '+ { "Michael Müller", "wininet: Handle INTERNET_INVALID_PORT_NUMBER in HttpOpenRequest.", 1 },'; ) >> "$patchlist" fi @@ -7618,21 +7614,6 @@ if test "$enable_winspool_drv_SetPrinterW" -eq 1; then ) >> "$patchlist" fi -# Patchset winsta-WinStationEnumerateW -# | -# | This patchset fixes the following Wine bugs: -# | * [#38102] Add stub for winsta.WinStationEnumerateW -# | -# | Modified files: -# | * dlls/winsta/main.c, dlls/winsta/winsta.spec -# | -if test "$enable_winsta_WinStationEnumerateW" -eq 1; then - patch_apply winsta-WinStationEnumerateW/0001-winsta-Add-stub-for-WinStationEnumerateW.patch - ( - echo '+ { "Austin English", "winsta: Add stub for WinStationEnumerateW.", 2 },'; - ) >> "$patchlist" -fi - # Patchset wintrust-WinVerifyTrust # | # | Modified files: diff --git a/patches/wininet-HttpOpenRequestW/0001-wininet-Handle-INTERNET_INVALID_PORT_NUMBER-in-HttpO.patch b/patches/wininet-HttpOpenRequestW/0001-wininet-Handle-INTERNET_INVALID_PORT_NUMBER-in-HttpO.patch new file mode 100644 index 00000000..41e8706f --- /dev/null +++ b/patches/wininet-HttpOpenRequestW/0001-wininet-Handle-INTERNET_INVALID_PORT_NUMBER-in-HttpO.patch @@ -0,0 +1,76 @@ +From 842a91f83a472f364f6617f90a657603385fbc59 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Mon, 25 Apr 2016 21:46:29 +0200 +Subject: wininet: Handle INTERNET_INVALID_PORT_NUMBER in HttpOpenRequest. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Michael Müller +Signed-off-by: Sebastian Lackner +--- + dlls/wininet/http.c | 11 +++++++++-- + dlls/wininet/tests/http.c | 6 +++--- + 2 files changed, 12 insertions(+), 5 deletions(-) + +diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c +index ef0b36e..9d75b59 100644 +--- a/dlls/wininet/http.c ++++ b/dlls/wininet/http.c +@@ -3331,7 +3331,7 @@ static DWORD HTTP_HttpOpenRequestW(http_session_t *session, + { + appinfo_t *hIC = session->appInfo; + http_request_t *request; +- DWORD len; ++ DWORD port, len; + + TRACE("-->\n"); + +@@ -3360,7 +3360,14 @@ static DWORD HTTP_HttpOpenRequestW(http_session_t *session, + request->session = session; + list_add_head( &session->hdr.children, &request->hdr.entry ); + +- request->server = get_server(session->hostName, session->hostPort, (dwFlags & INTERNET_FLAG_SECURE) != 0, TRUE); ++ port = session->hostPort; ++ if (port == INTERNET_INVALID_PORT_NUMBER) ++ { ++ port = (session->hdr.dwFlags & INTERNET_FLAG_SECURE) ? ++ INTERNET_DEFAULT_HTTPS_PORT : INTERNET_DEFAULT_HTTP_PORT; ++ } ++ ++ request->server = get_server(session->hostName, port, (dwFlags & INTERNET_FLAG_SECURE) != 0, TRUE); + if(!request->server) { + WININET_Release(&request->hdr); + return ERROR_OUTOFMEMORY; +diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c +index 66ba526..6aa0f4c 100644 +--- a/dlls/wininet/tests/http.c ++++ b/dlls/wininet/tests/http.c +@@ -5771,13 +5771,13 @@ static void test_default_service_port(void) + ok(request != NULL, "HttpOpenRequest failed\n"); + + ret = HttpSendRequestA(request, NULL, 0, NULL, 0); +- todo_wine ok(ret, "HttpSendRequest failed with error %u\n", GetLastError()); ++ ok(ret, "HttpSendRequest failed with error %u\n", GetLastError()); + + size = sizeof(buffer); + memset(buffer, 0, sizeof(buffer)); + ret = HttpQueryInfoA(request, HTTP_QUERY_HOST | HTTP_QUERY_FLAG_REQUEST_HEADERS, buffer, &size, NULL); + ok(ret, "HttpQueryInfo failed with error %u\n", GetLastError()); +- todo_wine ok(!strcmp(buffer, "test.winehq.org"), "Expected test.winehg.org, got '%s'\n", buffer); ++ ok(!strcmp(buffer, "test.winehq.org"), "Expected test.winehg.org, got '%s'\n", buffer); + + InternetCloseHandle(request); + InternetCloseHandle(connect); +@@ -5796,7 +5796,7 @@ static void test_default_service_port(void) + memset(buffer, 0, sizeof(buffer)); + ret = HttpQueryInfoA(request, HTTP_QUERY_HOST | HTTP_QUERY_FLAG_REQUEST_HEADERS, buffer, &size, NULL); + ok(ret, "HttpQueryInfo failed with error %u\n", GetLastError()); +- todo_wine ok(!strcmp(buffer, "test.winehq.org:443"), "Expected test.winehg.org:443, got '%s'\n", buffer); ++ ok(!strcmp(buffer, "test.winehq.org:443"), "Expected test.winehg.org:443, got '%s'\n", buffer); + + InternetCloseHandle(request); + InternetCloseHandle(connect); +-- +2.8.0 + diff --git a/patches/wininet-HttpOpenRequestW/0001-wininet-Set-default-HTTP-port-correctly-when-passing.patch b/patches/wininet-HttpOpenRequestW/0001-wininet-Set-default-HTTP-port-correctly-when-passing.patch deleted file mode 100644 index 3fbdedf5..00000000 --- a/patches/wininet-HttpOpenRequestW/0001-wininet-Set-default-HTTP-port-correctly-when-passing.patch +++ /dev/null @@ -1,118 +0,0 @@ -From 66e49d5b0868a9832f339056ddfd25cf4aee01ba Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Sat, 19 Mar 2016 03:53:51 +0100 -Subject: wininet: Set default HTTP port correctly when passing - INTERNET_FLAG_SECURE to InternetConnect. - ---- - dlls/wininet/http.c | 8 +++++-- - dlls/wininet/tests/http.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 65 insertions(+), 3 deletions(-) - -diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c -index 143dc75..2f8fba4 100644 ---- a/dlls/wininet/http.c -+++ b/dlls/wininet/http.c -@@ -3335,7 +3335,7 @@ static DWORD HTTP_HttpOpenRequestW(http_session_t *session, - { - appinfo_t *hIC = session->appInfo; - http_request_t *request; -- DWORD len; -+ DWORD port, len; - - TRACE("-->\n"); - -@@ -3364,7 +3364,11 @@ static DWORD HTTP_HttpOpenRequestW(http_session_t *session, - request->session = session; - list_add_head( &session->hdr.children, &request->hdr.entry ); - -- request->server = get_server(session->hostName, session->hostPort, (dwFlags & INTERNET_FLAG_SECURE) != 0, TRUE); -+ port = session->hostPort; -+ if (port == INTERNET_INVALID_PORT_NUMBER) -+ port = (session->hdr.dwFlags & INTERNET_FLAG_SECURE) ? INTERNET_DEFAULT_HTTPS_PORT : INTERNET_DEFAULT_HTTP_PORT; -+ -+ request->server = get_server(session->hostName, port, (dwFlags & INTERNET_FLAG_SECURE) != 0, TRUE); - if(!request->server) { - WININET_Release(&request->hdr); - return ERROR_OUTOFMEMORY; -diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c -index 82fd10b..4e5b7fe 100644 ---- a/dlls/wininet/tests/http.c -+++ b/dlls/wininet/tests/http.c -@@ -5733,7 +5733,8 @@ static void test_connection_failure(void) - static void test_default_service_port(void) - { - HINTERNET session, connect, request; -- DWORD error; -+ DWORD size, count, error; -+ char buffer[128]; - BOOL ret; - - session = InternetOpenA("winetest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); -@@ -5753,6 +5754,63 @@ static void test_default_service_port(void) - ok(error == ERROR_INTERNET_SECURITY_CHANNEL_ERROR || error == ERROR_INTERNET_CANNOT_CONNECT, - "got %u\n", error); - -+ size = sizeof(buffer) - 1; -+ count = 0; -+ memset(buffer, 0, sizeof(buffer)); -+ ret = HttpQueryInfoA(request, HTTP_QUERY_HOST | HTTP_QUERY_FLAG_REQUEST_HEADERS, buffer, &size, &count); -+ ok(ret, "HttpQueryInfo succeeded\n"); -+ ok(!strcmp(buffer, "test.winehq.org:80"), "Expected test.winehg.org:80, got %s\n", buffer); -+ -+ InternetCloseHandle(request); -+ InternetCloseHandle(connect); -+ InternetCloseHandle(session); -+ -+ session = InternetOpenA("winetest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); -+ ok(session != NULL, "InternetOpen failed\n"); -+ -+ connect = InternetConnectA(session, "test.winehq.org", INTERNET_INVALID_PORT_NUMBER, NULL, NULL, -+ INTERNET_SERVICE_HTTP, INTERNET_FLAG_SECURE, 0); -+ ok(connect != NULL, "InternetConnect failed\n"); -+ -+ request = HttpOpenRequestA(connect, NULL, "/", NULL, NULL, NULL, INTERNET_FLAG_SECURE, 0); -+ ok(request != NULL, "HttpOpenRequest failed\n"); -+ -+ SetLastError(0xdeadbeef); -+ ret = HttpSendRequestA(request, NULL, 0, NULL, 0); -+ ok(ret, "HttpSendRequest failed with error %u\n", GetLastError()); -+ -+ size = sizeof(buffer) - 1; -+ count = 0; -+ memset(buffer, 0, sizeof(buffer)); -+ ret = HttpQueryInfoA(request, HTTP_QUERY_HOST | HTTP_QUERY_FLAG_REQUEST_HEADERS, buffer, &size, &count); -+ ok(ret, "HttpQueryInfo succeeded\n"); -+ ok(!strcmp(buffer, "test.winehq.org"), "Expected test.winehg.org, got %s\n", buffer); -+ -+ InternetCloseHandle(request); -+ InternetCloseHandle(connect); -+ InternetCloseHandle(session); -+ -+ session = InternetOpenA("winetest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); -+ ok(session != NULL, "InternetOpen failed\n"); -+ -+ connect = InternetConnectA(session, "test.winehq.org", INTERNET_INVALID_PORT_NUMBER, NULL, NULL, -+ INTERNET_SERVICE_HTTP, INTERNET_FLAG_SECURE, 0); -+ ok(connect != NULL, "InternetConnect failed\n"); -+ -+ request = HttpOpenRequestA(connect, NULL, "/", NULL, NULL, NULL, 0, 0); -+ ok(request != NULL, "HttpOpenRequest failed\n"); -+ -+ SetLastError(0xdeadbeef); -+ ret = HttpSendRequestA(request, NULL, 0, NULL, 0); -+ ok(ret, "HttpSendRequest failed with error %u\n", GetLastError()); -+ -+ size = sizeof(buffer) - 1; -+ count = 0; -+ memset(buffer, 0, sizeof(buffer)); -+ ret = HttpQueryInfoA(request, HTTP_QUERY_HOST | HTTP_QUERY_FLAG_REQUEST_HEADERS, buffer, &size, &count); -+ ok(ret, "HttpQueryInfo succeeded\n"); -+ ok(!strcmp(buffer, "test.winehq.org:443"), "Expected test.winehg.org:443, got %s\n", buffer); -+ - InternetCloseHandle(request); - InternetCloseHandle(connect); - InternetCloseHandle(session); --- -2.7.1 - diff --git a/patches/winsta-WinStationEnumerateW/0001-winsta-Add-stub-for-WinStationEnumerateW.patch b/patches/winsta-WinStationEnumerateW/0001-winsta-Add-stub-for-WinStationEnumerateW.patch deleted file mode 100644 index 7b5f93fb..00000000 --- a/patches/winsta-WinStationEnumerateW/0001-winsta-Add-stub-for-WinStationEnumerateW.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 7b26357b2125f80df05269f2bb38592dd2e8be6f Mon Sep 17 00:00:00 2001 -From: Austin English -Date: Thu, 7 May 2015 06:15:58 +0200 -Subject: winsta: Add stub for WinStationEnumerateW. (v2) - ---- - dlls/winsta/main.c | 7 +++++++ - dlls/winsta/winsta.spec | 2 +- - 2 files changed, 8 insertions(+), 1 deletion(-) - -diff --git a/dlls/winsta/main.c b/dlls/winsta/main.c -index a95782f..59efef2 100644 ---- a/dlls/winsta/main.c -+++ b/dlls/winsta/main.c -@@ -91,3 +91,10 @@ BOOL WINAPI WinStationVirtualOpen( PVOID a, PVOID b, PVOID c ) - SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); - return FALSE; - } -+ -+BOOLEAN WINAPI WinStationEnumerateW( HANDLE server, PSESSIONIDW *sessionids, ULONG *count ) -+{ -+ FIXME( "%p %p %p\n", server, sessionids, count ); -+ SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); -+ return FALSE; -+} -diff --git a/dlls/winsta/winsta.spec b/dlls/winsta/winsta.spec -index 30aa6b5..a9def1a 100644 ---- a/dlls/winsta/winsta.spec -+++ b/dlls/winsta/winsta.spec -@@ -29,7 +29,7 @@ - @ stub WinStationEnumerateA - @ stub WinStationEnumerateLicenses - @ stub WinStationEnumerateProcesses --@ stub WinStationEnumerateW -+@ stdcall WinStationEnumerateW(long ptr ptr) - @ stub WinStationEnumerate_IndexedA - @ stub WinStationEnumerate_IndexedW - @ stub WinStationFreeGAPMemory --- -2.4.5 - diff --git a/patches/winsta-WinStationEnumerateW/definition b/patches/winsta-WinStationEnumerateW/definition deleted file mode 100644 index 960df7bc..00000000 --- a/patches/winsta-WinStationEnumerateW/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [38102] Add stub for winsta.WinStationEnumerateW