# HG changeset patch # User Eric Warmenhoven # Date 1008978401 0 # Node ID 152d726312b2d8ebf5789ff7117c5451798b2048 # Parent 4790fb1272a1d8f61bf5df209ec2f877f3f8bc6a [gaim-migrate @ 2925] eh committer: Tailor Script diff -r 4790fb1272a1 -r 152d726312b2 src/conversation.c --- a/src/conversation.c Fri Dec 21 23:27:48 2001 +0000 +++ b/src/conversation.c Fri Dec 21 23:46:41 2001 +0000 @@ -1151,6 +1151,43 @@ g_free(s); } +static char *escape_html(char *w, int *l) +{ + int c = 0; + char *r; + int i, x = 0; + if (*l == -1) { + *l = strlen(w); + x = 1; + } + r = g_malloc(*l * 5 + 1); + + for (i = 0; i < *l; i++) { + if (w[i] == '<') { + r[c++] = '&'; + r[c++] = 'l'; + r[c++] = 't'; + r[c++] = ';'; + } else if (w[i] == '&') { + r[c++] = '&'; + r[c++] = 'a'; + r[c++] = 'm'; + r[c++] = 'p'; + r[c++] = ';'; + } else { + r[c++] = w[i]; + } + } + r[c] = 0; + + r = g_realloc(r, c + 1); + if (x) + *l = -1; + else + *l = c; + return r; +} + static char *html_logize(char *p) { @@ -1555,6 +1592,10 @@ g_snprintf(buf, BUF_LONG, "%s
", what); gtk_imhtml_append_text(GTK_IMHTML(c->text), buf, -1, 0); } else { + if (c->gc->flags & OPT_CONN_HTML) + what = g_memdup(what, length); + else + what = escape_html(what, &length); if (flags & WFLAG_WHISPER) { /* if we're whispering, it's not an autoresponse */ if (meify(what, length)) { @@ -1661,6 +1702,8 @@ g_free(t2); g_free(nm); } + + g_free(what); } if ((c->is_chat && (chat_options & OPT_CHAT_POPUP)) || diff -r 4790fb1272a1 -r 152d726312b2 src/protocols/irc/irc.c --- a/src/protocols/irc/irc.c Fri Dec 21 23:27:48 2001 +0000 +++ b/src/protocols/irc/irc.c Fri Dec 21 23:46:41 2001 +0000 @@ -1073,6 +1073,8 @@ struct irc_data *idata = gc->proto_data = g_new0(struct irc_data, 1); g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", gc->username); + gc->flags = OPT_CONN_HTML; /* this is bad. the reason for this is gtkimhtml doesn't + understand the xchat escapes. so we translate. */ g_snprintf(buf, sizeof(buf), "Signon: %s", gc->username); set_login_progress(gc, 2, buf); diff -r 4790fb1272a1 -r 152d726312b2 src/protocols/yahoo/yahoo.c --- a/src/protocols/yahoo/yahoo.c Fri Dec 21 23:27:48 2001 +0000 +++ b/src/protocols/yahoo/yahoo.c Fri Dec 21 23:46:41 2001 +0000 @@ -707,6 +707,8 @@ struct gaim_connection *gc = new_gaim_conn(user); struct yahoo_data *yd = gc->proto_data = g_new0(struct yahoo_data, 1); + gc->flags = OPT_CONN_HTML; /* it does to an extent.... */ + set_login_progress(gc, 1, "Connecting"); yd->fd = -1;