]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Load all config from the same directory
authorRobert Ancell <robert.ancell@canonical.com>
Wed, 20 Jul 2011 23:16:31 +0000 (09:16 +1000)
committerRobert Ancell <robert.ancell@canonical.com>
Wed, 20 Jul 2011 23:16:31 +0000 (09:16 +1000)
src/Makefile.am
src/display-manager.c
src/lightdm.c
src/seat-xlocal.c

index d5c8ac57bfca1a0f54932b868acc0b72cb50938b..6ac0202a47a40be35547f353b8df5bab964c31ba 100644 (file)
@@ -69,9 +69,7 @@ BUILT_SOURCES = \
 lightdm_CFLAGS = \
        $(LIGHTDM_CFLAGS) \
        $(WARN_CFLAGS) \
-       -DLIGHTDM_BINARY=\"lightdm\" \
-       -DCONFIG_FILE=\"$(sysconfdir)/lightdm/lightdm.conf\" \
-       -DKEY_FILE=\"$(sysconfdir)/lightdm/keys.conf\" \
+       -DCONFIG_DIR=\"$(sysconfdir)/lightdm\" \
        -DLOG_DIR=\"$(localstatedir)/log/lightdm\" \
        -DRUN_DIR=\"$(localstatedir)/run/lightdm\" \
        -DCACHE_DIR=\"$(localstatedir)/cache/lightdm\" \
index f3a4548359fc2956813eed2000e9ae04f4c28e91..b9151a913b43c0b662609a52064d0c3f3cae498c 100644 (file)
@@ -158,11 +158,16 @@ display_manager_start (DisplayManager *manager)
         key_name = config_get_string (config_get_instance (), "XDMCPServer", "key");
         if (key_name)
         {
+            gchar *dir, *path;
             GKeyFile *keys;
             GError *error = NULL;
 
+            dir = config_get_string (config_get_instance (), "LightDM", "config-directory");
+            path = g_build_filename (dir, "keys.conf", NULL);
+            g_free (dir);
+
             keys = g_key_file_new ();
-            if (g_key_file_load_from_file (keys, KEY_FILE, G_KEY_FILE_NONE, &error))
+            if (g_key_file_load_from_file (keys, path, G_KEY_FILE_NONE, &error))
             {
                 if (g_key_file_has_key (keys, "keyring", key_name, NULL))
                     key = g_key_file_get_string (keys, "keyring", key_name, NULL);
@@ -172,6 +177,7 @@ display_manager_start (DisplayManager *manager)
             else
                 g_debug ("Error getting key %s", error->message);
             g_clear_error (&error);
+            g_free (path);
             g_key_file_free (keys);
         }
         if (key)
index 928207d98cc3b8bf52487ff36dbbdaf2e88abfaf..fca70e16cf7896b7c764ab59a606cded54c77ad5 100644 (file)
@@ -628,6 +628,7 @@ main (int argc, char **argv)
     gchar *xgreeters_dir = NULL;
     gchar *greeter_session = NULL;
     gchar *user_session = NULL;
+    gchar *config_dir;
     gchar *log_dir = NULL;
     gchar *run_dir = NULL;
     gchar *cache_dir = NULL;
@@ -707,10 +708,21 @@ main (int argc, char **argv)
         return EXIT_FAILURE;
     }
     g_clear_error (&error);
+
     if (config_path)
+    {
+        config_dir = g_path_get_basename (config_path);
+        config_dir = path_make_absolute (config_dir);
         explicit_config = TRUE;
+    }
     else
-        config_path = g_strdup (CONFIG_FILE);
+    {
+        config_dir = g_strdup (CONFIG_DIR);
+        config_path = g_build_filename (config_dir, "lightdm.conf", NULL);
+    }
+    config_set_string (config_get_instance (), "LightDM", "config-directory", config_dir);
+    g_free (config_dir);
+
     if (test_mode)
     {
         no_root = TRUE;
@@ -748,7 +760,7 @@ main (int argc, char **argv)
     if (show_version)
     {
         /* NOTE: Is not translated so can be easily parsed */
-        g_printerr ("%s %s\n", LIGHTDM_BINARY, VERSION);
+        g_printerr ("lightdm %s\n", VERSION);
         return EXIT_SUCCESS;
     }
 
@@ -852,6 +864,9 @@ main (int argc, char **argv)
 
     g_debug ("Starting Light Display Manager %s, UID=%i PID=%i", VERSION, getuid (), getpid ());
 
+    g_debug ("Loaded configuration from %s", config_path);
+    g_free (config_path);
+
     g_bus_own_name (getuid () == 0 ? G_BUS_TYPE_SYSTEM : G_BUS_TYPE_SESSION,
                     LDM_BUS_NAME,
                     G_BUS_NAME_OWNER_FLAGS_NONE,
@@ -872,8 +887,6 @@ main (int argc, char **argv)
     if (getenv ("DISPLAY"))
         g_debug ("Using Xephyr for X servers");
 
-    g_debug ("Loaded configuration from %s", config_path);
-
     display_manager = display_manager_new ();
     g_signal_connect (display_manager, "stopped", G_CALLBACK (display_manager_stopped_cb), NULL);
 
index a1e727639d710d766830536581dfe224f06207e4..9ca8ecbd3ed4eb34683c84d180327815f12f529d 100644 (file)
@@ -89,11 +89,16 @@ seat_xlocal_add_display (Seat *seat)
         key_name = config_get_string (config_get_instance (), "SeatDefaults", "xdmcp-key");
     if (key_name)
     {
+        gchar *dir, *path;
         GKeyFile *keys;
         GError *error = NULL;
 
+        dir = config_get_string (config_get_instance (), "LightDM", "config-directory");
+        path = g_build_filename (dir, "keys.conf", NULL);
+        g_free (dir);
+
         keys = g_key_file_new ();
-        if (g_key_file_load_from_file (keys, KEY_FILE, G_KEY_FILE_NONE, &error))
+        if (g_key_file_load_from_file (keys, path, G_KEY_FILE_NONE, &error))
         {
             if (g_key_file_has_key (keys, "keyring", key_name, NULL))
                 key = g_key_file_get_string (keys, "keyring", key_name, NULL);
@@ -102,6 +107,7 @@ seat_xlocal_add_display (Seat *seat)
         }
         else
             g_debug ("Error getting key %s", error->message);
+        g_free (path);
         g_clear_error (&error);
         g_key_file_free (keys);
     }