gnome-session r4574 - in trunk: . gnome-session
- From: vuntz svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-session r4574 - in trunk: . gnome-session
- Date: Wed, 20 Feb 2008 13:54:43 +0000 (GMT)
Author: vuntz
Date: Wed Feb 20 13:54:43 2008
New Revision: 4574
URL: http://svn.gnome.org/viewvc/gnome-session?rev=4574&view=rev
Log:
2008-02-20 Vincent Untz <vuntz gnome org>
* configure.in: require gnome-keyring 2.21.92
* gnome-session/gsm-keyring.c: (gsm_keyring_daemon_start): use
gnome_keyring_daemon_prepare_environment_sync(), and set appropriate
g-k environment variables
Fix bug #503278.
Based on patch by Stef Walter <stef memberwebs com>
Modified:
trunk/ChangeLog
trunk/configure.in
trunk/gnome-session/gsm-keyring.c
Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in (original)
+++ trunk/configure.in Wed Feb 20 13:54:43 2008
@@ -56,7 +56,7 @@
LIBGNOMEUI_REQUIRED=2.2.0
GTK_REQUIRED=2.11.1
DBUS_GLIB_REQUIRED=0.35
-GNOME_KEYRING_REQUIRED=0.5.1
+GNOME_KEYRING_REQUIRED=2.21.92
dnl pkg-config dependency checks
Modified: trunk/gnome-session/gsm-keyring.c
==============================================================================
--- trunk/gnome-session/gsm-keyring.c (original)
+++ trunk/gnome-session/gsm-keyring.c Wed Feb 20 13:54:43 2008
@@ -53,10 +53,10 @@
{
GError *err;
char *standard_out;
- char **lines;
+ char **lines, **l;
int status;
long pid;
- char *pid_str, *end;
+ char *t, *end;
const char *old_keyring;
const char *display;
char *argv[2];
@@ -66,10 +66,7 @@
if (old_keyring != NULL &&
access (old_keyring, R_OK | W_OK) == 0)
{
- display = g_getenv ("DISPLAY");
- if (display != NULL)
- gnome_keyring_daemon_set_display_sync (display);
-
+ gnome_keyring_daemon_prepare_environment_sync ();
return;
}
@@ -100,23 +97,34 @@
WEXITSTATUS (status) == 0 &&
standard_out != NULL)
{
- lines = g_strsplit (standard_out, "\n", 3);
+ lines = g_strsplit (standard_out, "\n", 0);
- if (lines[0] != NULL &&
- lines[1] != NULL &&
- g_str_has_prefix (lines[1], "GNOME_KEYRING_PID="))
+ for (l = lines; *l; ++l)
{
- pid_str = lines[1] + strlen ("GNOME_KEYRING_PID=");
- pid = strtol (pid_str, &end, 10);
- if (end != pid_str)
+ /* split the line into name=value */
+ t = strchr (*l, '=');
+ if (!t)
+ continue;
+ /* make *l be the name and t the value */
+ *t = 0;
+ t++;
+
+ /* everything that comes out should be an env var */
+ if (g_str_equal (*l, "GNOME_KEYRING_SOCKET"))
+ g_setenv (*l, t, TRUE);
+
+ /* track the daemon's PID */
+ if (g_str_equal (*l, "GNOME_KEYRING_PID"))
{
- gnome_keyring_daemon_pid = pid;
- g_setenv ("GNOME_KEYRING_SOCKET",
- lines[0] + strlen ("GNOME_KEYRING_SOCKET="), TRUE);
+ pid = strtol (t, &end, 10);
+ if (end != t)
+ gnome_keyring_daemon_pid = pid;
}
}
g_strfreev (lines);
+
+ gnome_keyring_daemon_prepare_environment_sync ();
}
else
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]