pidgin/purple-plugin-pack

Merge

2010-02-11, Richard Laager
62b003b3697e
Merge
--- a/.hgignore Thu Feb 11 17:15:39 2010 -0600
+++ b/.hgignore Thu Feb 11 17:16:25 2010 -0600
@@ -39,6 +39,7 @@
po/POTFILES$
po/stamp-it
po/.+\.pot
+^pre_config\.h\.in~?$
purple-plugin_pack-[0-9]+\.[0-9]+([Bb][Ee][Tt][Aa][0-9]+)?(mtn)?\/?
stamp-h1
win32-dist
--- a/.hgtags Thu Feb 11 17:15:39 2010 -0600
+++ b/.hgtags Thu Feb 11 17:16:25 2010 -0600
@@ -16,3 +16,5 @@
daf127d4f26054304be01b0082b19c01e2c1bf5a pp_1_0
fa640f2d83a59e5b011c7b51cb09f3f89a33a286 v0.3
93089a7ce7f687cc8d5f2dd1572bf59a6a5fcb96 pp_2_6_0
+37b4d5feffd799622895bbdad63e5fb589d65de6 pp_2_6_1
+8089d47ebb06591479e1c997e5421410723a4602 pp_2_6_2
--- a/AUTHORS Thu Feb 11 17:15:39 2010 -0600
+++ b/AUTHORS Thu Feb 11 17:16:25 2010 -0600
@@ -39,13 +39,16 @@
Chris Banal
Daniel Beardsmore
Joshua Cowan
+John Dennis
Basil Gor
Mathias Hasselmann
+Paul Jordin
Björn Nilsson
Amish Mehta
Lucas Paul
Chris Petersen
Jérôme Poulin (TiCPU)
+pva
qwert
Lee Roach
Elliott Sales de Andrade
--- a/ChangeLog Thu Feb 11 17:15:39 2010 -0600
+++ b/ChangeLog Thu Feb 11 17:16:25 2010 -0600
@@ -1,3 +1,35 @@
+Version 2.6.3: ??/??/??
+ * Add support for Spidernet to IRC Helper plugin.
+
+Version 2.6.2: 01/01/10
+ * Fix IRC More plugin not properly rejoining channels.
+ * IRC More no longer has a preference for auto rejoin delay--default to
+ 100 milliseconds.
+ * Splitter plugin now connects to signals with
+ PURPLE_SIGNAL_PRIORITY_HIGHEST, which makes it process messages last.
+ * Splitter will not touch any messages generated by the OTR plugin,
+ resolving compatibility issues.
+ * Splitter now resubmits split messages through the normal message
+ handling mechanisms in libpurple and tracks those resubmissions, meaning
+ splitting of messages will no longer bypass any other plugins
+ intercepting outgoing messages.
+ * /exec's author list no longer makes the Pidgin plugins dialog wider.
+ * Talkfilters is no longer a dependency of itself, allowing the plugin to
+ build. (pva)
+
+Version 2.6.1: 12/07/09
+ * Add support for limiting the number of bytes of history displayed by
+ the Enhanced History plugin.
+ * Add a preference to the Google plugin to allow users to specify a
+ Google domain to use. For example, www.google.com or www.google.fr.
+ * Fix the "Set User Modes On Connect" and "Unset User Modes On Connect"
+ settings provided by irc-more on IRC accounts.
+ * Fix Message Splitter so that it builds on Windows.
+ * Fix Group Message so that its request dialog doesn't get too long.
+ * Make IRC Helper suppress an additional message related to hostmasks.
+ (John Dennis)
+ * Fix the Colorize plugin to be UTF-8 compliant.
+
Version 2.6.0: 08/30/09
* Fix grouping of radio buttons in switchspell menu for enchant-enabled
GtkSpell. This has the side effect of eliminating slow tab switching
--- a/Makefile.mingw Thu Feb 11 17:15:39 2010 -0600
+++ b/Makefile.mingw Thu Feb 11 17:16:25 2010 -0600
@@ -9,7 +9,7 @@
VERSION := $(shell cat ./VERSION)
-ALL_PLUGINS_LIST := $(shell python plugin_pack.py build_dirs purple,pidgin,gtkspell,aspell all)
+ALL_PLUGINS_LIST := $(shell python plugin_pack.py build_dirs purple,pidgin,gtkspell,aspell,cairo,pango all)
comma:= ,
empty:=
--- a/VERSION Thu Feb 11 17:15:39 2010 -0600
+++ b/VERSION Thu Feb 11 17:16:25 2010 -0600
@@ -1,1 +1,1 @@
-2.6.1dev
+2.6.3dev
--- a/autogen.sh Thu Feb 11 17:15:39 2010 -0600
+++ b/autogen.sh Thu Feb 11 17:16:25 2010 -0600
@@ -47,8 +47,14 @@
###############################################################################
PACKAGE="Purple Plugin Pack"
ARGS_FILE="autogen.args"
-export CFLAGS
-export LDFLAGS
+
+cleanup () {
+ rm -f autogen-??????
+ echo
+ exit 2
+}
+
+trap cleanup 2
libtoolize="libtoolize"
case $(uname -s) in
--- a/autoprofile/comp_logstats.c Thu Feb 11 17:15:39 2010 -0600
+++ b/autoprofile/comp_logstats.c Thu Feb 11 17:16:25 2010 -0600
@@ -641,7 +641,7 @@
} else if (!strcmp (field, "total")) {
return max_date->sent_msgs + max_date->received_msgs;
} else {
- ap_debug ("logstats", "get-max: invalid paramater");
+ ap_debug ("logstats", "get-max: invalid parameter");
return 0;
}
--- a/colorize/colorize.c Thu Feb 11 17:15:39 2010 -0600
+++ b/colorize/colorize.c Thu Feb 11 17:16:25 2010 -0600
@@ -115,17 +115,20 @@
static void
colorize_message(char **message) {
- guint i, len;
+ glong len;
+ gchar *c;
+ gunichar ch;
gfloat d_grad[3], grad[3];
guint8 initial_rgb[3], target_rgb[3], last_rgb[3];
- gchar *formatted_char, *tmp, *new_msg;
+ GString *new_msg;
g_return_if_fail(message != NULL);
g_return_if_fail(*message != NULL);
g_return_if_fail(**message != '\0');
+ g_return_if_fail(g_utf8_validate(*message, -1, NULL));
- new_msg = g_strdup("");
- len = strlen( *message );
+ len = g_utf8_strlen( *message, -1);
+ new_msg = g_string_sized_new(strlen( *message )); /* A decent starting size */
/* get colors from preferences */
initial_rgb[0] = (guint8)purple_prefs_get_int(PREFS_I_RED);
@@ -147,25 +150,22 @@
d_grad[2] = (gfloat)(target_rgb[2] - initial_rgb[2]) / (gfloat)len;
/* open initial font tag and format first character */
- formatted_char = g_strdup_printf("<font color=\"#%02x%02x%02x\">%c",
- round_gfloat_to_guint8(grad[0]),
- round_gfloat_to_guint8(grad[1]),
- round_gfloat_to_guint8(grad[2]),
- *(*message));
-
- /* create a new string with the newly formatted char and free the old one */
- tmp = g_strconcat(new_msg, formatted_char, NULL);
- g_free(formatted_char);
- g_free(new_msg);
-
- new_msg = tmp;
+ ch = g_utf8_get_char(*message);
+ c = g_utf8_next_char(*message);
+ g_string_append_printf(new_msg, "<font color=\"#%02x%02x%02x\">",
+ round_gfloat_to_guint8(grad[0]),
+ round_gfloat_to_guint8(grad[1]),
+ round_gfloat_to_guint8(grad[2]));
+ g_string_append_unichar(new_msg, ch);
/* format each character one by one:
- * (if it is not a space) AND
+ * (if it is printable and not a space -- this excludes LTR, control, and
+ * format characters) AND
* (if it is not the same color as the last character)
*/
- for(i=1; i<len; i++)
- {
+ for ( ; c && *c; c = g_utf8_next_char(c)) {
+ gunichar ch = g_utf8_get_char(c);
+
/* store last color */
last_rgb[0] = round_gfloat_to_guint8(grad[0]);
last_rgb[1] = round_gfloat_to_guint8(grad[1]);
@@ -177,31 +177,22 @@
grad[2] += d_grad[2];
/* format next character appropriately */
- if( g_ascii_isspace ( *(*message+i) ) ||
- rgb_equals(last_rgb, grad) )
- formatted_char = g_strdup_printf("%c", *(*message+i));
- else
- formatted_char = g_strdup_printf("</font><font color=\"#%02x%02x%02x\">%c",
+ if ( g_unichar_isgraph( ch ) && !rgb_equals(last_rgb, grad) ) {
+ g_string_append_printf(new_msg, "</font><font color=\"#%02x%02x%02x\">",
round_gfloat_to_guint8(grad[0]),
round_gfloat_to_guint8(grad[1]),
- round_gfloat_to_guint8(grad[2]),
- *(*message+i));
-
+ round_gfloat_to_guint8(grad[2]));
+ }
- /* create a new string with the newly formatted char and free the old one */
- tmp = g_strconcat(new_msg, formatted_char, NULL);
- g_free(formatted_char);
- g_free(new_msg);
-
- new_msg = tmp;
+ g_string_append_unichar(new_msg, ch);
}
/* close final font tag */
- new_msg = g_strconcat(new_msg, "</font>", NULL);
+ g_string_append(new_msg, "</font>");
/* return result */
g_free(*message);
- *message = new_msg;
+ *message = g_string_free(new_msg, FALSE);
}
/* respond to a sending-im signal by replacing outgoing text
--- a/configure.ac Thu Feb 11 17:15:39 2010 -0600
+++ b/configure.ac Thu Feb 11 17:16:25 2010 -0600
@@ -1,4 +1,4 @@
-AC_INIT([purple-plugin_pack], [2.6.1dev], [plugins-devel@lists.guifications.org])
+AC_INIT([purple-plugin_pack], [2.6.3dev], [plugins-devel@lists.guifications.org])
AC_CANONICAL_SYSTEM
AM_CONFIG_HEADER(pre_config.h)
@@ -19,11 +19,8 @@
dnl #######################################################################
dnl # Setup libtool
dnl #######################################################################
-m4_defun([_LT_AC_LANG_CXX_CONFIG], [:])
-m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
-m4_defun([_LT_AC_LANG_GCJ_CONFIG], [:])
-m4_defun([_LT_AC_LANG_RC_CONFIG], [:])
-AM_PROG_LIBTOOL
+LT_INIT
+LT_LANG([C])
LIBTOOL="$LIBTOOL --silent"
dnl #######################################################################
@@ -270,7 +267,7 @@
AC_CHECK_LIB(talkfilters, gtf_filter_count, TALKFILTERS_LIBS="-ltalkfilters")
AC_SUBST(TALKFILTERS_LIBS)
- DEPENDENCIES="$DEPENDENCIES,talkfilters"
+ DEPENDENCIES="$DEPENDENCIES,talkfiltersbin"
fi
dnl #######################################################################
--- a/enhancedhist/enhancedhist.c Thu Feb 11 17:15:39 2010 -0600
+++ b/enhancedhist/enhancedhist.c Thu Feb 11 17:16:25 2010 -0600
@@ -89,7 +89,6 @@
GtkTextIter start;
GtkIMHtmlOptions options;
GList *logs = NULL, *logs_head = NULL;
- GSList *buddies = NULL;
struct tm *log_tm = NULL, *local_tm = NULL;
time_t t, log_time;
double limit_time = 0.0;
@@ -124,18 +123,19 @@
options = GTK_IMHTML_NO_COLOURS;
}
- /* Find buddies for this conversation. */
- buddies = purple_find_buddies(account, name);
-
- /* If we found at least one buddy, save the first buddy's alias. */
- if (buddies != NULL)
- alias = purple_buddy_get_contact_alias((PurpleBuddy *)buddies->data);
-
/* Determine whether this is an IM or a chat. In either case, if the user has that
* particular log type disabled, the logs file doesnt not get specified */
convtype = purple_conversation_get_type(c);
if (convtype == PURPLE_CONV_TYPE_IM && PREF_IM_VAL) {
GSList *cur;
+ GSList *buddies = NULL;
+
+ /* Find buddies for this conversation. */
+ buddies = purple_find_buddies(account, name);
+
+ /* If we found at least one buddy, save the first buddy's alias. */
+ if (buddies != NULL)
+ alias = purple_buddy_get_contact_alias((PurpleBuddy *)buddies->data);
for(cur = buddies; cur; cur = cur->next) {
PurpleBlistNode *node = cur->data;
@@ -153,11 +153,12 @@
}
}
- if(logs)
- logs = g_list_sort(logs, purple_log_compare);
- else
- logs = purple_log_get_logs(PURPLE_LOG_IM, name, account);
+ g_slist_free(buddies);
+ if (logs)
+ logs = g_list_sort(logs, purple_log_compare);
+ else
+ logs = purple_log_get_logs(PURPLE_LOG_IM, name, account);
} else if (convtype == PURPLE_CONV_TYPE_CHAT && PREF_CHAT_VAL) {
logs = purple_log_get_logs(PURPLE_LOG_CHAT,
purple_conversation_get_name(c), purple_conversation_get_account(c));
--- a/google/google.c Thu Feb 11 17:15:39 2010 -0600
+++ b/google/google.c Thu Feb 11 17:16:25 2010 -0600
@@ -26,6 +26,8 @@
#include <conversation.h>
#include <debug.h>
#include <plugin.h>
+#include <pluginpref.h>
+#include <prefs.h>
#include <proxy.h>
#include <util.h>
@@ -33,6 +35,8 @@
#define GOOGLE_URL_FORMAT "http://%s/search?q=%s&btnI=I%%27m+Feeling+Lucky"
+#define GOOGLE_DOMAIN_PREF "/core/plugins/core-plugin_pack-google/domain"
+
/******************************************************************************
* Structs
*****************************************************************************/
@@ -230,8 +234,11 @@
GoogleFetchUrlData *gfud = NULL;
PurplePlugin *plugin = (PurplePlugin *)data;
gchar *url = NULL;
+ const gchar *pref = NULL;
- url = g_strdup_printf(GOOGLE_URL_FORMAT, "www.google.com",
+ pref = purple_prefs_get_string(GOOGLE_DOMAIN_PREF);
+ url = g_strdup_printf(GOOGLE_URL_FORMAT,
+ pref ? pref : "www.google.com",
purple_url_encode(args[0]));
gfud = google_fetch_url_data_new(url);
g_free(url);
@@ -256,6 +263,21 @@
}
/******************************************************************************
+ * Prefs Stuff
+ *****************************************************************************/
+static PurplePluginPrefFrame *
+google_pref_frame(PurplePlugin *plugin) {
+ PurplePluginPrefFrame *frame = purple_plugin_pref_frame_new();
+ PurplePluginPref *pref =
+ purple_plugin_pref_new_with_name_and_label(GOOGLE_DOMAIN_PREF,
+ _("Google Domain (i.e. www.google.com)"));
+
+ purple_plugin_pref_frame_add(frame, pref);
+
+ return frame;
+}
+
+/******************************************************************************
* Plugin Stuff
*****************************************************************************/
static gboolean
@@ -278,6 +300,16 @@
return TRUE;
}
+static PurplePluginUiInfo google_prefs_info = {
+ google_pref_frame,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
static PurplePluginInfo info = {
PURPLE_PLUGIN_MAGIC,
PURPLE_MAJOR_VERSION,
@@ -302,7 +334,7 @@
NULL,
NULL,
- NULL,
+ &google_prefs_info,
NULL,
NULL,
NULL,
@@ -320,6 +352,12 @@
info.name = _("Google");
info.summary = _("Returns the url for a Google \"I'm feeling lucky\" search");
info.description = info.summary;
+
+ purple_prefs_add_none("/core");
+ purple_prefs_add_none("/core/plugins");
+ purple_prefs_add_none("/core/plugins/core-plugin_pack-google");
+
+ purple_prefs_add_string(GOOGLE_DOMAIN_PREF, "www.google.com");
}
PURPLE_INIT_PLUGIN(google, init_plugin, info)
--- a/groupmsg/groupmsg.c Thu Feb 11 17:15:39 2010 -0600
+++ b/groupmsg/groupmsg.c Thu Feb 11 17:16:25 2010 -0600
@@ -66,6 +66,7 @@
PurpleGroup *group;
GList *list = NULL;
gchar *tmp = NULL, *tmp2 = NULL;
+ guint llen = 0;
group = (PurpleGroup *)node;
@@ -100,9 +101,18 @@
return;
}
- tmp2 = tmp;
- tmp = g_strdup_printf(_("Your message will be sent to these buddies:\n%s"), tmp2);
- g_free(tmp2);
+ if((llen = g_list_length(list)) > 6) {
+ g_free(tmp);
+ /* there should probably be more detailed handling here for singular vs
+ * plural here, but I'm too lazy to do it, and this is for messaging a
+ * group, which should be multiple people anyway */
+ tmp = g_strdup_printf(_("Your message will be sent to and probably annoy "
+ "ALL %u PEOPLE in the group %s!"), llen, group->name);
+ } else {
+ tmp2 = tmp;
+ tmp = g_strdup_printf(_("Your message will be sent to these buddies:\n%s"), tmp2);
+ g_free(tmp2);
+ }
purple_request_input(group, _("Spam"),
_("Please enter the message to send"),
--- a/irc-more/irc-more.c Thu Feb 11 17:15:39 2010 -0600
+++ b/irc-more/irc-more.c Thu Feb 11 17:16:25 2010 -0600
@@ -33,14 +33,11 @@
#define CTCP_REPLY purple_account_get_string(account, "ctcp-message", "Purple IRC")
#define PART_MESSAGE purple_account_get_string(account, "part-message", "Leaving.")
#define QUIT_MESSAGE purple_account_get_string(account, "quit-message", "Leaving.")
-#define SET_UMODES purple_account_get_string(account, "umodes", "i")
-#define UNSET_UMODES purple_account_get_string(account, "umodes", NULL)
+#define SET_UMODES purple_account_get_string(account, "setumodes", "i")
+#define UNSET_UMODES purple_account_get_string(account, "unsetumodes", NULL)
#define PLUGIN_ID "core-plugin_pack-irc-more"
-#define PREF_PREFIX "/plugins/core/" PLUGIN_ID
-#define PREF_DELAY PREF_PREFIX "/delay"
-
#define MATCHES(string) !strncmp(*msg, string, sizeof(string) - 1)
static PurpleCmdId notice_cmd_id = 0;
@@ -51,7 +48,11 @@
{
/* So you think you can kick me? I'll show you! */
PurpleConversation *conv = data;
- char *conv_name = NULL, *command = NULL, *markup = NULL, *error = NULL;
+ const char *conv_name = NULL;
+ char *command = NULL, *markup = NULL, *error = NULL;
+
+ if(conv)
+ conv_name = purple_conversation_get_name(conv);
if(conv_name) {
command = g_strdup_printf("join %s", conv_name);
@@ -75,25 +76,29 @@
return;
splits = g_strsplit(*incoming, " ", -1);
- if (splits[1]) {
- PurpleAccount *account = purple_connection_get_account(gc);
- char *str = g_ascii_strdown(splits[1], -1);
+
+ /* if there's not at least 5 elements in the string array, this isn't a kick; ignore */
+ if(g_strv_length(splits) < 5)
+ return;
+
+ PurpleAccount *account = purple_connection_get_account(gc);
+ char *str = g_ascii_strdown(splits[1], -1);
- if (strcmp(str, "kick") == 0 && splits[2] && splits[3]) {
- char *name = splits[2];
- GList *chats = purple_get_chats();
- while (chats) {
- PurpleConversation *conv = chats->data;
- chats = chats->next;
- if (purple_conversation_get_account(conv) == account
- && strcmp(purple_conversation_get_name(conv), name) == 0) {
- g_timeout_add(1000 * MAX(10, purple_prefs_get_int(PREF_DELAY)), show_them, conv);
- break;
- }
+ if (strcmp(str, "kick") == 0 && splits[2] && splits[3]) {
+ char *name = splits[2];
+ GList *chats = purple_get_chats();
+ while (chats) {
+ PurpleConversation *conv = chats->data;
+ chats = chats->next;
+ if (purple_conversation_get_account(conv) == account
+ && strcmp(purple_conversation_get_name(conv), name) == 0) {
+ purple_timeout_add(100, show_them, conv);
+ break;
}
}
- g_free(str);
}
+
+ g_free(str);
g_strfreev(splits);
}
@@ -271,34 +276,6 @@
return TRUE;
}
-static PurplePluginPrefFrame *
-get_plugin_pref_frame(PurplePlugin *plugin)
-{
- PurplePluginPrefFrame *frame;
- PurplePluginPref *pref;
-
- frame = purple_plugin_pref_frame_new();
-
- pref = purple_plugin_pref_new_with_name_and_label(PREF_DELAY,
- _("Seconds to wait before rejoining"));
- purple_plugin_pref_set_bounds(pref, 3, 3600);
- purple_plugin_pref_frame_add(frame, pref);
-
- return frame;
-}
-
-static PurplePluginUiInfo prefs_info = {
- get_plugin_pref_frame,
- 0,
- NULL,
-
- /* padding */
- NULL,
- NULL,
- NULL,
- NULL
-};
-
static PurplePluginInfo info =
{
PURPLE_PLUGIN_MAGIC,
@@ -324,7 +301,7 @@
NULL,
NULL,
- &prefs_info,
+ NULL,
NULL,
NULL,
@@ -346,9 +323,6 @@
info.description = _("Adds additional IRC features, including a "
"customizable quit message, a customizable CTCP VERSION reply, "
"and the /notice command for notices.");
-
- purple_prefs_add_none(PREF_PREFIX);
- purple_prefs_add_int(PREF_DELAY, 30);
}
PURPLE_INIT_PLUGIN(irc_more, init_plugin, info)
--- a/irchelper/irchelper.c Thu Feb 11 17:15:39 2010 -0600
+++ b/irchelper/irchelper.c Thu Feb 11 17:16:25 2010 -0600
@@ -62,6 +62,7 @@
#define DOMAIN_SUFFIX_INDIEZEN ".indiezen.org"
#define DOMAIN_SUFFIX_JEUX ".jeux.fr"
#define DOMAIN_SUFFIX_QUAKENET ".quakenet.org"
+#define DOMAIN_SUFFIX_SPIDERNET ".spidernet.org"
#define DOMAIN_SUFFIX_THUNDERCITY ".thundercity.org"
#define DOMAIN_SUFFIX_UNDERNET ".undernet.org"
@@ -89,6 +90,7 @@
#define MESSAGE_NICKSERV_IDENTIFIED "Password accepted - you are now recognized"
#define MESSAGE_NICKSERV_IDENTIFIED_INDIEZEN "Password accepted -- you are now recognized."
#define MESSAGE_SPOOFING_YOUR_IP "*** Spoofing your IP. congrats."
+#define MESSAGE_SET_HOSTNAME "idoru set your hostname to"
#define MESSAGE_QUAKENET_Q_CRUFT \
"Remember: NO-ONE from QuakeNet will ever ask for your password. " \
"NEVER send your password to ANYONE except Q@CServe.quakenet.org."
@@ -146,6 +148,7 @@
IRC_NETWORK_TYPE_DALNET = 0x0800,
IRC_NETWORK_TYPE_FUNCOM = 0x1000,
IRC_NETWORK_TYPE_INDIEZEN = 0x2000,
+ IRC_NETWORK_TYPE_SPIDERNET = 0x4000
} IRCHelperStateFlags;
struct proto_stuff
@@ -248,6 +251,8 @@
type = IRC_NETWORK_TYPE_UNDERNET;
else if (g_str_has_suffix(username, DOMAIN_SUFFIX_INDIEZEN))
type = IRC_NETWORK_TYPE_INDIEZEN;
+ else if (g_str_has_suffix(username, DOMAIN_SUFFIX_SPIDERNET))
+ type = IRC_NETWORK_TYPE_SPIDERNET;
g_free(username);
return type;
@@ -638,7 +643,7 @@
if (state & IRC_NETWORK_TYPE_THUNDERCITY)
nickserv_msg_identify("AUTH", connection->proto_data, connection, nickpassword);
- else if (state & IRC_NETWORK_TYPE_INDIEZEN)
+ else if (state & (IRC_NETWORK_TYPE_INDIEZEN | IRC_NETWORK_TYPE_SPIDERNET))
nickserv_msg_identify("identify", connection->proto_data, connection, nickpassword);
else
nickserv_identify(connection->proto_data, connection, nickpassword);
@@ -930,6 +935,11 @@
return TRUE;
}
+ if (g_str_has_prefix(msg, MESSAGE_PURPLE_NOTICE_PREFIX MESSAGE_SET_HOSTNAME))
+ {
+ return TRUE;
+ }
+
/* SLIGHTLY COMPLICATED SUPPRESSION RULES */
/* Supress QuakeNet and UnderNet Weird Login Cruft */
--- a/slashexec/slashexec.c Thu Feb 11 17:15:39 2010 -0600
+++ b/slashexec/slashexec.c Thu Feb 11 17:16:25 2010 -0600
@@ -501,9 +501,9 @@
NULL, /* summary */
NULL, /* description */
- "Gary Kramlich <grim@reaperworld.com>, "
- "Peter Lawler <bleeter from users.sf.net>, "
- "Daniel Atallah, Sadrul Habib Chowdhury <sadrul@users.sf.net>, "
+ "Gary Kramlich <grim@reaperworld.com>,\n"
+ "Peter Lawler <bleeter from users.sf.net>,\n"
+ "Daniel Atallah,\nSadrul Habib Chowdhury <sadrul@users.sf.net>,\n"
"John Bailey <rekkanoryo@rekkanoryo.org>", /* authors */
PP_WEBSITE, /* homepage */
--- a/splitter/Makefile.mingw Thu Feb 11 17:15:39 2010 -0600
+++ b/splitter/Makefile.mingw Thu Feb 11 17:16:25 2010 -0600
@@ -10,3 +10,5 @@
include $(PP_TOP)/win_pp.mak
+PLUGIN_LIBS += -lpangowin32-1.0
+
--- a/splitter/splitter.c Thu Feb 11 17:15:39 2010 -0600
+++ b/splitter/splitter.c Thu Feb 11 17:16:25 2010 -0600
@@ -25,6 +25,10 @@
#include <pango/pango.h>
+#ifdef _WIN32
+# include <pango/pangowin32.h>
+#endif
+
#ifndef _WIN32
# include <pango/pangocairo.h>
#endif
@@ -71,6 +75,9 @@
gint end;
} message_slice;
+/* Global variable to block infinite loops. Single-threaded is nice */
+static gboolean splitter_injected_message = FALSE;
+
/* plugin preference variables */
static gint current_split_size;
@@ -118,8 +125,7 @@
PurpleConversationType type;
PurpleAccount *account;
PurpleConnection *gc;
- char *displayed = NULL, *sent = NULL;
- gint err = 0;
+ char *sent = NULL;
if (strlen(message) == 0)
return;
@@ -132,76 +138,29 @@
type = purple_conversation_get_type(conv);
- /* Always linkfy the text for display */
- displayed = purple_markup_linkify(message);
-
if ((conv->features & PURPLE_CONNECTION_HTML) &&
!(msgflags & PURPLE_MESSAGE_RAW))
{
- sent = g_strdup(displayed);
+ sent = purple_markup_linkify(message);
}
else
sent = g_strdup(message);
msgflags |= PURPLE_MESSAGE_SEND;
- if (type == PURPLE_CONV_TYPE_IM) {
- PurpleConvIm *im = PURPLE_CONV_IM(conv);
-
- if (sent != NULL && sent[0] != '\0') {
-
- err = serv_send_im(gc, purple_conversation_get_name(conv),
- sent, msgflags);
+ splitter_injected_message = TRUE;
- if ((err > 0) && (displayed != NULL))
- purple_conv_im_write(im, NULL, displayed, msgflags, time(NULL));
-
- purple_signal_emit(purple_conversations_get_handle(), "sent-im-msg",
- account,
- purple_conversation_get_name(conv), sent);
- }
+ if (type == PURPLE_CONV_TYPE_IM) {
+ if (sent != NULL && sent[0] != '\0')
+ purple_conv_im_send_with_flags(PURPLE_CONV_IM(conv), sent, msgflags);
}
else {
- if (sent != NULL && sent[0] != '\0') {
- err = serv_chat_send(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), sent, msgflags);
-
- purple_signal_emit(purple_conversations_get_handle(), "sent-chat-msg",
- account, sent,
- purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)));
- }
+ if (sent != NULL && sent[0] != '\0')
+ purple_conv_chat_send_with_flags(PURPLE_CONV_CHAT(conv), sent, msgflags);
}
- if (err < 0) {
- const char *who;
- const char *msg;
-
- who = purple_conversation_get_name(conv);
-
- if (err == -E2BIG) {
- msg = _("Unable to send message: The message is too large.");
+ splitter_injected_message = FALSE;
- if (!purple_conv_present_error(who, account, msg)) {
- char *msg2 = g_strdup_printf(_("Unable to send message to %s."), who);
- purple_notify_error(gc, NULL, msg2, _("The message is too large."));
- g_free(msg2);
- }
- }
- else if (err == -ENOTCONN) {
- purple_debug(PURPLE_DEBUG_ERROR, "conversation",
- "Not yet connected.\n");
- }
- else {
- msg = _("Unable to send message.");
-
- if (!purple_conv_present_error(who, account, msg)) {
- char *msg2 = g_strdup_printf(_("Unable to send message to %s."), who);
- purple_notify_error(gc, NULL, msg2, NULL);
- g_free(msg2);
- }
- }
- }
-
- g_free(displayed);
g_free(sent);
}
@@ -440,14 +399,16 @@
sending_chat_msg_cb(PurpleAccount *account, const char **message, int id) {
message_to_conv *msg_to_conv;
- purple_debug(PURPLE_DEBUG_MISC, "purple-splitter", "splitter plugin invoked\n");
+ if (splitter_injected_message)
+ return;
+
+ purple_debug_misc("purple-splitter", "splitter plugin invoked\n");
g_return_if_fail(account != NULL);
g_return_if_fail(message != NULL);
g_return_if_fail(*message != NULL);
msg_to_conv = g_new0(message_to_conv, 1);
- g_return_if_fail( msg_to_conv != NULL );
msg_to_conv->sender_username = g_strdup(account->username);
msg_to_conv->sender_protocol_id = g_strdup(account->protocol_id);
@@ -464,15 +425,21 @@
{
message_to_conv *msg_to_conv;
- purple_debug(PURPLE_DEBUG_MISC, "purple-splitter", "splitter plugin invoked\n");
+ if (splitter_injected_message)
+ return;
+
+ purple_debug_misc("purple-splitter", "splitter plugin invoked\n");
g_return_if_fail(account != NULL);
g_return_if_fail(receiver != NULL);
g_return_if_fail(message != NULL);
g_return_if_fail(*message != NULL);
+ /* OTR compatibility hack */
+ if (0 == strncmp(*message, "?OTR", strlen("?OTR")))
+ return;
+
msg_to_conv = g_new0(message_to_conv, 1);
- g_return_if_fail( msg_to_conv != NULL );
msg_to_conv->sender_username = g_strdup(account->username);
msg_to_conv->sender_protocol_id = g_strdup(account->protocol_id);
@@ -485,16 +452,18 @@
/* register "sending" message signal callback */
static gboolean
plugin_load(PurplePlugin *plugin) {
- purple_signal_connect(purple_conversations_get_handle(),
+ purple_signal_connect_priority(purple_conversations_get_handle(),
"sending-im-msg",
plugin,
PURPLE_CALLBACK(sending_im_msg_cb),
- NULL);
- purple_signal_connect(purple_conversations_get_handle(),
+ NULL,
+ PURPLE_SIGNAL_PRIORITY_HIGHEST);
+ purple_signal_connect_priority(purple_conversations_get_handle(),
"sending-chat-msg",
plugin,
PURPLE_CALLBACK(sending_chat_msg_cb),
- NULL);
+ NULL,
+ PURPLE_SIGNAL_PRIORITY_HIGHEST);
return TRUE;
}
--- a/stress/stress.c Thu Feb 11 17:15:39 2010 -0600
+++ b/stress/stress.c Thu Feb 11 17:16:25 2010 -0600
@@ -43,6 +43,14 @@
gint maxevents;
} StressBuddy;
+typedef struct {
+ gboolean running;
+ GList *buddies;
+ gint nevents;
+ gint message_min;
+ gint mexxage_max;
+} StressData;
+
/******************************************************************************
* Enums
*****************************************************************************/
@@ -405,6 +413,17 @@
return TRUE;
}
+static GList *
+stress_actions(PurplePlugin *plugin, gpointer context) {
+ GList *menu = NULL;
+ PurplePluginAction *act = NULL;
+
+ action = purple_plugin_action_new(_("Start"));
+ menu = g_list_append(menu, action);
+
+ return menu;
+}
+
static PurplePluginInfo info = {
PURPLE_PLUGIN_MAGIC,
PURPLE_MAJOR_VERSION,
@@ -430,7 +449,7 @@
NULL,
&prpl_info,
NULL,
- NULL,
+ stress_actions,
NULL,
NULL,
NULL,
--- a/talkfilters/plugins.cfg Thu Feb 11 17:15:39 2010 -0600
+++ b/talkfilters/plugins.cfg Thu Feb 11 17:16:25 2010 -0600
@@ -1,6 +1,6 @@
[GNU Talk Filters]
type=default
-depends=pidgin
+depends=pidgin talkfiltersbin
provides=talkfilters
summary=Translates text in sent messages into humorous dialects
description=The GNU Talk Filters are filter programs that convert ordinary English text into text that mimics a stereotyped or otherwise humorous dialect. These filters have been in the public domain for many years, and have been made available as a single integrated package. The filters include austro, b1ff, brooklyn, chef, cockney, drawl, dubya, fudd, funetak, jethro, jive, kraut, pansy, pirate, postmodern, redneck, valspeak, and warez.