From 669e23633d506470f36383ff2901a2aea660187e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Fri, 18 Sep 2015 17:16:22 +0200 Subject: [PATCH] Set XDG_DATA_DIRS with default paths if it is not set --- gtk/main.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/gtk/main.c b/gtk/main.c index 39af6802e..5584933a0 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -2064,20 +2064,22 @@ static void sigint_handler(int signum){ static void populate_xdg_data_dirs_envvar(void) { #ifndef WIN32 int i; - const gchar *value = g_getenv("XDG_DATA_DIRS"); - if(value && strlen(value)) { - gchar **paths = g_strsplit(value, ":", -1); - for(i=0; paths[i] && strcmp(paths[i], PACKAGE_DATA_DIR) != 0; i++); - if(paths[i] == NULL) { - gchar *new_value = g_strdup_printf("%s:%s", value, PACKAGE_DATA_DIR); - g_setenv("XDG_DATA_DIRS", new_value, TRUE); - g_free(new_value); - } - g_strfreev(paths); + gchar *value; + gchar **paths; + + if(g_getenv("XDG_DATA_DIRS") == NULL) { + value = g_strdup("/usr/share:/usr/local/share:/opt/local/share"); } else { - g_warning("The XDG_DATA_DIRS environment variable is not set. If you experience missing icons, " - "consider setting it"); + value = g_strdup(g_getenv("XDG_DATA_DIRS")); } + paths = g_strsplit(value, ":", -1); + for(i=0; paths[i] && strcmp(paths[i], PACKAGE_DATA_DIR) != 0; i++); + if(paths[i] == NULL) { + gchar *new_value = g_strdup_printf("%s:%s", value, PACKAGE_DATA_DIR); + g_setenv("XDG_DATA_DIRS", new_value, TRUE); + g_free(new_value); + } + g_strfreev(paths); #endif }