kov changed libgksu/trunk/ChangeLog, libgksu/trunk/libgksu/libgksu.c, libgksu/trunk/libgksu/libgksu.h

Gustavo Noronha kov at costa.debian.org
Sun Jun 25 23:15:48 UTC 2006


Mensagem de log: 
	- handle canceling the dialog correctly; added a new
	  error to the enum


-----


Modified: libgksu/trunk/ChangeLog
===================================================================
--- libgksu/trunk/ChangeLog	2006-06-25 22:49:39 UTC (rev 628)
+++ libgksu/trunk/ChangeLog	2006-06-25 23:15:47 UTC (rev 629)
@@ -1,5 +1,9 @@
 2006-06-25  Gustavo Noronha Silva  <kov at debian.org>
 
+	* libgksu/libgksu.c:
+	- handle canceling the dialog correctly; added a new
+	  error to the enum
+
 	* configure.ac, libgksu/libgksu.c:
 	- accepted patch by Benoît Dejean <benoit at placenet.org>
 	  to get the process name in a platform independent way

Modified: libgksu/trunk/libgksu/libgksu.c
===================================================================
--- libgksu/trunk/libgksu/libgksu.c	2006-06-25 22:49:39 UTC (rev 628)
+++ libgksu/trunk/libgksu/libgksu.c	2006-06-25 23:15:47 UTC (rev 629)
@@ -64,6 +64,7 @@
       { GKSU_ERROR_PIPEREAD, "GKSU_ERROR_PIPEREAD", "piperead" },
       { GKSU_ERROR_WRONGPASS, "GKSU_ERROR_WRONGPASS", "wrongpass" },
       { GKSU_ERROR_CHILDFAILED, "GKSU_ERROR_CHILDFAILED", "childfailed" },
+      { GKSU_ERROR_CANCELED, "GKSU_ERROR_CANCELED", "canceled" },
       { 0, NULL, NULL }
     };
     etype = g_enum_register_static ("GksuError", values);
@@ -817,7 +818,10 @@
   gchar *password = NULL, *tmp = NULL;
   int retvalue = 0;
   int lock = 0;
+  GQuark gksu_quark;
 
+  gksu_quark = g_quark_from_string (PACKAGE);
+
   if (context->grab)
     dialog = g_object_new (GKSUUI_TYPE_DIALOG,
 			   "type", GTK_WINDOW_POPUP,
@@ -884,7 +888,17 @@
     gtk_main_iteration ();
 
   if (retvalue != GTK_RESPONSE_OK)
-    return NULL;
+    {
+      switch (retvalue)
+	{
+	case GTK_RESPONSE_CANCEL:
+	case GTK_RESPONSE_DELETE_EVENT:
+	  g_set_error (error, gksu_quark,
+		       GKSU_ERROR_CANCELED,
+		       _("Password prompt canceled."));
+	}
+      return NULL;
+    }
 
   tmp = gksuui_dialog_get_password (GKSUUI_DIALOG(dialog));
   password = g_locale_from_utf8 (tmp, strlen (tmp), NULL, NULL, NULL);
@@ -1729,7 +1743,11 @@
 		tmp = ask_pass (context, buf, ask_pass_data, error);
 	      else
 		used_gnome_keyring = TRUE;
-	      g_return_val_if_fail (tmp != NULL, -1);
+	      if (tmp == NULL || error)
+		{
+		  nullify_password (password);
+		  return TRUE;
+		}
 
 	      usleep (100);
 
@@ -2268,7 +2286,11 @@
 
 	  password = ask_pass (context, _("Password: "),
 			       ask_pass_data, error);
-	  g_return_val_if_fail (password != NULL, -1);
+	  if (password == NULL || error)
+	    {
+	      nullify_password (password);
+	      return TRUE;
+	    }
 
 	  usleep (100);
 

Modified: libgksu/trunk/libgksu/libgksu.h
===================================================================
--- libgksu/trunk/libgksu/libgksu.h	2006-06-25 22:49:39 UTC (rev 628)
+++ libgksu/trunk/libgksu/libgksu.h	2006-06-25 23:15:47 UTC (rev 629)
@@ -78,7 +78,8 @@
   GKSU_ERROR_PIPEREAD,
   GKSU_ERROR_WRONGPASS,
   GKSU_ERROR_CHILDFAILED,
-  GKSU_ERROR_NOT_ALLOWED
+  GKSU_ERROR_NOT_ALLOWED,
+  GKSU_ERROR_CANCELED
 } GksuError;
 
 typedef




More information about the gksu-commits mailing list