summaryrefslogtreecommitdiff
path: root/xfce4-session/xfsm-compat-gnome.c
diff options
context:
space:
mode:
authorJérôme Guelfucci <jeromeg@xfce.org>2010-10-24 22:01:47 +0200
committerJérôme Guelfucci <jeromeg@xfce.org>2010-10-24 22:01:47 +0200
commitf32cd3e21c9d557cc8fab23b7c59baff36b16a9a (patch)
treecce6160d33a6a4568aac824021b822018123abe6 /xfce4-session/xfsm-compat-gnome.c
parentd3eeda13da06c110e5d40601a9e7b12e7cb0913c (diff)
downloadxfce4-session-f32cd3e21c9d557cc8fab23b7c59baff36b16a9a.tar.gz
Add support for new gnome-keyring (Luca Niccoli).
This fixes bugs #5912, #5137 and #6073. Support for old gnome-keyring versions is dropped with this commit.
Diffstat (limited to 'xfce4-session/xfsm-compat-gnome.c')
-rw-r--r--xfce4-session/xfsm-compat-gnome.c52
1 files changed, 22 insertions, 30 deletions
diff --git a/xfce4-session/xfsm-compat-gnome.c b/xfce4-session/xfsm-compat-gnome.c
index 62f1452c..3ed79b35 100644
--- a/xfce4-session/xfsm-compat-gnome.c
+++ b/xfce4-session/xfsm-compat-gnome.c
@@ -104,27 +104,15 @@ child_setup (gpointer user_data)
static void
gnome_keyring_daemon_startup (void)
{
- const char *old_keyring;
-
GError *error = NULL;
gchar *sout;
gchar **lines;
+ gsize lineno;
gint status;
long pid;
gchar *pid_str;
gchar *end;
- char *argv[2];
-
- /* If there is already a working keyring, don't start a new daemon */
- old_keyring = g_getenv ("GNOME_KEYRING_SOCKET");
- if (old_keyring != NULL && access (old_keyring, R_OK | W_OK) == 0)
- {
-#ifdef HAVE_GNOME_KEYRING
- gnome_keyring_daemon_prepare_environment_sync ();
-#endif
- return;
- }
-
+ char *argv[3];
/* Pipe to slave keyring lifetime to */
if (pipe (keyring_lifetime_pipe))
@@ -135,8 +123,10 @@ gnome_keyring_daemon_startup (void)
error = NULL;
argv[0] = GNOME_KEYRING_DAEMON;
- argv[1] = NULL;
- g_spawn_sync (NULL, argv, NULL, G_SPAWN_LEAVE_DESCRIPTORS_OPEN,
+ argv[1] = "--start";
+ argv[2] = NULL;
+ g_spawn_sync (NULL, argv, NULL,
+ G_SPAWN_SEARCH_PATH | G_SPAWN_LEAVE_DESCRIPTORS_OPEN,
child_setup, NULL,
&sout, NULL, &status, &error);
@@ -154,20 +144,22 @@ gnome_keyring_daemon_startup (void)
{
if (WIFEXITED (status) && WEXITSTATUS (status) == 0 && sout != NULL)
{
- lines = g_strsplit (sout, "\n", 3);
-
- if (lines[0] != NULL && lines[1] != NULL
- && g_str_has_prefix (lines[1], "GNOME_KEYRING_PID="))
- {
- pid_str = lines[1] + strlen ("GNOME_KEYRING_PID=");
- pid = strtol (pid_str, &end, 10);
-
- if (end != pid_str)
- {
- gnome_keyring_daemon_pid = pid;
- xfce_putenv (lines[0]);
- }
- }
+ lines = g_strsplit (sout, "\n", 0);
+
+ for (lineno = 0; lines[lineno] != NULL; lineno++)
+ {
+ xfce_putenv (lines[lineno]);
+
+ if (g_str_has_prefix (lines[lineno], "GNOME_KEYRING_PID="))
+ {
+ pid_str = lines[lineno] + strlen ("GNOME_KEYRING_PID=");
+ pid = strtol (pid_str, &end, 10);
+ if (end != pid_str)
+ {
+ gnome_keyring_daemon_pid = pid;
+ }
+ }
+ }
g_strfreev (lines);