# HG changeset patch # User Ethan Blanton # Date 1062780798 0 # Node ID 47e49e3c00f44172beeee8f79ca482570a324867 # Parent c3d8e8190d7748111d931951e4f4b328d5d65a0a [gaim-migrate @ 7286] some sort of crazy underline committer: Tailor Script diff -r c3d8e8190d77 -r 47e49e3c00f4 src/protocols/irc/parse.c --- a/src/protocols/irc/parse.c Fri Sep 05 16:53:01 2003 +0000 +++ b/src/protocols/irc/parse.c Fri Sep 05 16:53:18 2003 +0000 @@ -176,12 +176,12 @@ const char *cur, *end; char fg[3] = "\0\0", bg[3] = "\0\0"; int fgnum, bgnum; - int font = 0, bold = 0; + int font = 0, bold = 0, underline = 0; GString *decoded = g_string_sized_new(strlen(string)); cur = string; do { - end = strpbrk(cur, "\002\003\007\017\026"); + end = strpbrk(cur, "\002\003\007\017\026\037"); decoded = g_string_append_len(decoded, cur, end ? end - cur : strlen(cur)); cur = end ? end : cur + strlen(cur); @@ -230,6 +230,16 @@ decoded = g_string_append_c(decoded, '>'); } break; + case '\037': + cur++; + if (!underline) { + decoded = g_string_append(decoded, ""); + underline = TRUE; + } else { + decoded = g_string_append(decoded, ""); + underline = TRUE; + } + break; case '\007': case '\026': cur++; @@ -239,7 +249,9 @@ /* fallthrough */ case '\000': if (bold) - decoded = g_string_append(decoded, ""); + decoded = g_string_append(decoded, ""); + if (underline) + decoded = g_string_append(decoded, ""); if (font) decoded = g_string_append(decoded, ""); break; @@ -258,6 +270,10 @@ char *buf, *ctcp; time_t timestamp; + /* Note that this is NOT correct w.r.t. multiple CTCPs in one + * message and low-level quoting ... but if you want that crap, + * use a real IRC client. */ + if (msg[0] != '\001' || msg[strlen(msg) - 1] != '\001') return g_strdup(msg);