diff options
author | Ray Strode <rstrode@redhat.com> | 2008-02-21 04:20:26 +0000 |
---|---|---|
committer | Ray Strode <halfline@src.gnome.org> | 2008-02-21 04:20:26 +0000 |
commit | dc017aef8d3bb2070773b203b9698deba8f452a1 (patch) | |
tree | 6f28302b70904bd78a5ec7e6e7d2be995a101fa0 /daemon/gdm-session-settings.c | |
parent | 6d551cacd0bf1ee8f73b3b4089e0cea6a7533935 (diff) | |
download | gdm-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.c | 20 |
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); |