summaryrefslogtreecommitdiff
path: root/common/gdm-settings-desktop-backend.c
diff options
context:
space:
mode:
authorWilliam Jon McCann <jmccann@redhat.com>2008-03-17 23:49:00 +0000
committerWilliam Jon McCann <mccann@src.gnome.org>2008-03-17 23:49:00 +0000
commitca1214f327095f3c080dcf79bee9e4b506d51479 (patch)
tree552acda2c50baf4d51f8f8ea88c46eed27000fdd /common/gdm-settings-desktop-backend.c
parent227edb3aa624b302e69eeb5c33c43c18d450292c (diff)
downloadgdm-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.c43
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);
}