[PATCH 2/5] shell32/tests: Fix win8 knownfolders relative and parsed paths

Andrew Eikum aeikum at codeweavers.com
Wed Mar 11 12:11:48 CDT 2015


---

This patch converts the relative paths to double-null-terminated
string lists.

 dlls/shell32/tests/shellpath.c | 196 ++++++++++++++++++++---------------------
 1 file changed, 95 insertions(+), 101 deletions(-)

diff --git a/dlls/shell32/tests/shellpath.c b/dlls/shell32/tests/shellpath.c
index 14cb34a..b727e1d 100644
--- a/dlls/shell32/tests/shellpath.c
+++ b/dlls/shell32/tests/shellpath.c
@@ -1002,7 +1002,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Common Start Menu",
                  KF_CATEGORY_COMMON,
                  FOLDERID_ProgramData,
-                 "Microsoft\\Windows\\Start Menu",
+                 "Microsoft\\Windows\\Start Menu\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1020,7 +1020,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Common Templates",
                  KF_CATEGORY_COMMON,
                  FOLDERID_ProgramData,
-                 "Microsoft\\Windows\\Templates",
+                 "Microsoft\\Windows\\Templates\0",
                  NULL,
                  0,
                  0),
@@ -1077,7 +1077,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Cookies",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_RoamingAppData,
-                 "Microsoft\\Windows\\Cookies",
+                 "Microsoft\\Windows\\Cookies\0Microsoft\\Windows\\INetCookies\0" /* win8 */,
                  NULL,
                  0,
                  0),
@@ -1095,7 +1095,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Device Metadata Store",
                  KF_CATEGORY_COMMON,
                  FOLDERID_ProgramData,
-                 "Microsoft\\Windows\\DeviceMetadataStore",
+                 "Microsoft\\Windows\\DeviceMetadataStore\0",
                  NULL,
                  0,
                  0),
