From 8516d91fba0263efeea1712ec8d693330ef9ad07 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Wed, 11 Sep 2013 00:07:58 +0000 Subject: [PATCH] [ADVPACK] * Sync with Wine 1.7.1. svn path=/trunk/; revision=60025 --- reactos/dll/win32/advpack/advpack.c | 8 +++--- reactos/dll/win32/advpack/advpack_private.h | 2 +- reactos/dll/win32/advpack/files.c | 4 +-- reactos/dll/win32/advpack/install.c | 27 +++++++++++++++------ reactos/media/doc/README.WINE | 2 +- 5 files changed, 27 insertions(+), 16 deletions(-) diff --git a/reactos/dll/win32/advpack/advpack.c b/reactos/dll/win32/advpack/advpack.c index 9942ee9a9b2..597846e43a6 100644 --- a/reactos/dll/win32/advpack/advpack.c +++ b/reactos/dll/win32/advpack/advpack.c @@ -177,7 +177,7 @@ void set_ldids(HINF hInf, LPCWSTR pszInstallSection, LPCWSTR pszWorkingDir) FIXME("Need to support changing paths - default will be used\n"); /* set all ldids to dest */ - while ((ptr = get_parameter(&key, ','))) + while ((ptr = get_parameter(&key, ',', FALSE))) { ldid = atolW(ptr); SetupSetDirectoryIdW(hInf, ldid, dest); @@ -510,12 +510,12 @@ HRESULT WINAPI RegisterOCX(HWND hWnd, HINSTANCE hInst, LPCSTR cmdline, INT show) cmdline_ptr = cmdline_copy; lstrcpyW(cmdline_copy, cmdlineW.Buffer); - ocx_filename = get_parameter(&cmdline_ptr, ','); + ocx_filename = get_parameter(&cmdline_ptr, ',', TRUE); if (!ocx_filename || !*ocx_filename) goto done; - str_flags = get_parameter(&cmdline_ptr, ','); - param = get_parameter(&cmdline_ptr, ','); + str_flags = get_parameter(&cmdline_ptr, ',', TRUE); + param = get_parameter(&cmdline_ptr, ',', TRUE); hm = LoadLibraryExW(ocx_filename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); if (!hm) diff --git a/reactos/dll/win32/advpack/advpack_private.h b/reactos/dll/win32/advpack/advpack_private.h index 5d7489778d6..205cc60dc2b 100644 --- a/reactos/dll/win32/advpack/advpack_private.h +++ b/reactos/dll/win32/advpack/advpack_private.h @@ -22,7 +22,7 @@ #define __ADVPACK_PRIVATE_H HRESULT do_ocx_reg(HMODULE hocx, BOOL do_reg, const WCHAR *flags, const WCHAR *param) DECLSPEC_HIDDEN; -LPWSTR get_parameter(LPWSTR *params, WCHAR separator) DECLSPEC_HIDDEN; +LPWSTR get_parameter(LPWSTR *params, WCHAR separator, BOOL quoted) DECLSPEC_HIDDEN; void set_ldids(HINF hInf, LPCWSTR pszInstallSection, LPCWSTR pszWorkingDir) DECLSPEC_HIDDEN; HRESULT launch_exe(LPCWSTR cmd, LPCWSTR dir, HANDLE *phEXE) DECLSPEC_HIDDEN; diff --git a/reactos/dll/win32/advpack/files.c b/reactos/dll/win32/advpack/files.c index 0b693b0b1f3..3c82c213dd8 100644 --- a/reactos/dll/win32/advpack/files.c +++ b/reactos/dll/win32/advpack/files.c @@ -503,8 +503,8 @@ HRESULT WINAPI DelNodeRunDLL32W(HWND hWnd, HINSTANCE hInst, LPWSTR cmdline, INT lstrcpyW(cmdline_copy, cmdline); /* get the parameters at indexes 0 and 1 respectively */ - szFilename = get_parameter(&cmdline_ptr, ','); - szFlags = get_parameter(&cmdline_ptr, ','); + szFilename = get_parameter(&cmdline_ptr, ',', TRUE); + szFlags = get_parameter(&cmdline_ptr, ',', TRUE); if (szFlags) dwFlags = atolW(szFlags); diff --git a/reactos/dll/win32/advpack/install.c b/reactos/dll/win32/advpack/install.c index 1a45e75653a..dc251f0ef20 100644 --- a/reactos/dll/win32/advpack/install.c +++ b/reactos/dll/win32/advpack/install.c @@ -209,13 +209,24 @@ static HRESULT run_setup_commands_callback(HINF hinf, PCWSTR field, const void * /* sequentially returns pointers to parameters in a parameter list * returns NULL if the parameter is empty, e.g. one,,three */ -LPWSTR get_parameter(LPWSTR *params, WCHAR separator) +LPWSTR get_parameter(LPWSTR *params, WCHAR separator, BOOL quoted) { LPWSTR token = *params; if (!*params) return NULL; + if (quoted && *token == '"') + { + WCHAR *end = strchrW(token + 1, '"'); + if (end) + { + *end = 0; + *params = end + 1; + token = token + 1; + } + } + *params = strchrW(*params, separator); if (*params) *(*params)++ = '\0'; @@ -764,10 +775,10 @@ INT WINAPI LaunchINFSectionW(HWND hWnd, HINSTANCE hInst, LPWSTR cmdline, INT sho cmdline_ptr = cmdline_copy; lstrcpyW(cmdline_copy, cmdline); - inf_filename = get_parameter(&cmdline_ptr, ','); - install_sec = get_parameter(&cmdline_ptr, ','); + inf_filename = get_parameter(&cmdline_ptr, ',', TRUE); + install_sec = get_parameter(&cmdline_ptr, ',', TRUE); - str_flags = get_parameter(&cmdline_ptr, ','); + str_flags = get_parameter(&cmdline_ptr, ',', TRUE); if (str_flags) flags = atolW(str_flags); @@ -857,12 +868,12 @@ HRESULT WINAPI LaunchINFSectionExW(HWND hWnd, HINSTANCE hInst, LPWSTR cmdline, I cmdline_ptr = cmdline_copy; lstrcpyW(cmdline_copy, cmdline); - cabinfo.pszInf = get_parameter(&cmdline_ptr, ','); - cabinfo.pszSection = get_parameter(&cmdline_ptr, ','); - cabinfo.pszCab = get_parameter(&cmdline_ptr, ','); + cabinfo.pszInf = get_parameter(&cmdline_ptr, ',', TRUE); + cabinfo.pszSection = get_parameter(&cmdline_ptr, ',', TRUE); + cabinfo.pszCab = get_parameter(&cmdline_ptr, ',', TRUE); *cabinfo.szSrcPath = '\0'; - flags = get_parameter(&cmdline_ptr, ','); + flags = get_parameter(&cmdline_ptr, ',', TRUE); if (flags) cabinfo.dwFlags = atolW(flags); diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 89a1e139e78..20ca721cf9b 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -41,7 +41,7 @@ reactos/dll/directx/qedit # Autosync reactos/dll/directx/quartz # Synced to Wine-1.5.26 reactos/dll/win32/activeds # Synced to Wine-1.1.43? reactos/dll/win32/actxprxy # Synced to Wine-1.5.26 -reactos/dll/win32/advpack # Synced to Wine-1.5.26 +reactos/dll/win32/advpack # Synced to Wine-1.7.1 reactos/dll/win32/atl # Synced to Wine-1.5.19 reactos/dll/win32/atl100 # Synced to Wine-1.5.19 reactos/dll/win32/avifil32 # Synced to Wine-1.5.26