[PATCH v2 8/9] shell32: Add a function to create one specific symbolic link at a time for user dirs.
Olivier F. R. Dierick
o.dierick at piezo-forte.be
Tue Feb 18 17:16:43 CST 2020
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick at piezo-forte.be>
---
dlls/shell32/shellpath.c | 46 +++++++++++++++++++++++++++++++++++-----------
1 file changed, 35 insertions(+), 11 deletions(-)
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index 2012ecb..d32529b 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -4327,6 +4327,39 @@ static void _SHCreateDesktopSymbolicLink(void)
}
/******************************************************************************
+ * _SHCreateSymbolicLink [Internal]
+ *
+ * Sets up a symbolic link for one of the special shell folders to point into
+ * the users home directory.
+ *
+ * PARAMS
+ * nFolder [I] CSIDL identifying the folder.
+ */
+static void _SHCreateSymbolicLink(int nFolder)
+{
+ static const UINT aidsMyStuff[] = {
+ IDS_MYPICTURES, IDS_MYVIDEOS, IDS_MYMUSIC, IDS_DOWNLOADS, IDS_TEMPLATES
+ };
+ DWORD folder = nFolder & CSIDL_FOLDER_MASK;
+
+ switch (folder) {
+ case CSIDL_PERSONAL:
+ _SHCreateMyDocumentsSymbolicLink(aidsMyStuff, ARRAY_SIZE(aidsMyStuff));
+ break;
+ case CSIDL_MYPICTURES:
+ case CSIDL_MYVIDEO:
+ case CSIDL_MYMUSIC:
+ case CSIDL_DOWNLOADS:
+ case CSIDL_TEMPLATES:
+ _SHCreateMyStuffSymbolicLink(folder);
+ break;
+ case CSIDL_DESKTOPDIRECTORY:
+ _SHCreateDesktopSymbolicLink();
+ break;
+ }
+}
+
+/******************************************************************************
* _SHCreateSymbolicLinks [Internal]
*
* Sets up symbol links for various shell folders to point into the user's home
@@ -4351,22 +4384,13 @@ static void _SHCreateDesktopSymbolicLink(void)
*/
static void _SHCreateSymbolicLinks(void)
{
- static const UINT aidsMyStuff[] = {
- IDS_MYPICTURES, IDS_MYVIDEOS, IDS_MYMUSIC, IDS_DOWNLOADS, IDS_TEMPLATES
- };
static const int acsidlMyStuff[] = {
- CSIDL_MYPICTURES, CSIDL_MYVIDEO, CSIDL_MYMUSIC, CSIDL_DOWNLOADS, CSIDL_TEMPLATES
+ CSIDL_MYPICTURES, CSIDL_MYVIDEO, CSIDL_MYMUSIC, CSIDL_DOWNLOADS, CSIDL_TEMPLATES, CSIDL_PERSONAL, CSIDL_DESKTOPDIRECTORY
};
UINT i;
- _SHCreateMyDocumentsSymbolicLink(aidsMyStuff, ARRAY_SIZE(aidsMyStuff));
-
- /* Create symbolic links for 'My Pictures', 'My Videos', 'My Music' etc. */
for (i=0; i < ARRAY_SIZE(acsidlMyStuff); i++)
- _SHCreateMyStuffSymbolicLink(acsidlMyStuff[i]);
-
- /* Last but not least, the Desktop folder */
- _SHCreateDesktopSymbolicLink();
+ _SHCreateSymbolicLink(acsidlMyStuff[i]);
}
/******************************************************************************
--
2.1.4
More information about the wine-devel
mailing list