Mercurial > pidgin
changeset 2219:20a4d5da0b95
[gaim-migrate @ 2229]
thanks to Ryan Speed for pointing this out. I hope this doesn't break things. I'm sure Ryan'll let me know ;)
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Thu, 06 Sep 2001 01:37:51 +0000 |
parents | 6d5f7cbf1882 |
children | 8b7ba25a7ece |
files | src/protocols/msn/msn.c |
diffstat | 1 files changed, 22 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/protocols/msn/msn.c Thu Sep 06 00:27:11 2001 +0000 +++ b/src/protocols/msn/msn.c Thu Sep 06 01:37:51 2001 +0000 @@ -112,6 +112,25 @@ return buf; } +static char *url_encode(const char *msg) +{ + static char buf[MSN_BUF_LEN]; + int i, j = 0; + + bzero(buf, sizeof(buf)); + for (i = 0; i < strlen(msg); i++) { + if (isalnum(msg[i])) + buf[j++] = msg[i]; + else { + sprintf(buf + j, "%%%02x", (unsigned char)msg[i]); + j += 3; + } + } + buf[j] = 0; + + return buf; +} + static char *handle_errcode(char *buf, gboolean show) { int errcode; @@ -811,7 +830,7 @@ GET_NEXT(tmp); GET_NEXT(tmp); GET_NEXT(tmp); - friend = tmp; + friend = url_decode(tmp); g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", friend); } else if (!g_strncasecmp(buf, "REM", 3)) { @@ -998,6 +1017,7 @@ GET_NEXT(tmp); friend = tmp; GET_NEXT(tmp); + friend = url_decode(friend); /* so here, we're either getting the challenge or the OK */ if (!g_strcasecmp(resp, "OK")) { @@ -1399,7 +1419,7 @@ struct msn_data *md = gc->proto_data; char buf[MSN_BUF_LEN]; - g_snprintf(buf, sizeof(buf), "REA %d %s %s\n", ++md->trId, gc->username, entry); + g_snprintf(buf, sizeof(buf), "REA %d %s %s\n", ++md->trId, gc->username, url_encode(entry)); if (msn_write(md->fd, buf, strlen(buf)) < 0) { hide_login_progress(gc, "Write error"); signoff(gc);