@@ -1104,8 +1104,8 @@ static const struct knownFolderDef known_folders[] = {
                  "Personal",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "Documents",
-                 "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{FDD39AD0-238F-46AF-ADB4-6C85480369C7}\0\0",
+                 "Documents\0",
+                 "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{FDD39AD0-238F-46AF-ADB4-6C85480369C7}\0shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{A8CDFF1C-4878-43be-B5FD-F8091C1C60D0}\0\0", /* win8 */
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_ROAMABLE | KFDF_PRECREATE),
     KNOWN_FOLDER(FOLDERID_DocumentsLibrary,
@@ -1113,7 +1113,7 @@ static const struct knownFolderDef known_folders[] = {
                  "DocumentsLibrary",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Libraries,
-                 "Documents.library-ms",
+                 "Documents.library-ms\0",
                  "::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\\{7b0db17d-9cd2-4a93-9733-46cc89022e7c}\0\0",
                  0,
                  KFDF_PRECREATE | KFDF_STREAM),
@@ -1122,8 +1122,8 @@ static const struct knownFolderDef known_folders[] = {
                  "Downloads",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "Downloads",
-                 NULL,
+                 "Downloads\0",
+                 "(null)\0shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{374DE290-123F-4565-9164-39C4925E467B}\0\0", /* win8 */
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
     KNOWN_FOLDER(FOLDERID_Favorites,
@@ -1131,7 +1131,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Favorites",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "Favorites",
+                 "Favorites\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
@@ -1158,7 +1158,7 @@ static const struct knownFolderDef known_folders[] = {
                  "GameTasks",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_LocalAppData,
-                 "Microsoft\\Windows\\GameExplorer",
+                 "Microsoft\\Windows\\GameExplorer\0",
                  NULL,
                  0,
                  KFDF_LOCAL_REDIRECT_ONLY),
@@ -1167,7 +1167,7 @@ static const struct knownFolderDef known_folders[] = {
                  "History",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_LocalAppData,
-                 "Microsoft\\Windows\\History",
+                 "Microsoft\\Windows\\History\0",
                  NULL,
                  0,
                  KFDF_LOCAL_REDIRECT_ONLY),
@@ -1185,7 +1185,7 @@ static const struct knownFolderDef known_folders[] = {
                  "ImplicitAppShortcuts",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_UserPinned,
-                 "ImplicitAppShortcuts",
+                 "ImplicitAppShortcuts\0",
                  NULL,
                  0,
                  KFDF_PRECREATE),
@@ -1194,7 +1194,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Cache",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_LocalAppData,
-                 "Microsoft\\Windows\\Temporary Internet Files",
+                 "Microsoft\\Windows\\Temporary Internet Files\0Microsoft\\Windows\\INetCache\0\0", /* win8 */
                  NULL,
                  0,
                  KFDF_LOCAL_REDIRECT_ONLY),
@@ -1212,7 +1212,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Libraries",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_RoamingAppData,
-                 "Microsoft\\Windows\\Libraries",
+                 "Microsoft\\Windows\\Libraries\0",
                  NULL,
                  0,
                  KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
@@ -1221,7 +1221,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Links",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "Links",
+                 "Links\0",
                  "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{bfb9d5e0-c6a9-404c-b2b2-ae6db6af4968}\0\0",
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
@@ -1230,7 +1230,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Local AppData",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "AppData\\Local",
+                 "AppData\\Local\0",
                  NULL,
                  0,
                  KFDF_LOCAL_REDIRECT_ONLY | KFDF_PUBLISHEXPANDEDPATH),
@@ -1239,7 +1239,7 @@ static const struct knownFolderDef known_folders[] = {
                  "LocalAppDataLow",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "AppData\\LocalLow",
+                 "AppData\\LocalLow\0",
                  NULL,
                  FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,
                  KFDF_LOCAL_REDIRECT_ONLY | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
@@ -1257,8 +1257,8 @@ static const struct knownFolderDef known_folders[] = {
                  "My Music",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "Music",
-                 "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{4BD8D571-6D19-48D3-BE97-422220080E43}\0\0",
+                 "Music\0",
+                 "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{4BD8D571-6D19-48D3-BE97-422220080E43}\0shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{1CF1260C-4DD0-4EBB-811F-33C572699FDE}\0\0", /* win8 */
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_ROAMABLE | KFDF_PRECREATE),
     KNOWN_FOLDER(FOLDERID_MusicLibrary,
@@ -1266,7 +1266,7 @@ static const struct knownFolderDef known_folders[] = {
                  "MusicLibrary",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Libraries,
-                 "Music.library-ms",
+                 "Music.library-ms\0",
                  "::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\\{2112AB0A-C86A-4ffe-A368-0DE96E47012E}\0\0",
                  0,
                  KFDF_PRECREATE | KFDF_STREAM),
@@ -1275,7 +1275,7 @@ static const struct knownFolderDef known_folders[] = {
                  "NetHood",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_RoamingAppData,
-                 "Microsoft\\Windows\\Network Shortcuts",
+                 "Microsoft\\Windows\\Network Shortcuts\0",
                  NULL,
                  0,
                  0),
@@ -1293,7 +1293,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Original Images",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_LocalAppData,
-                 "Microsoft\\Windows Photo Gallery\\Original Images",
+                 "Microsoft\\Windows Photo Gallery\\Original Images\0",
                  NULL,
                  0,
                  0),
@@ -1302,7 +1302,7 @@ static const struct knownFolderDef known_folders[] = {
                  "PhotoAlbums",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Pictures,
-                 "Slide Shows",
+                 "Slide Shows\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  0),
@@ -1311,8 +1311,8 @@ static const struct knownFolderDef known_folders[] = {
                  "My Pictures",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "Pictures",
-                 "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{33E28130-4E1E-4676-835A-98395C3BC3BB}\0\0",
+                 "Pictures\0",
+                 "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{33E28130-4E1E-4676-835A-98395C3BC3BB}\0shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{3ADD1653-EB32-4CB0-BBD7-DFA0ABB5ACCA}\0\0", /* win8 */
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_ROAMABLE | KFDF_PRECREATE),
     KNOWN_FOLDER(FOLDERID_PicturesLibrary,
@@ -1320,7 +1320,7 @@ static const struct knownFolderDef known_folders[] = {
                  "PicturesLibrary",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Libraries,
-                 "Pictures.library-ms",
+                 "Pictures.library-ms\0",
                  "::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\\{A990AE9F-A03B-4e80-94BC-9912D7504104}\0\0",
                  0,
                  KFDF_PRECREATE | KFDF_STREAM),
@@ -1329,7 +1329,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Playlists",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Music,
-                 "Playlists",
+                 "Playlists\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  0),
@@ -1347,7 +1347,7 @@ static const struct knownFolderDef known_folders[] = {
                  "PrintHood",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_RoamingAppData,
-                 "Microsoft\\Windows\\Printer Shortcuts",
+                 "Microsoft\\Windows\\Printer Shortcuts\0",
                  NULL,
                  0,
                  0),
@@ -1429,7 +1429,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Programs",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_StartMenu,
-                 "Programs",
+                 "Programs\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1448,7 +1448,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Common Desktop",
                  KF_CATEGORY_COMMON,
                  FOLDERID_Public,
-                 "Desktop",
+                 "Desktop\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN,
                  KFDF_PRECREATE),
@@ -1457,7 +1457,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Common Documents",
                  KF_CATEGORY_COMMON,
                  FOLDERID_Public,
-                 "Documents",
+                 "Documents\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1466,7 +1466,7 @@ static const struct knownFolderDef known_folders[] = {
                  "CommonDownloads",
                  KF_CATEGORY_COMMON,
                  FOLDERID_Public,
-                 "Downloads",
+                 "Downloads\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1475,7 +1475,7 @@ static const struct knownFolderDef known_folders[] = {
                  "PublicGameTasks",
                  KF_CATEGORY_COMMON,
                  FOLDERID_ProgramData,
-                 "Microsoft\\Windows\\GameExplorer",
+                 "Microsoft\\Windows\\GameExplorer\0",
                  NULL,
                  0,
                  KFDF_LOCAL_REDIRECT_ONLY),
@@ -1484,7 +1484,7 @@ static const struct knownFolderDef known_folders[] = {
                  "PublicLibraries",
                  KF_CATEGORY_COMMON,
                  FOLDERID_Public,
-                 "Libraries",
+                 "Libraries\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN,
                  KFDF_PRECREATE),
@@ -1493,7 +1493,7 @@ static const struct knownFolderDef known_folders[] = {
                  "CommonMusic",
                  KF_CATEGORY_COMMON,
                  FOLDERID_Public,
-                 "Music",
+                 "Music\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1502,7 +1502,7 @@ static const struct knownFolderDef known_folders[] = {
                  "CommonPictures",
                  KF_CATEGORY_COMMON,
                  FOLDERID_Public,
-                 "Pictures",
+                 "Pictures\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1511,7 +1511,7 @@ static const struct knownFolderDef known_folders[] = {
                  "CommonRingtones",
                  KF_CATEGORY_COMMON,
                  FOLDERID_ProgramData,
-                 "Microsoft\\Windows\\Ringtones",
+                 "Microsoft\\Windows\\Ringtones\0",
                  NULL,
                  0,
                  KFDF_PRECREATE),
@@ -1520,7 +1520,7 @@ static const struct knownFolderDef known_folders[] = {
                  "CommonVideo",
                  KF_CATEGORY_COMMON,
                  FOLDERID_Public,
-                 "Videos",
+                 "Videos\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1529,7 +1529,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Quick Launch",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_RoamingAppData,
-                 "Microsoft\\Internet Explorer\\Quick Launch",
+                 "Microsoft\\Internet Explorer\\Quick Launch\0",
                  NULL,
                  0,
                  0),
@@ -1538,7 +1538,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Recent",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_RoamingAppData,
-                 "Microsoft\\Windows\\Recent",
+                 "Microsoft\\Windows\\Recent\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1547,7 +1547,7 @@ static const struct knownFolderDef known_folders[] = {
                  "RecordedTVLibrary",
                  KF_CATEGORY_COMMON,
                  FOLDERID_PublicLibraries,
-                 "RecordedTV.library-ms",
+                 "RecordedTV.library-ms\0",
                  NULL,
                  0,
                  KFDF_PRECREATE | KFDF_STREAM),
@@ -1574,7 +1574,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Ringtones",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_LocalAppData,
-                 "Microsoft\\Windows\\Ringtones",
+                 "Microsoft\\Windows\\Ringtones\0",
                  NULL,
                  0,
                  KFDF_PRECREATE),
