File libgnomesu-startup-notification.patch of Package libgnomesu

Index: libgnomesu-1.0.0/pam-backend/pam.c
===================================================================
--- libgnomesu-1.0.0.orig/pam-backend/pam.c
+++ libgnomesu-1.0.0/pam-backend/pam.c
@@ -53,6 +53,7 @@
 
 
 static FILE *inf, *outf;
+static gboolean interacted = FALSE;
 static gboolean Abort = FALSE;
 const gchar *new_user;
 
@@ -77,6 +78,7 @@ su_conv (int num_msg, const struct pam_m
 		{
 			gchar password[1024];
 
+			interacted = TRUE;
 			fprintf (outf, PROTOCOL_ASK_PASS);
 			safe_memset (password, 0, sizeof (password));
 			if (!fgets (password, sizeof (password), inf)) {
@@ -286,6 +288,12 @@ main (int argc, char *argv[])
 			outf = NULL;
 			break;
 		case 0:
+			if (!interacted) {
+				const char *desktop_startup_id;
+				desktop_startup_id = g_getenv ("_GNOMESU_DESKTOP_STARTUP_ID");
+				if (desktop_startup_id)
+					g_setenv ("DESKTOP_STARTUP_ID", desktop_startup_id, FALSE);
+			}
 			execvp (command[0], command);
 			_exit (1);
 			break;
Index: libgnomesu-1.0.0/tools/gnomesu.c
===================================================================
--- libgnomesu-1.0.0.orig/tools/gnomesu.c
+++ libgnomesu-1.0.0/tools/gnomesu.c
@@ -61,11 +61,18 @@ main (int argc, char *argv[])
 	GnomeProgram *program;
 	GValue value = { 0 };
 	poptContext pctx;
+	const char *desktop_startup_id;
 
 	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 	textdomain (GETTEXT_PACKAGE);
 
+	/* get the startup id before GTK+ unsets it, so we can forward it if
+	 * there's no authentication dialog */
+	desktop_startup_id = g_getenv ("DESKTOP_STARTUP_ID");
+	if (desktop_startup_id)
+		g_setenv ("_GNOMESU_DESKTOP_STARTUP_ID", desktop_startup_id, TRUE);
+
 	program = gnome_program_init ("gnomesu", VERSION,
 			LIBGNOMEUI_MODULE, argc, argv,
 			GNOME_PARAM_POPT_TABLE, options,
openSUSE Build Service is sponsored by