comparison src/protocols/irc/parse.c @ 6754:47e49e3c00f4

[gaim-migrate @ 7286] some sort of crazy underline committer: Tailor Script <tailor@pidgin.im>
author Ethan Blanton <elb@pidgin.im>
date Fri, 05 Sep 2003 16:53:18 +0000
parents 37af5dea14d1
children 91df6a6e6567
comparison
equal deleted inserted replaced
6753:c3d8e8190d77 6754:47e49e3c00f4
174 char *irc_mirc2html(const char *string) 174 char *irc_mirc2html(const char *string)
175 { 175 {
176 const char *cur, *end; 176 const char *cur, *end;
177 char fg[3] = "\0\0", bg[3] = "\0\0"; 177 char fg[3] = "\0\0", bg[3] = "\0\0";
178 int fgnum, bgnum; 178 int fgnum, bgnum;
179 int font = 0, bold = 0; 179 int font = 0, bold = 0, underline = 0;
180 GString *decoded = g_string_sized_new(strlen(string)); 180 GString *decoded = g_string_sized_new(strlen(string));
181 181
182 cur = string; 182 cur = string;
183 do { 183 do {
184 end = strpbrk(cur, "\002\003\007\017\026"); 184 end = strpbrk(cur, "\002\003\007\017\026\037");
185 185
186 decoded = g_string_append_len(decoded, cur, end ? end - cur : strlen(cur)); 186 decoded = g_string_append_len(decoded, cur, end ? end - cur : strlen(cur));
187 cur = end ? end : cur + strlen(cur); 187 cur = end ? end : cur + strlen(cur);
188 188
189 switch (*cur) { 189 switch (*cur) {
228 g_string_append_printf(decoded, " BACK=\"%s\"", irc_mirc_colors[bgnum]); 228 g_string_append_printf(decoded, " BACK=\"%s\"", irc_mirc_colors[bgnum]);
229 } 229 }
230 decoded = g_string_append_c(decoded, '>'); 230 decoded = g_string_append_c(decoded, '>');
231 } 231 }
232 break; 232 break;
233 case '\037':
234 cur++;
235 if (!underline) {
236 decoded = g_string_append(decoded, "<U>");
237 underline = TRUE;
238 } else {
239 decoded = g_string_append(decoded, "</U>");
240 underline = TRUE;
241 }
242 break;
233 case '\007': 243 case '\007':
234 case '\026': 244 case '\026':
235 cur++; 245 cur++;
236 break; 246 break;
237 case '\017': 247 case '\017':
238 cur++; 248 cur++;
239 /* fallthrough */ 249 /* fallthrough */
240 case '\000': 250 case '\000':
241 if (bold) 251 if (bold)
242 decoded = g_string_append(decoded, "</BOLD>"); 252 decoded = g_string_append(decoded, "</B>");
253 if (underline)
254 decoded = g_string_append(decoded, "</U>");
243 if (font) 255 if (font)
244 decoded = g_string_append(decoded, "</FONT>"); 256 decoded = g_string_append(decoded, "</FONT>");
245 break; 257 break;
246 default: 258 default:
247 gaim_debug(GAIM_DEBUG_ERROR, "irc", "Unexpected mIRC formatting character %d\n", *cur); 259 gaim_debug(GAIM_DEBUG_ERROR, "irc", "Unexpected mIRC formatting character %d\n", *cur);
255 { 267 {
256 GaimConnection *gc; 268 GaimConnection *gc;
257 const char *cur = msg + 1; 269 const char *cur = msg + 1;
258 char *buf, *ctcp; 270 char *buf, *ctcp;
259 time_t timestamp; 271 time_t timestamp;
272
273 /* Note that this is NOT correct w.r.t. multiple CTCPs in one
274 * message and low-level quoting ... but if you want that crap,
275 * use a real IRC client. */
260 276
261 if (msg[0] != '\001' || msg[strlen(msg) - 1] != '\001') 277 if (msg[0] != '\001' || msg[strlen(msg) - 1] != '\001')
262 return g_strdup(msg); 278 return g_strdup(msg);
263 279
264 if (!strncmp(cur, "ACTION ", 7)) { 280 if (!strncmp(cur, "ACTION ", 7)) {