@@ -1583,7 +1583,7 @@ static const struct knownFolderDef known_folders[] = {
                  "AppData",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "AppData\\Roaming",
+                 "AppData\\Roaming\0",
                  NULL,
                  0,
                  0),
@@ -1592,7 +1592,7 @@ static const struct knownFolderDef known_folders[] = {
                  "SampleMusic",
                  KF_CATEGORY_COMMON,
                  FOLDERID_PublicMusic,
-                 "Sample Music",
+                 "Sample Music\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1601,7 +1601,7 @@ static const struct knownFolderDef known_folders[] = {
                  "SamplePictures",
                  KF_CATEGORY_COMMON,
                  FOLDERID_PublicPictures,
-                 "Sample Pictures",
+                 "Sample Pictures\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1610,7 +1610,7 @@ static const struct knownFolderDef known_folders[] = {
                  "SamplePlaylists",
                  KF_CATEGORY_COMMON,
                  FOLDERID_PublicMusic,
-                 "Sample Playlists",
+                 "Sample Playlists\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  0),
@@ -1619,7 +1619,7 @@ static const struct knownFolderDef known_folders[] = {
                  "SampleVideos",
                  KF_CATEGORY_COMMON,
                  FOLDERID_PublicVideos,
-                 "Sample Videos",
+                 "Sample Videos\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1628,7 +1628,7 @@ static const struct knownFolderDef known_folders[] = {
                  "SavedGames",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "Saved Games",
+                 "Saved Games\0",
                  "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{4C5C32FF-BB9D-43b0-B5B4-2D72E54EAAA4}\0\0",
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_ROAMABLE | KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
@@ -1637,7 +1637,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Searches",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "Searches",
+                 "Searches\0",
                  "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{7d1d3a04-debb-4115-95cf-2f29da2920da}\0\0",
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE | KFDF_PUBLISHEXPANDEDPATH),
@@ -1673,7 +1673,7 @@ static const struct knownFolderDef known_folders[] = {
                  "SendTo",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_RoamingAppData,
-                 "Microsoft\\Windows\\SendTo",
+                 "Microsoft\\Windows\\SendTo\0",
                  NULL,
                  0,
                  0),
@@ -1682,7 +1682,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Default Gadgets",
                  KF_CATEGORY_COMMON,
                  FOLDERID_ProgramFiles,
-                 "Windows Sidebar\\Gadgets",
+                 "Windows Sidebar\\Gadgets\0",
                  NULL,
                  0,
                  0),
