]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Scan XDG_DATA_DIRS and XDG_CONFIG_DIRS for config values too
authorMichael Terry <michael.terry@canonical.com>
Tue, 18 Mar 2014 03:06:36 +0000 (23:06 -0400)
committerMichael Terry <michael.terry@canonical.com>
Tue, 18 Mar 2014 03:06:36 +0000 (23:06 -0400)
common/Makefile.am
common/configuration.c
tests/src/libsystem.c
tests/src/test-runner.c

index b501f221c5a2e2ab7cf9604c2f6fb5c61d692558..4c7603c5f89fdd96e2d2ff6b8cc64b4ef0fc5690 100644 (file)
@@ -15,8 +15,7 @@ libcommon_la_SOURCES = \
 libcommon_la_CFLAGS = \
        $(WARN_CFLAGS) \
        $(GLIB_CFLAGS) \
-       -DCONFIG_DIR=\"$(sysconfdir)/lightdm\" \
-       -DSYSTEM_CONFIG_DIR=\"$(pkgdatadir)/lightdm.conf.d\"
+       -DCONFIG_DIR=\"$(sysconfdir)/lightdm\"
 
 libcommon_la_LIBADD = \
        $(GLIB_LDFLAGS)
index 015d2fc44d770132365f6fedfb9e26404a312fc6..524b33f4ebccd931f715fa50c12cc4cb3fb6867a 100644 (file)
@@ -140,6 +140,21 @@ load_config_directory (const gchar *path, GList **messages)
     g_list_free_full (files, g_free);
 }
 
+static void
+load_config_directories (const gchar * const *dirs, GList **messages)
+{
+    gint i;
+
+    for (i = 0; dirs[i]; i++)
+    {
+        gchar *full_dir = g_build_filename (dirs[i], "lightdm", "lightdm.conf.d", NULL);
+            if (messages)
+                *messages = g_list_append (*messages, g_strdup_printf ("Loading configuration dirs from %s", full_dir));
+        load_config_directory (full_dir, messages);
+        g_free (full_dir);
+    }
+}
+
 gboolean
 config_load_from_standard_locations (Configuration *config, const gchar *config_path, GList **messages)
 {
@@ -148,6 +163,9 @@ config_load_from_standard_locations (Configuration *config, const gchar *config_
     gboolean success = TRUE;
     GError *error = NULL;
 
+    load_config_directories (g_get_system_data_dirs (), messages);
+    load_config_directories (g_get_system_config_dirs (), messages);
+
     if (config_path)
     {
         config_dir = g_path_get_basename (config_path);
@@ -163,7 +181,6 @@ config_load_from_standard_locations (Configuration *config, const gchar *config_
     config_set_string (config, "LightDM", "config-directory", config_dir);
     g_free (config_dir);
 
-    load_config_directory (SYSTEM_CONFIG_DIR, messages);
     if (config_d_dir)
         load_config_directory (config_d_dir, messages);
     g_free (config_d_dir);
index 1164b4813598fb9f31cc16e7ffea2d2373579546..95af3884a77fe950d4cfef38662debcac67314ad 100644 (file)
@@ -195,6 +195,12 @@ redirect_path (const gchar *path)
     if (g_str_has_prefix (path, "/tmp"))
         return g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "tmp", path + strlen ("/tmp"), NULL);
 
+    if (g_str_has_prefix (path, "/etc/xdg"))
+        return g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "etc", "xdg", path + strlen ("/etc/xdg"), NULL);
+
+    if (g_str_has_prefix (path, "/usr/share/lightdm"))
+        return g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "usr", "share", "lightdm", path + strlen ("/usr/share/lightdm"), NULL);
+
     return g_strdup (path);
 }
 
index 30f2fef7677c224c3737fc0e863f2c56da0c18c4..b6e8cb244b6d44509eb30bb006608a9f4c68dfc1 100644 (file)
@@ -1995,6 +1995,10 @@ main (int argc, char **argv)
     /* Don't contact our X server */
     g_unsetenv ("DISPLAY");
 
+    /* Don't let XDG vars from system affect tests */
+    g_unsetenv ("XDG_CONFIG_DIRS");
+    g_unsetenv ("XDG_DATA_DIRS");
+
     /* Override system calls */
     ld_preload = g_build_filename (BUILDDIR, "tests", "src", ".libs", "libsystem.so", NULL);
     g_setenv ("LD_PRELOAD", ld_preload, TRUE);
@@ -2108,11 +2112,11 @@ main (int argc, char **argv)
     {
         gchar **files;
 
-        g_mkdir_with_parents (g_strdup_printf ("%s/etc/lightdm/lightdm.conf.d", temp_dir), 0755);
+        g_mkdir_with_parents (g_strdup_printf ("%s/etc/xdg/lightdm/lightdm.conf.d", temp_dir), 0755);
 
         files = g_strsplit (additional_config, " ", -1);
         for (i = 0; files[i]; i++)
-            if (system (g_strdup_printf ("cp %s/tests/scripts/%s %s/etc/lightdm/lightdm.conf.d", SRCDIR, files[i], temp_dir)))
+            if (system (g_strdup_printf ("cp %s/tests/scripts/%s %s/etc/xdg/lightdm/lightdm.conf.d", SRCDIR, files[i], temp_dir)))
                 perror ("Failed to copy configuration");
         g_strfreev (files);
     }