summaryrefslogtreecommitdiffstats
path: root/src/ck-session.c
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2007-10-10 13:39:15 -0400
committerWilliam Jon McCann <mccann@jhu.edu>2007-10-10 13:39:15 -0400
commitb2be103bd606291319dc312f07d1f3fcbfdf634c (patch)
tree54e295f2e273b6d2a6451ac5eec537d762d1d814 /src/ck-session.c
parentbd43c78b3ab2ec7f85b17cca46d4b46f8671cd29 (diff)
maintain a file with the dump of the local database
This feature is useful for programs wanting to read the database without going through the D-Bus interface. This is sometimes desirable when both performance and runtime dependencies are important. For security reasons the file is only readable for the super user.
Diffstat (limited to 'src/ck-session.c')
-rw-r--r--src/ck-session.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/ck-session.c b/src/ck-session.c
index 6f16720..a700786 100644
--- a/src/ck-session.c
+++ b/src/ck-session.c
@@ -1245,3 +1245,41 @@ ck_session_run_programs (CkSession *session,
g_free (extra_env[n]);
}
}
+
+void
+ck_session_dump (CkSession *session,
+ GKeyFile *key_file)
+{
+ char *s;
+ char *group_name;
+
+ group_name = g_strdup_printf ("Session %s", session->priv->id);
+ g_key_file_set_integer (key_file, group_name, "uid", session->priv->uid);
+ g_key_file_set_string (key_file, group_name, "seat", session->priv->seat_id);
+ g_key_file_set_string (key_file, group_name, "cookie", session->priv->cookie);
+ if (session->priv->session_type != NULL) {
+ g_key_file_set_string (key_file, group_name, "type", session->priv->session_type);
+ }
+ if (session->priv->display_device != NULL && strlen (session->priv->display_device) > 0) {
+ g_key_file_set_string (key_file, group_name, "display_device", session->priv->display_device);
+ }
+ if (session->priv->x11_display_device != NULL && strlen (session->priv->x11_display_device) > 0) {
+ g_key_file_set_string (key_file, group_name, "x11_display_device", session->priv->x11_display_device);
+ }
+ if (session->priv->x11_display != NULL && strlen (session->priv->x11_display) > 0) {
+ g_key_file_set_string (key_file, group_name, "x11_display", session->priv->x11_display);
+ }
+ if (session->priv->remote_host_name != NULL && strlen (session->priv->remote_host_name) > 0) {
+ g_key_file_set_string (key_file, group_name, "remote_host_name", session->priv->remote_host_name);
+ }
+ g_key_file_set_string (key_file, group_name, "remote_host_name", session->priv->remote_host_name);
+ g_key_file_set_boolean (key_file, group_name, "is_active", session->priv->active);
+ g_key_file_set_boolean (key_file, group_name, "is_local", session->priv->is_local);
+
+ s = g_time_val_to_iso8601 (&(session->priv->creation_time));
+ g_key_file_set_string (key_file, group_name, "creation_time", s);
+ g_free (s);
+
+ g_free (group_name);
+}
+