@@ -1691,7 +1691,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Gadgets",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_LocalAppData,
-                 "Microsoft\\Windows Sidebar\\Gadgets",
+                 "Microsoft\\Windows Sidebar\\Gadgets\0",
                  NULL,
                  0,
                  0),
@@ -1700,7 +1700,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Start Menu",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_RoamingAppData,
-                 "Microsoft\\Windows\\Start Menu",
+                 "Microsoft\\Windows\\Start Menu\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1709,7 +1709,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Startup",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Programs,
-                 "StartUp",
+                 "StartUp\0",
                  NULL,
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_PRECREATE),
@@ -1766,7 +1766,7 @@ static const struct knownFolderDef known_folders[] = {
                  "Templates",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_RoamingAppData,
-                 "Microsoft\\Windows\\Templates",
+                 "Microsoft\\Windows\\Templates\0",
                  NULL,
                  0,
                  0),
@@ -1775,7 +1775,7 @@ static const struct knownFolderDef known_folders[] = {
                  "User Pinned",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_QuickLaunch,
-                 "User Pinned",
+                 "User Pinned\0",
                  NULL,
                  FILE_ATTRIBUTE_HIDDEN,
                  KFDF_PRECREATE),
@@ -1793,7 +1793,7 @@ static const struct knownFolderDef known_folders[] = {
                  "UserProgramFiles",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_LocalAppData,
-                 "Programs",
+                 "Programs\0",
                  NULL,
                  0,
                  0),
