--- a/libpurple/theme-manager.c Tue Sep 27 08:13:06 2016 +0300 +++ b/libpurple/theme-manager.c Wed Sep 28 02:21:24 2016 +0300 @@ -147,7 +147,7 @@ purple_theme_manager_refresh(void) { gchar *path; - const gchar *xdg; + const gchar *const *xdg_dirs; gint i; GSList *loaders = NULL; @@ -159,27 +159,19 @@ purple_theme_manager_build_dir(loaders, path); g_free(path); - /* look for XDG_DATA_HOME. If we don't have it use ~/.local, and add it */ - if ((xdg = g_getenv("XDG_DATA_HOME")) != NULL) /* XXX: change to g_get_user_data_dir() ? */ - path = g_build_filename(xdg, "themes", NULL); - else - path = g_build_filename(purple_home_dir(), ".local", "themes", NULL); - + /* look for XDG_DATA_HOME */ + /* NOTE: will work on Windows, see g_get_user_data_dir() documentation */ + path = g_build_filename(g_get_user_data_dir(), "themes", NULL); purple_theme_manager_build_dir(loaders, path); g_free(path); /* now dig through XDG_DATA_DIRS and add those too */ - xdg = g_getenv("XDG_DATA_DIRS"); /* XXX: change to g_get_system_data_dir() ? */ - if (xdg) { - gchar **xdg_dirs = g_strsplit(xdg, G_SEARCHPATH_SEPARATOR_S, 0); - - for (i = 0; xdg_dirs[i]; i++) { - path = g_build_filename(xdg_dirs[i], "themes", NULL); - purple_theme_manager_build_dir(loaders, path); - g_free(path); - } - - g_strfreev(xdg_dirs); + /* NOTE: will work on Windows, see g_get_system_data_dirs() documentation */ + xdg_dirs = g_get_system_data_dirs(); + for (i = 0; xdg_dirs[i] != NULL; i++) { + path = g_build_filename(xdg_dirs[i], "themes", NULL); + purple_theme_manager_build_dir(loaders, path); + g_free(path); } g_slist_free(loaders);