Mercurial > pidgin.yaz
view plugins/gaiminc.c @ 8995:9caf796e74aa
[gaim-migrate @ 9770]
"Luke, if you get a chance, could you commit this? It should improve the
HTML escaping situation between Gaim and other AIM and ICQ clients. I haven't
actually applied it locally or tested it, but it looks ok to me. I would do
it myself, but there are other changes in my oscar.c that aren't ready to
commit, and I want to go to sleep so I can wake up tomorrow...
I'll probably be out of town climbing until Sunday night... "--Mark Doliner
"Below is an email I nearly sent you, before deciding to test & document the
failure cases I knew of.
http://www.nosnilmot.com/gaim/oscar-html.txt shows how current CVS behaves
sending the string "<foo>" between GaimICQ/GaimAIM/ICQLite/WinAIM in various
combinations After that testing I couldn't help trying to fix it :)
The attached patch, from my testing, resolves all those marked with "XX" so
that what is received matches what the user sent. The code might not be the
most efficient and may contain redundant bits but I've had enough of this
for now, 2 Windows crashes which caused VMWare to be weird and half break
my keyboard and require restarting X.
The patch might want a bit more testing, especially with iChat (I'm unable
to test with that). Maybe committing it to CVS might get it some more
testing though ;-)" --Stu Tomlinson
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Fri, 21 May 2004 11:55:08 +0000 |
parents | d7b8eb1f0a18 |
children | 8f838ae3e710 |
line wrap: on
line source
#include "internal.h" #include "plugin.h" #include "account.h" #include "connection.h" #include "conversation.h" /* include UI for show_about() */ #include "gtkplugin.h" #include "ui.h" #define GAIMINC_PLUGIN_ID "core-gaiminc" static void echo_hi(GaimConnection *gc) { /* this doesn't do much, just lets you know who we are :) */ show_about(NULL, NULL); } static gboolean reverse(GaimAccount *account, char **who, char **message, int *flags) { /* this will drive you insane. whenever you receive a message, * the text of the message (HTML and all) will be reversed. */ int i, l; char tmp; /* this check is necessary in case bad plugins do bad things */ if (message == NULL || *message == NULL) return FALSE; l = strlen(*message); if (!strcmp(*who, gaim_account_get_username(account))) return FALSE; for (i = 0; i < l/2; i++) { tmp = (*message)[i]; (*message)[i] = (*message)[l - i - 1]; (*message)[l - i - 1] = tmp; } return FALSE; } static void bud(GaimBuddy *who) { GaimAccount *acct = who->account; GaimConversation *conv = gaim_conversation_new(GAIM_CONV_IM, acct, who->name); gaim_conv_im_send(GAIM_CONV_IM(conv), "Hello!"); } /* * EXPORTED FUNCTIONS */ static gboolean plugin_load(GaimPlugin *plugin) { /* this is for doing something fun when we sign on */ gaim_signal_connect(gaim_connections_get_handle(), "signed-on", plugin, GAIM_CALLBACK(echo_hi), NULL); /* this is for doing something fun when we get a message */ gaim_signal_connect(gaim_conversations_get_handle(), "received-im-msg", plugin, GAIM_CALLBACK(reverse), NULL); /* this is for doing something fun when a buddy comes online */ gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-on", plugin, GAIM_CALLBACK(bud), NULL); return TRUE; } static GaimPluginInfo info = { GAIM_PLUGIN_API_VERSION, /**< api_version */ GAIM_PLUGIN_STANDARD, /**< type */ NULL, /**< ui_requirement */ 0, /**< flags */ NULL, /**< dependencies */ GAIM_PRIORITY_DEFAULT, /**< priority */ GAIMINC_PLUGIN_ID, /**< id */ N_("Gaim Demonstration Plugin"), /**< name */ VERSION, /**< version */ /** summary */ N_("An example plugin that does stuff - see the description."), /** description */ N_("This is a really cool plugin that does a lot of stuff:\n" "- It tells you who wrote the program when you log in\n" "- It reverses all incoming text\n" "- It sends a message to people on your list immediately" " when they sign on"), "Eric Warmenhoven <eric@warmenhoven.org>", /**< author */ GAIM_WEBSITE, /**< homepage */ plugin_load, /**< load */ NULL, /**< unload */ NULL, /**< destroy */ NULL, /**< ui_info */ NULL /**< extra_info */ }; static void init_plugin(GaimPlugin *plugin) { } GAIM_INIT_PLUGIN(gaiminc, init_plugin, info)