# HG changeset patch # User Mark Doliner # Date 1059252044 0 # Node ID f14718d7082e717036ea6cf78a3b414e3ebdb878 # Parent bf63ddea431f53644d0b7a466972cc5ad2ac0672 [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 diff -r bf63ddea431f -r f14718d7082e plugins/docklet/docklet.c --- a/plugins/docklet/docklet.c Sat Jul 26 18:05:25 2003 +0000 +++ b/plugins/docklet/docklet.c Sat Jul 26 20:40:44 2003 +0000 @@ -54,7 +54,6 @@ GaimPlugin *handle = NULL; static struct docklet_ui_ops *ui_ops = NULL; static enum docklet_status status = offline; -static guint blinktimer = 0; #ifdef _WIN32 __declspec(dllimport) GSList *unread_message_queue; __declspec(dllimport) GSList *away_messages; @@ -264,7 +263,7 @@ /* and schedule the blinker function if messages are pending */ if (status == online_pending || status == away_pending) { - blinktimer = g_timeout_add(500, docklet_blink_icon, NULL); + g_timeout_add(500, docklet_blink_icon, &handle); } } @@ -440,9 +439,6 @@ static gboolean plugin_unload(GaimPlugin *plugin) { - if (blinktimer != 0) - g_source_remove(blinktimer); - if (ui_ops->destroy) ui_ops->destroy(); diff -r bf63ddea431f -r f14718d7082e src/protocols/oscar/oscar.c --- 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
*/ + 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; }