Mercurial > pidgin.yaz
diff src/protocols/oscar/oscar.c @ 6310:f14718d7082e
[gaim-migrate @ 6809]
Robot101 is a fancy bastard. Regarding my fix for "Make Gaim not crash when
you unload the system tray icon when there are messages queued," he writes:
The correct fix for this is to use &handle as the function data, I have
a function that removes callbacks with that data pointer that gets
called at unload.
Fancy.
In other news, we now send a BR tag instead of \n for newlines for AIM.
And for ICQ we send CR/LF instead of \n. This is more correct, and should
make messages with new lines sent from Gaim to Miranda show up correctly for
Miranda users.
ICQ Lite sends CR/LF to Gaim for newlines, but I would rather use a BR
tag, and it seems to work with no problems.
In still other news, de purk und beans mit sauerkrauten.
In yet still other news, I don't have anything else to add.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sat, 26 Jul 2003 20:40:44 +0000 |
parents | a21cf07cd8e1 |
children | 96196cfb132e |
line wrap: on
line diff
--- a/src/protocols/oscar/oscar.c Sat Jul 26 18:05:25 2003 +0000 +++ b/src/protocols/oscar/oscar.c Sat Jul 26 20:40:44 2003 +0000 @@ -4255,6 +4255,7 @@ int ret = 0; GError *err = NULL; const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc)); + char *tmpmsg; if (dim && dim->connected) { /* If we're directly connected, send a direct IM */ @@ -4329,13 +4330,19 @@ args.destsn = name; - len = strlen(message); - args.flags |= oscar_encoding_check(message); + /* For ICQ send newlines as CR/LF, for AIM send newlines as <BR> */ + if (isdigit(name[0])) + tmpmsg = add_cr(message); + else + tmpmsg = strdup_withhtml(message); + len = strlen(tmpmsg); + + args.flags |= oscar_encoding_check(tmpmsg); if (args.flags & AIM_IMFLAGS_UNICODE) { gaim_debug(GAIM_DEBUG_INFO, "oscar", "Sending Unicode IM\n"); args.charset = 0x0002; args.charsubset = 0x0000; - args.msg = g_convert(message, len, "UCS-2BE", "UTF-8", NULL, &len, &err); + args.msg = g_convert(tmpmsg, len, "UCS-2BE", "UTF-8", NULL, &len, &err); if (err) { gaim_debug(GAIM_DEBUG_ERROR, "oscar", "Error converting a unicode message: %s\n", err->message); @@ -4350,16 +4357,16 @@ "Sending ISO-8859-1 IM\n"); args.charset = 0x0003; args.charsubset = 0x0000; - args.msg = g_convert(message, len, "ISO-8859-1", "UTF-8", NULL, &len, &err); + args.msg = g_convert(tmpmsg, len, "ISO-8859-1", "UTF-8", NULL, &len, &err); if (err) { gaim_debug(GAIM_DEBUG_ERROR, "oscar", "conversion error: %s\n", err->message); gaim_debug(GAIM_DEBUG_ERROR, "oscar", "Someone tell Ethan his 8859-1 detection is wrong\n"); args.flags ^= AIM_IMFLAGS_ISO_8859_1 | AIM_IMFLAGS_UNICODE; - len = strlen(message); + len = strlen(tmpmsg); g_error_free(err); - args.msg = g_convert(message, len, "UCS-2BE", "UTF8", NULL, &len, &err); + args.msg = g_convert(tmpmsg, len, "UCS-2BE", "UTF8", NULL, &len, &err); if (err) { gaim_debug(GAIM_DEBUG_ERROR, "oscar", "Error in unicode fallback: %s\n", err->message); @@ -4369,15 +4376,18 @@ } else { args.charset = 0x0000; args.charsubset = 0x0000; - args.msg = message; + args.msg = tmpmsg; } args.msglen = len; ret = aim_im_sendch1_ext(od->sess, &args); } + g_free(tmpmsg); + if (ret >= 0) return 1; + return ret; }