gnome-session r4574 - in trunk: . gnome-session



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]