diff options
author | William Jon McCann <jmccann@redhat.com> | 2008-03-17 23:49:00 +0000 |
---|---|---|
committer | William Jon McCann <mccann@src.gnome.org> | 2008-03-17 23:49:00 +0000 |
commit | ca1214f327095f3c080dcf79bee9e4b506d51479 (patch) | |
tree | 552acda2c50baf4d51f8f8ea88c46eed27000fdd /common/gdm-settings-desktop-backend.c | |
parent | 227edb3aa624b302e69eeb5c33c43c18d450292c (diff) | |
download | gdm-ca1214f327095f3c080dcf79bee9e4b506d51479.tar.gz |
Move wait_on_child to common. Always check return value of gdm_signal_pid.
2008-03-17 William Jon McCann <jmccann@redhat.com>
* common/gdm-common.c: (gdm_wait_on_pid), (gdm_signal_pid),
(_read_bytes), (gdm_generate_random_bytes):
* common/gdm-common.h:
* common/gdm-settings-desktop-backend.c: (parse_key_string),
(gdm_settings_desktop_backend_get_value),
(gdm_settings_desktop_backend_finalize):
* common/gdm-settings-utils.c: (gdm_settings_parse_schemas):
* daemon/gdm-server.c: (server_died), (gdm_server_stop):
* daemon/gdm-session-worker-job.c: (session_worker_job_died),
(gdm_session_worker_job_stop):
* daemon/gdm-slave-proxy.c: (child_watch), (kill_slave),
(gdm_slave_proxy_stop), (gdm_slave_proxy_dispose),
(gdm_slave_proxy_finalize):
* daemon/gdm-welcome-session.c: (stop_dbus_daemon),
(welcome_session_died), (gdm_welcome_session_stop):
* daemon/main.c: (main):
* gui/simple-greeter/gdm-remote-login-window.c: (xserver_died):
* gui/simple-greeter/gdm-session-client.c: (client_died),
(gdm_session_client_stop):
Move wait_on_child to common. Always check return value of
gdm_signal_pid. Fix a number of small leaks. Make sure
to signal the slaves when exiting.
svn path=/trunk/; revision=6036
Diffstat (limited to 'common/gdm-settings-desktop-backend.c')
-rw-r--r-- | common/gdm-settings-desktop-backend.c | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/common/gdm-settings-desktop-backend.c b/common/gdm-settings-desktop-backend.c index 18416fb9..e380f27b 100644 --- a/common/gdm-settings-desktop-backend.c +++ b/common/gdm-settings-desktop-backend.c @@ -77,6 +77,19 @@ parse_key_string (const char *keystring, g = k = v = l = NULL; split1 = split2 = NULL; + if (group != NULL) { + *group = g; + } + if (key != NULL) { + *key = k; + } + if (locale != NULL) { + *locale = l; + } + if (value != NULL) { + *value = v; + } + /*g_debug ("Attempting to parse key string: %s", keystring);*/ split1 = g_strsplit (keystring, "/", 2); @@ -108,7 +121,7 @@ parse_key_string (const char *keystring, } ret = TRUE; - out: + if (group != NULL) { *group = g_strdup (g); } @@ -121,6 +134,7 @@ parse_key_string (const char *keystring, if (value != NULL) { *value = g_strdup (v); } + out: g_strfreev (split1); g_strfreev (split2); @@ -134,23 +148,27 @@ gdm_settings_desktop_backend_get_value (GdmSettingsBackend *backend, char **value, GError **error) { - GError *local_error; - char *val; - char *g; - char *k; - char *l; + GError *local_error; + char *val; + char *g; + char *k; + char *l; + gboolean ret; g_return_val_if_fail (GDM_IS_SETTINGS_BACKEND (backend), FALSE); g_return_val_if_fail (key != NULL, FALSE); + ret = FALSE; + if (value != NULL) { *value = NULL; } + val = g = k = l = NULL; /*GDM_SETTINGS_BACKEND_CLASS (gdm_settings_desktop_backend_parent_class)->get_value (display);*/ if (! parse_key_string (key, &g, &k, &l, NULL)) { g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found"); - return FALSE; + goto out; } /*g_debug ("Getting key: %s %s %s", g, k, l);*/ @@ -162,16 +180,20 @@ gdm_settings_desktop_backend_get_value (GdmSettingsBackend *backend, if (local_error != NULL) { g_error_free (local_error); g_set_error (error, GDM_SETTINGS_BACKEND_ERROR, GDM_SETTINGS_BACKEND_ERROR_KEY_NOT_FOUND, "Key not found"); - return FALSE; + goto out; } if (value != NULL) { *value = g_strdup (val); } - + ret = TRUE; + out: g_free (val); + g_free (g); + g_free (k); + g_free (l); - return TRUE; + return ret; } static void @@ -331,6 +353,7 @@ gdm_settings_desktop_backend_finalize (GObject *object) save_settings (backend); g_key_file_free (backend->priv->key_file); + g_free (backend->priv->filename); G_OBJECT_CLASS (gdm_settings_desktop_backend_parent_class)->finalize (object); } |