Alexandre Julliard : shell32: Pass the destination Windows path to _SHCreateSymbolicLink().
Alexandre Julliard
julliard at winehq.org
Mon Sep 6 16:15:04 CDT 2021
Module: wine
Branch: master
Commit: bf811fdcaf70883634691d2c7262c3d80fe32323
URL: https://source.winehq.org/git/wine.git/?a=commit;h=bf811fdcaf70883634691d2c7262c3d80fe32323
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Sep 6 13:17:14 2021 +0200
shell32: Pass the destination Windows path to _SHCreateSymbolicLink().
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/shell32/shellpath.c | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index a35f42264ea..f0c692647af 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -4202,7 +4202,7 @@ static void _SHCreateMyDocumentsSubDirs(const UINT * aidsMyStuff, const UINT num
* aidsMyStuff [I] Array of IDS_* resources to create sub dirs for.
* aids_num [I] Number of elements in aidsMyStuff.
*/
-static void _SHCreateMyDocumentsSymbolicLink(const UINT * aidsMyStuff, const UINT aids_num)
+static void _SHCreateMyDocumentsSymbolicLink(const UINT * aidsMyStuff, const UINT aids_num, const WCHAR *path)
{
static const char * const xdg_dirs[] = { "DOCUMENTS" };
static const unsigned int num = ARRAY_SIZE(xdg_dirs);
@@ -4212,7 +4212,7 @@ static void _SHCreateMyDocumentsSymbolicLink(const UINT * aidsMyStuff, const UIN
char ** xdg_results;
/* Get the unix path of 'My Documents'. */
- pszPersonal = _SHGetFolderUnixPath(CSIDL_PERSONAL|CSIDL_FLAG_DONT_VERIFY);
+ pszPersonal = wine_get_unix_file_name( path );
if (!pszPersonal) return;
_SHGetXDGUserDirs(xdg_dirs, num, &xdg_results);
@@ -4284,7 +4284,7 @@ static void _SHCreateMyDocumentsSymbolicLink(const UINT * aidsMyStuff, const UIN
* PARAMS
* nFolder [I] CSIDL identifying the folder.
*/
-static void _SHCreateMyStuffSymbolicLink(int nFolder)
+static void _SHCreateMyStuffSymbolicLink(int nFolder, const WCHAR *path)
{
static const UINT aidsMyStuff[] = {
IDS_MYPICTURES, IDS_MYVIDEOS, IDS_MYMUSIC, IDS_DOWNLOADS, IDS_TEMPLATES
@@ -4328,8 +4328,7 @@ static void _SHCreateMyStuffSymbolicLink(int nFolder)
while (1)
{
- /* Get the current 'My Whatever' folder unix path. */
- pszMyStuff = _SHGetFolderUnixPath(acsidlMyStuff[i]|CSIDL_FLAG_DONT_VERIFY);
+ pszMyStuff = wine_get_unix_file_name( path );
if (!pszMyStuff) break;
while (1)
@@ -4375,7 +4374,7 @@ static void _SHCreateMyStuffSymbolicLink(int nFolder)
* Sets up a symbolic link for the 'Desktop' shell folder to point into the
* users home directory.
*/
-static void _SHCreateDesktopSymbolicLink(void)
+static void _SHCreateDesktopSymbolicLink( const WCHAR *path )
{
static const char * const xdg_dirs[] = { "DESKTOP" };
static const unsigned int num = ARRAY_SIZE(xdg_dirs);
@@ -4405,7 +4404,7 @@ static void _SHCreateDesktopSymbolicLink(void)
(_SHAppendToUnixPath(szDesktopTarget, DesktopW) &&
!stat(szDesktopTarget, &statFolder) && S_ISDIR(statFolder.st_mode)))
{
- pszDesktop = _SHGetFolderUnixPath(CSIDL_DESKTOPDIRECTORY|CSIDL_FLAG_DONT_VERIFY);
+ pszDesktop = wine_get_unix_file_name( path );
if (pszDesktop)
{
if (xdg_desktop_dir)
@@ -4428,7 +4427,7 @@ static void _SHCreateDesktopSymbolicLink(void)
* PARAMS
* nFolder [I] CSIDL identifying the folder.
*/
-static void _SHCreateSymbolicLink(int nFolder)
+static void _SHCreateSymbolicLink(int nFolder, const WCHAR *path)
{
static const UINT aidsMyStuff[] = {
IDS_MYPICTURES, IDS_MYVIDEOS, IDS_MYMUSIC, IDS_DOWNLOADS, IDS_TEMPLATES
@@ -4437,17 +4436,17 @@ static void _SHCreateSymbolicLink(int nFolder)
switch (folder) {
case CSIDL_PERSONAL:
- _SHCreateMyDocumentsSymbolicLink(aidsMyStuff, ARRAY_SIZE(aidsMyStuff));
+ _SHCreateMyDocumentsSymbolicLink(aidsMyStuff, ARRAY_SIZE(aidsMyStuff), path);
break;
case CSIDL_MYPICTURES:
case CSIDL_MYVIDEO:
case CSIDL_MYMUSIC:
case CSIDL_DOWNLOADS:
case CSIDL_TEMPLATES:
- _SHCreateMyStuffSymbolicLink(folder);
+ _SHCreateMyStuffSymbolicLink(folder, path);
break;
case CSIDL_DESKTOPDIRECTORY:
- _SHCreateDesktopSymbolicLink();
+ _SHCreateDesktopSymbolicLink( path );
break;
}
}
@@ -4642,7 +4641,7 @@ HRESULT WINAPI SHGetFolderPathAndSubDirW(
/* create symbolic links rather than directories for specific
* user shell folders */
- _SHCreateSymbolicLink(folder);
+ _SHCreateSymbolicLink(folder, szBuildPath);
/* create directory/directories */
ret = SHCreateDirectoryExW(hwndOwner, szBuildPath, NULL);
More information about the wine-cvs
mailing list