Mercurial > pidgin
changeset 17353:82a02dbf2fa2
This performs mIRC formatting code stripping for the room list, as
well as fixing (I think) mIRC color code stripping for all purposes. I
haven't tested this carefully, so someone scream if it breaks
anything.
Fixes #557
author | Ethan Blanton <elb@pidgin.im> |
---|---|
date | Mon, 28 May 2007 17:52:04 +0000 |
parents | 58a286e231b7 |
children | 7ada026a53b9 f7f4d11d4826 |
files | libpurple/protocols/irc/msgs.c libpurple/protocols/irc/parse.c |
diffstat | 2 files changed, 20 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/irc/msgs.c Mon May 28 03:18:02 2007 +0000 +++ b/libpurple/protocols/irc/msgs.c Mon May 28 17:52:04 2007 +0000 @@ -369,6 +369,7 @@ if (!strcmp(name, "322")) { PurpleRoomlistRoom *room; + char *topic; if (!args[0] || !args[1] || !args[2] || !args[3]) return; @@ -376,7 +377,9 @@ room = purple_roomlist_room_new(PURPLE_ROOMLIST_ROOMTYPE_ROOM, args[1], NULL); purple_roomlist_room_add_field(irc->roomlist, room, args[1]); purple_roomlist_room_add_field(irc->roomlist, room, GINT_TO_POINTER(strtol(args[2], NULL, 10))); - purple_roomlist_room_add_field(irc->roomlist, room, args[3]); + topic = irc_mirc2txt(args[3]); + purple_roomlist_room_add_field(irc->roomlist, room, topic); + g_free(topic); purple_roomlist_room_add(irc->roomlist, room); } }
--- a/libpurple/protocols/irc/parse.c Mon May 28 03:18:02 2007 +0000 +++ b/libpurple/protocols/irc/parse.c Mon May 28 17:52:04 2007 +0000 @@ -402,6 +402,22 @@ switch (result[i]) { case '\002': case '\003': + /* Foreground color */ + if (isdigit(result[i + 1])) + i++; + if (isdigit(result[i + 1])) + i++; + /* Optional comma and background color */ + if (result[i + 1] == ',') { + i++; + if (isdigit(result[i + 1])) + i++; + if (isdigit(result[i + 1])) + i++; + } + /* Note that i still points to the last character + * of the color selection string. */ + continue; case '\007': case '\017': case '\026':