Sophie

Sophie

distrib > * > 2008.0 > x86_64 > by-pkgid > 8f030c6fd819087af1e8e268b798094e > files > 6

pidgin-2.2.1-1mdv2008.0.src.rpm

diff -Naur pidgin-2.2.1.orig/libpurple/account.c pidgin-2.2.1/libpurple/account.c
--- pidgin-2.2.1.orig/libpurple/account.c	2007-10-01 15:31:33.000000000 +0200
+++ pidgin-2.2.1/libpurple/account.c	2007-10-01 15:34:15.000000000 +0200
@@ -2451,6 +2451,24 @@
 						 purple_value_new(PURPLE_TYPE_SUBTYPE,
 							 			PURPLE_SUBTYPE_ACCOUNT),
 						 purple_value_new(PURPLE_TYPE_STRING));
+	purple_signal_register(handle, "account-request-authorization",
+						 purple_marshal_BOOLEAN__POINTER_POINTER,
+						 purple_value_new(PURPLE_TYPE_BOOLEAN), 2,
+						 purple_value_new(PURPLE_TYPE_SUBTYPE,
+						 				PURPLE_SUBTYPE_ACCOUNT),
+						 purple_value_new(PURPLE_TYPE_STRING));
+	
+	purple_signal_register(handle, "account-authorization-denied",
+						 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
+						 purple_value_new(PURPLE_TYPE_SUBTYPE,
+						 				PURPLE_SUBTYPE_ACCOUNT),
+						 purple_value_new(PURPLE_TYPE_STRING));
+
+	purple_signal_register(handle, "account-authorization-granted",
+						 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
+						 purple_value_new(PURPLE_TYPE_SUBTYPE,
+						 				PURPLE_SUBTYPE_ACCOUNT),
+						 purple_value_new(PURPLE_TYPE_STRING));
 
 	load_accounts();
 
diff -Naur pidgin-2.2.1.orig/pidgin/gtkaccount.c pidgin-2.2.1/pidgin/gtkaccount.c
--- pidgin-2.2.1.orig/pidgin/gtkaccount.c	2007-10-01 15:31:33.000000000 +0200
+++ pidgin-2.2.1/pidgin/gtkaccount.c	2007-10-01 15:31:45.000000000 +0200
@@ -2510,6 +2510,8 @@
 static void
 authorize_and_add_cb(struct auth_and_add *aa)
 {
+	purple_signal_emit(purple_accounts_get_handle(),
+		"account-authorization-granted", aa->account, &aa->username);
 	aa->auth_cb(aa->data);
 	purple_blist_request_add_buddy(aa->account, aa->username,
 	 	                    NULL, aa->alias);
@@ -2520,8 +2522,22 @@
 }
 
 static void
+auth_no_add_cb(struct auth_and_add *aa)
+{
+	purple_signal_emit(purple_accounts_get_handle(),
+		"account-authorization-granted", aa->account, &aa->username);
+	aa->auth_cb(aa->data);
+
+	g_free(aa->username);
+	g_free(aa->alias);
+	g_free(aa);
+}
+
+static void
 deny_no_add_cb(struct auth_and_add *aa)
 {
+	purple_signal_emit(purple_accounts_get_handle(),
+		"account-authorization-denied", aa->account, &aa->username);
 	aa->deny_cb(aa->data);
 
 	g_free(aa->username);
@@ -2543,6 +2559,8 @@
 	char *buffer;
 	PurpleConnection *gc;
 	GtkWidget *alert;
+	int plugin_return;
+	struct auth_and_add *aa;
 
 	gc = purple_account_get_connection(account);
 	if (message != NULL && *message == '\0')
@@ -2561,15 +2579,24 @@
 		                (message != NULL ? ": " : "."),
 		                (message != NULL ? message  : ""));
 
+	plugin_return = GPOINTER_TO_INT(
+		purple_signal_emit_return_1(purple_accounts_get_handle(),
+		"account-request-authorization", account, &remote_user));
+
+	if (plugin_return) {
+		g_free(buffer);
+		return;
+	}
+
+	aa = g_new0(struct auth_and_add, 1);
+	aa->auth_cb = auth_cb;
+	aa->deny_cb = deny_cb;
+	aa->data = user_data;
+	aa->username = g_strdup(remote_user);
+	aa->alias = g_strdup(alias);
+	aa->account = account;
 
 	if (!on_list) {
-		struct auth_and_add *aa = g_new0(struct auth_and_add, 1);
-		aa->auth_cb = auth_cb;
-		aa->deny_cb = deny_cb;
-		aa->data = user_data;
-		aa->username = g_strdup(remote_user);
-		aa->alias = g_strdup(alias);
-		aa->account = account;
 		alert = pidgin_make_mini_dialog(gc, PIDGIN_STOCK_DIALOG_QUESTION,
 						  _("Authorize buddy?"), buffer, aa,
 						  _("Authorize"), authorize_and_add_cb,
@@ -2577,9 +2604,9 @@
 						  NULL);
 	} else {
 		alert = pidgin_make_mini_dialog(gc, PIDGIN_STOCK_DIALOG_QUESTION,
-						  _("Authorize buddy?"), buffer, user_data,
-						  _("Authorize"), auth_cb,
-						  _("Deny"), deny_cb,
+						  _("Authorize buddy?"), buffer, aa,
+						  _("Authorize"), auth_no_add_cb,
+						  _("Deny"), deny_no_add_cb,
 						  NULL);
 	}
 	pidgin_blist_add_alert(alert);