From b7a1528833cf1abbe33067570f4f0d4a09f80ebc Mon Sep 17 00:00:00 2001 From: Alexandru Lazar Date: Wed, 20 Apr 2016 21:21:33 +0300 Subject: [PATCH] getstyle: fix wcopy_file paths Some (presumably stale) calls to wcopy_file used what appears to be an incorrect destination which did not always exist. This patch forces assets to be copied under /, rather than . It works by first getting the "new" path (i.e. the one that will be inserted in the property list), which is relative to (and appears to be always in the root directory, too); it then copies the file to that path. This *may* have been the original intended behaviour, as the one it replaces clutters the path and leaks configuration data. In addition, the style file seems to store only the file's name, not the path relative to , even when the file is copied with its full hierarchy. Signed-off-by: Alexandru Lazar --- util/getstyle.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/util/getstyle.c b/util/getstyle.c index f0de4c49..c2c61c3e 100644 --- a/util/getstyle.c +++ b/util/getstyle.c @@ -171,7 +171,7 @@ static void findCopyFile(const char *dir, const char *file) (void)wrmdirhier(ThemePath); return; } - wcopy_file(dir, fullPath, fullPath); + wcopy_file(dir, fullPath, file); wfree(fullPath); } @@ -234,9 +234,10 @@ static void makeThemePack(WMPropList * style, const char *themeName) p = strrchr(WMGetFromPLString(file), '/'); if (p) { - wcopy_file(themeDir, WMGetFromPLString(file), WMGetFromPLString(file)); - newPath = wstrdup(p + 1); + + wcopy_file(themeDir, WMGetFromPLString(file), newPath); + WMDeleteFromPLArray(value, 1); WMInsertInPLArray(value, 1, WMCreatePLString(newPath)); free(newPath); @@ -253,9 +254,10 @@ static void makeThemePack(WMPropList * style, const char *themeName) p = strrchr(WMGetFromPLString(file), '/'); if (p) { - wcopy_file(themeDir, WMGetFromPLString(file), WMGetFromPLString(file)); - newPath = wstrdup(p + 1); + + wcopy_file(themeDir, WMGetFromPLString(file), newPath); + WMDeleteFromPLArray(value, 1); WMInsertInPLArray(value, 1, WMCreatePLString(newPath)); free(newPath); @@ -267,9 +269,10 @@ static void makeThemePack(WMPropList * style, const char *themeName) p = strrchr(WMGetFromPLString(file), '/'); if (p) { - wcopy_file(themeDir, WMGetFromPLString(file), WMGetFromPLString(file)); - newPath = wstrdup(p + 1); + + wcopy_file(themeDir, WMGetFromPLString(file), newPath); + WMDeleteFromPLArray(value, 2); WMInsertInPLArray(value, 2, WMCreatePLString(newPath)); free(newPath); -- 2.11.4.GIT