libpurple/theme-manager.c

changeset 38873
58473fc5ee73
parent 38870
575e41bfc15e
child 39547
5c68828a566a
--- 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);

mercurial