diff -Naur gaim-2.0.0beta3.orig/src/protocols/irc/irc.c gaim-2.0.0beta3/src/protocols/irc/irc.c --- gaim-2.0.0beta3.orig/src/protocols/irc/irc.c 2006-03-07 08:22:09.000000000 +0100 +++ gaim-2.0.0beta3/src/protocols/irc/irc.c 2006-04-02 16:24:05.000000000 +0200 @@ -23,6 +23,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include + #include "internal.h" #include "accountopt.h" @@ -61,7 +63,7 @@ static GaimPlugin *_irc_plugin = NULL; -static const char *status_chars = "@+%&"; +static const char *status_chars = "@+%&.~"; static void irc_view_motd(GaimPluginAction *action) { @@ -365,7 +367,11 @@ return FALSE; } g_free(buf); - buf = irc_format(irc, "vn", "NICK", gaim_connection_get_display_name(gc)); + char nickpass[512]; /*nick:pass support added by capitanterrex@yahoo.es*/ + strcpy(nickpass, gaim_connection_get_display_name(gc)); + strcat(nickpass, ":"); + strcat(nickpass, pass); + buf = irc_format(irc, "v:", "NICK", nickpass); if (irc_send(irc, buf) < 0) { /* gaim_connection_error(gc, "Error sending nickname");*/ g_free(buf); @@ -478,9 +484,23 @@ const char *args[2]; if (strchr(status_chars, *who) != NULL) + { args[0] = who + 1; - else + if (strchr(status_chars, *(who+1)) != NULL) + { + args[0] = who + 2; + if (strchr(status_chars, *(who+2)) != NULL) + { + args[0] = who + 3; + if (strchr(status_chars, *(who+3)) != NULL) + { + args[0] = who + 4; + } + } + } + } else { args[0] = who; + } plain = gaim_unescape_html(what); args[1] = plain; diff -Naur gaim-2.0.0beta3.orig/src/protocols/irc/msgs.c gaim-2.0.0beta3/src/protocols/irc/msgs.c --- gaim-2.0.0beta3.orig/src/protocols/irc/msgs.c 2006-03-21 05:32:44.000000000 +0100 +++ gaim-2.0.0beta3/src/protocols/irc/msgs.c 2006-04-02 16:24:05.000000000 +0200 @@ -360,6 +360,7 @@ { char *names, *cur, *end, *tmp, *msg; GaimConversation *convo; + int juju; if (!strcmp(name, "366")) { convo = gaim_find_conversation_with_account(GAIM_CONV_TYPE_ANY, irc->nameconv ? irc->nameconv : args[1], irc->account); @@ -402,6 +403,16 @@ f = GAIM_CBFLAGS_VOICE; cur++; } + for (juju = 0; juju <= 5; juju++) + { + if(*cur == '@') cur++; + if(*cur == '%') cur++; + if(*cur == '&') cur++; + if(*cur == '.') cur++; + if(*cur == '+') cur++; + if(*cur == '~') cur++; + } + tmp = g_strndup(cur, end - cur); users = g_list_prepend(users, tmp); flags = g_list_prepend(flags, GINT_TO_POINTER(f));