@@ -1802,7 +1802,7 @@ static const struct knownFolderDef known_folders[] = {
                  "UserProgramFilesCommon",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_UserProgramFiles,
-                 "Common",
+                 "Common\0",
                  NULL,
                  0,
                  0),
@@ -1829,8 +1829,8 @@ static const struct knownFolderDef known_folders[] = {
                  "My Video",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Profile,
-                 "Videos",
-                 "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{18989B1D-99B5-455B-841C-AB7C74E4DDFC}\0\0",
+                 "Videos\0",
+                 "::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\\{18989B1D-99B5-455B-841C-AB7C74E4DDFC}\0shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{A0953C92-50DC-43BF-BE83-3742FED03C9C}\0\0", /* win8 */
                  FILE_ATTRIBUTE_READONLY,
                  KFDF_ROAMABLE | KFDF_PRECREATE),
     KNOWN_FOLDER(FOLDERID_VideosLibrary,
@@ -1838,7 +1838,7 @@ static const struct knownFolderDef known_folders[] = {
                  "VideosLibrary",
                  KF_CATEGORY_PERUSER,
                  FOLDERID_Libraries,
-                 "Videos.library-ms",
+                 "Videos.library-ms\0",
                  "::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\\{491E922F-5643-4af4-A7EB-4E7A138D8174}\0\0",
                  0,
                  KFDF_PRECREATE | KFDF_STREAM),
@@ -1892,6 +1892,36 @@ static const struct knownFolderDef known_folders[] = {
 #undef KNOWN_FOLDER
 BOOL known_folder_found[sizeof(known_folders)/sizeof(known_folders[0])-1];
 
+static BOOL is_in_strarray(const WCHAR *needle, const char *hay)
+{
+    WCHAR wstr[MAX_PATH];
+
+    if(!needle && !hay)
+        return TRUE;
+
+    while(hay && *hay)
+    {
+        DWORD ret;
+
+        if(strcmp(hay, "(null)") == 0 && !needle)
+            return TRUE;
+
+        ret = MultiByteToWideChar(CP_ACP, 0, hay, -1, wstr, sizeof(wstr)/sizeof(wstr[0]));
+        if(ret == 0)
+        {
+            ok(0, "Failed to convert string\n");
+            return FALSE;
+        }
+
+        if(lstrcmpW(wstr, needle) == 0)
+            return TRUE;
+
+        hay += strlen(hay) + 1;
+    }
+
+    return FALSE;
+}
+
 static void check_known_folder(IKnownFolderManager *mgr, KNOWNFOLDERID *folderId)
 {
     HRESULT hr;
@@ -1899,11 +1929,9 @@ static void check_known_folder(IKnownFolderManager *mgr, KNOWNFOLDERID *folderId
     int csidl, expectedCsidl, ret;
     KNOWNFOLDER_DEFINITION kfd;
     IKnownFolder *folder;
-    WCHAR sName[1024], sRelativePath[MAX_PATH], sParsingName[MAX_PATH];
-    BOOL validPath;
+    WCHAR sName[1024];
     BOOL *current_known_folder_found = &known_folder_found[0];
     BOOL found = FALSE;
-    const char *srcParsingName;
 
     while(known_folder->folderId != NULL)
     {
@@ -1946,43 +1974,9 @@ static void check_known_folder(IKnownFolderManager *mgr, KNOWNFOLDERID *folderId
                                                       "invalid known folder parent for %s: %s expected, but %s retrieved\n",
                                                       known_folder->sFolderId, known_folder->sParent, wine_dbgstr_guid(&kfd.fidParent));
 
-                    if(!known_folder->sRelativePath)
-                        validPath = (kfd.pszRelativePath==NULL);
-                    else
-                    {
-                        ret = MultiByteToWideChar(CP_ACP, 0, known_folder->sRelativePath, -1, sRelativePath, sizeof(sRelativePath)/sizeof(sRelativePath[0]));
-                        ok_(__FILE__, known_folder->line)(ret != 0, "cannot convert known folder path \"%s\" to wide characters\n", known_folder->sRelativePath);
+                    ok_(__FILE__, known_folder->line)(is_in_strarray(kfd.pszRelativePath, known_folder->sRelativePath), "invalid known folder relative path returned for %s: %s expected, but %s retrieved\n", known_folder->sFolderId, known_folder->sRelativePath, wine_dbgstr_w(kfd.pszRelativePath));
 
-                        validPath = (lstrcmpW(kfd.pszRelativePath, sRelativePath)==0);
-                    }
-
-                    ok_(__FILE__, known_folder->line)(validPath, "invalid known folder relative path returned for %s: %s expected, but %s retrieved\n", known_folder->sFolderId, known_folder->sRelativePath, wine_dbgstr_w(kfd.pszRelativePath));
-
-                    /* to check parsing name, we need to iterate list */
-                    srcParsingName = known_folder->sParsingName;
-
-                    /* if we expect NULL, then we don't even check the list */
-                    validPath = (srcParsingName==NULL) && (kfd.pszParsingName==NULL);
-
-                    if(srcParsingName)
-                        while(*srcParsingName && !validPath)
-                        {
-                            /* when NULL is only one of possible value, we mark path as valid */
-                            validPath = (strcmp(srcParsingName, "(null)")==0) && (kfd.pszParsingName==NULL);
-
-                            /* in the other case, we compare string from list with retrieved value */
-                            if(!validPath)
-                            {
-                                ret = MultiByteToWideChar(CP_ACP, 0, srcParsingName, -1, sParsingName, sizeof(sParsingName)/sizeof(sParsingName[0]));
-                                ok_(__FILE__, known_folder->line)(ret != 0, "cannot convert known folder path \"%s\" to wide characters\n", srcParsingName);
-
-                                validPath = (lstrcmpW(kfd.pszParsingName, sParsingName)==0);
-                            }
-
-                            srcParsingName += strlen(srcParsingName)+1;
-                        }
-
-                    ok_(__FILE__, known_folder->line)(validPath, "invalid known folder parsing name returned for %s: %s retrieved\n", known_folder->sFolderId, wine_dbgstr_w(kfd.pszParsingName));
+                    ok_(__FILE__, known_folder->line)(is_in_strarray(kfd.pszParsingName, known_folder->sParsingName), "invalid known folder parsing name returned for %s: %s retrieved\n", known_folder->sFolderId, wine_dbgstr_w(kfd.pszParsingName));
 
                     ok_(__FILE__, known_folder->line)(known_folder->attributes == kfd.dwAttributes, "invalid known folder attributes for %s: 0x%08x expected, but 0x%08x retrieved\n", known_folder->sFolderId, known_folder->attributes, kfd.dwAttributes);
 
-- 
2.3.2





More information about the wine-patches mailing list