summaryrefslogtreecommitdiff
path: root/daemon/gdm-session-settings.c
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2008-02-21 04:20:26 +0000
committerRay Strode <halfline@src.gnome.org>2008-02-21 04:20:26 +0000
commitdc017aef8d3bb2070773b203b9698deba8f452a1 (patch)
tree6f28302b70904bd78a5ec7e6e7d2be995a101fa0 /daemon/gdm-session-settings.c
parent6d551cacd0bf1ee8f73b3b4089e0cea6a7533935 (diff)
downloadgdm-dc017aef8d3bb2070773b203b9698deba8f452a1.tar.gz
Don't fail if optional fields are missing in ~/.dmrc
2008-02-20 Ray Strode <rstrode@redhat.com> * daemon/gdm-session-settings.c (gdm_session_settings_load): Don't fail if optional fields are missing in ~/.dmrc svn path=/trunk/; revision=5831
Diffstat (limited to 'daemon/gdm-session-settings.c')
-rw-r--r--daemon/gdm-session-settings.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/daemon/gdm-session-settings.c b/daemon/gdm-session-settings.c
index 01ca5c46..17c0231d 100644
--- a/daemon/gdm-session-settings.c
+++ b/daemon/gdm-session-settings.c
@@ -244,7 +244,6 @@ gdm_session_settings_load (GdmSessionSettings *settings,
g_return_val_if_fail (settings != NULL, FALSE);
g_return_val_if_fail (home_directory != NULL, FALSE);
g_return_val_if_fail (!gdm_session_settings_is_loaded (settings), FALSE);
-
filename = g_build_filename (home_directory, ".dmrc", NULL);
is_loaded = FALSE;
@@ -260,7 +259,13 @@ gdm_session_settings_load (GdmSessionSettings *settings,
session_name = g_key_file_get_string (key_file, "Desktop", "Session",
&load_error);
- if (session_name == NULL) {
+ if (session_name != NULL) {
+ gdm_session_settings_set_session_name (settings, session_name);
+ g_free (session_name);
+ } else if (g_error_matches (load_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) {
+ g_error_free (load_error);
+ load_error = NULL;
+ } else {
g_propagate_error (error, load_error);
goto out;
}
@@ -268,14 +273,17 @@ gdm_session_settings_load (GdmSessionSettings *settings,
language_name = g_key_file_get_string (key_file, "Desktop", "Language",
&load_error);
- if (language_name == NULL) {
+ if (language_name != NULL) {
+ gdm_session_settings_set_language_name (settings, language_name);
+ g_free (language_name);
+ } else if (g_error_matches (load_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) {
+ g_error_free (load_error);
+ load_error = NULL;
+ } else {
g_propagate_error (error, load_error);
goto out;
}
- gdm_session_settings_set_language_name (settings, language_name);
- gdm_session_settings_set_session_name (settings, session_name);
-
is_loaded = TRUE;
out:
g_key_file_free (key_file);