diff options
Diffstat (limited to 'irc/bitlbee-otr/files/oscar-recode-patch')
-rw-r--r-- | irc/bitlbee-otr/files/oscar-recode-patch | 196 |
1 files changed, 0 insertions, 196 deletions
diff --git a/irc/bitlbee-otr/files/oscar-recode-patch b/irc/bitlbee-otr/files/oscar-recode-patch deleted file mode 100644 index f05dfd1549ae..000000000000 --- a/irc/bitlbee-otr/files/oscar-recode-patch +++ /dev/null @@ -1,196 +0,0 @@ ---- irc.c.orig 2006-06-24 17:00:43.000000000 +0300 -+++ irc.c 2006-11-15 13:56:12.000000000 +0200 -@@ -116,6 +116,7 @@ - set_add( irc, "buddy_sendbuffer", "false", set_eval_bool ); - set_add( irc, "buddy_sendbuffer_delay", "200", set_eval_int ); - set_add( irc, "charset", "iso8859-1", set_eval_charset ); -+ set_add( irc, "oscar_recode_charset", "iso8859-1", set_eval_oscar_recode_charset ); - set_add( irc, "debug", "false", set_eval_bool ); - set_add( irc, "default_target", "root", NULL ); - set_add( irc, "display_namechanges", "false", set_eval_bool ); ---- protocols/oscar/oscar.c.orig 2006-06-24 17:00:44.000000000 +0300 -+++ protocols/oscar/oscar.c 2006-11-16 13:47:10.000000000 +0200 -@@ -1029,7 +1029,10 @@ - return 1; - } - -+extern GSList *irc_connection_list; -+ - static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) { -+ char *src=""; - char *tmp = g_malloc(BUF_LONG + 1); - struct gaim_connection *gc = sess->aux_data; - int flags = 0; -@@ -1038,15 +1041,22 @@ - flags |= IM_FLAG_AWAY; - - if ((args->icbmflags & AIM_IMFLAGS_UNICODE) || (args->icbmflags & AIM_IMFLAGS_ISO_8859_1)) { -- char *src; - - if (args->icbmflags & AIM_IMFLAGS_UNICODE) - src = "UNICODEBIG"; - else -- src = "ISO8859-1"; -+ { -+ char *cs; -+ irc_t *irc = (irc_t*)irc_connection_list->data; -+ if( ( cs = set_getstr( irc, "oscar_recode_charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) ) -+ src = cs; -+ else -+ src = "iso88590-1"; -+ } - - /* Try to use iconv first to convert the message to UTF8 - which is what BitlBee expects */ - if (do_iconv(src, "UTF-8", args->msg, tmp, args->msglen, BUF_LONG) >= 0) { -+ //fprintf (stderr, "bitlbee: converted from %s to utf8!\n", src); - // Successfully converted! - } else if (args->icbmflags & AIM_IMFLAGS_UNICODE) { - int i; -@@ -1062,12 +1072,32 @@ - g_snprintf(tmp+strlen(tmp), BUF_LONG-strlen(tmp), "&#%04x;", uni); - } - } -+ //fprintf (stderr, "bitlbee: AIM_IMFLAGS_UNICODE, got %s!\n", tmp); - } else { -- g_snprintf(tmp, BUF_LONG, "%s", args->msg); -+ char *cs; -+ irc_t *irc = (irc_t*)irc_connection_list->data; -+ if( ( cs = set_getstr( irc, "oscar_recode_charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) ) -+ src = cs; -+ else -+ src = "iso88590-1"; -+ if (do_iconv(src, "UTF-8", args->msg, tmp, args->msglen, BUF_LONG) < 0) { -+ g_snprintf(tmp, BUF_LONG, "[1%s]%s", src, args->msg); -+ } -+ //fprintf (stderr, "bitlbee: not utf8, nor unicode, got %s!\n", tmp); - } -- } else -- g_snprintf(tmp, BUF_LONG, "%s", args->msg); -- -+ } else { -+ char *cs; -+ irc_t *irc = (irc_t*)irc_connection_list->data; -+ if( ( cs = set_getstr( irc, "oscar_recode_charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) ) -+ src = cs; -+ else -+ src = "iso88590-1"; -+ if (do_iconv(src, "UTF-8", args->msg, tmp, args->msglen, BUF_LONG) < 0) { -+ g_snprintf(tmp, BUF_LONG, "[2%s]%s", src, args->msg); -+ } -+ //fprintf (stderr, "bitlbee: unknown charset, got %s!\n", tmp); -+ } -+ - strip_linefeed(tmp); - serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL), -1); - g_free(tmp); -@@ -1163,12 +1193,23 @@ - switch (args->type) { - case 0x0001: { /* An almost-normal instant message. Mac ICQ sends this. It's peculiar. */ - char *uin, *message; -+ char *src = ""; -+ char *cs; -+ char *tmp = g_malloc(BUF_LONG + 1); -+ irc_t *irc = (irc_t*)irc_connection_list->data; -+ if( ( cs = set_getstr( irc, "oscar_recode_charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) ) -+ src = cs; -+ else -+ src = "iso88590-1"; - uin = g_strdup_printf("%u", args->uin); - message = g_strdup(args->msg); - strip_linefeed(message); -- serv_got_im(gc, uin, message, 0, time(NULL), -1); -+ if (do_iconv(src, "UTF-8", message, tmp, strlen (message), BUF_LONG) < 0) -+ tmp = message; -+ serv_got_im(gc, uin, tmp, 0, time(NULL), -1); - g_free(uin); - g_free(message); -+ g_free (tmp); - } break; - - case 0x0004: { /* Someone sent you a URL */ -@@ -1768,9 +1809,22 @@ - char sender[32]; - char *dialog_msg = g_strdup(msg->msg); - time_t t = get_time(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); -+ char *tmp = g_malloc(BUF_LONG + 1); -+ char *src = ""; -+ char *cs; -+ irc_t *irc = (irc_t*)irc_connection_list->data; -+ if( ( cs = set_getstr( irc, "oscar_recode_charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) ) -+ src = cs; -+ else -+ src = "iso88590-1"; - g_snprintf(sender, sizeof(sender), "%u", msg->sender); - strip_linefeed(dialog_msg); -- serv_got_im(gc, sender, dialog_msg, 0, t, -1); -+ if (do_iconv(src, "UTF-8", dialog_msg, tmp, strlen (msg->msg), BUF_LONG) < 0) -+ tmp = dialog_msg; -+ //fprintf (stderr, "bitlbee: offlinemsg, got %s\n", tmp); -+ serv_got_im(gc, sender, tmp, 0, t, -1); -+ if (dialog_msg != tmp) -+ g_free (tmp); - g_free(dialog_msg); - } break; - -@@ -1838,6 +1892,14 @@ - } else { - struct aim_sendimext_args args; - char *s; -+ char *cs; -+ char *src=""; -+ irc_t *irc = (irc_t*)irc_connection_list->data; -+ if( ( cs = set_getstr( irc, "oscar_recode_charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) ) -+ src = cs; -+ else -+ src = "iso88590-1"; -+ - - args.flags = AIM_IMFLAGS_ACK; - if (odata->icq) -@@ -1851,7 +1913,7 @@ - s = g_malloc(BUF_LONG); - /* Try if we can put it in an ISO8859-1 string first. - If we can't, fall back to UTF16. */ -- if ((ret = do_iconv("UTF-8", "ISO8859-1", message, s, len, BUF_LONG)) >= 0) { -+ if ((ret = do_iconv("UTF-8", src, message, s, len, BUF_LONG)) >= 0) { - args.flags |= AIM_IMFLAGS_ISO_8859_1; - len = ret; - } else if ((ret = do_iconv("UTF-8", "UNICODEBIG", message, s, len, BUF_LONG)) >= 0) { -@@ -1863,6 +1925,7 @@ - s = message; - } - } else { -+ //fprintf (stderr, "outgoing message is ascii!\n"); - s = message; - } - ---- util.c.orig 2006-06-24 17:01:00.000000000 +0300 -+++ util.c 2006-11-15 13:56:12.000000000 +0200 -@@ -453,3 +453,18 @@ - iconv_close( cd ); - return( value ); - } -+ -+char *set_eval_oscar_recode_charset( irc_t *irc, set_t *set, char *value ) -+{ -+ iconv_t cd; -+ -+ if ( g_strncasecmp( value, "none", 4 ) == 0 ) -+ return( value ); -+ -+ cd = iconv_open( "UTF-8", value ); -+ if( cd == (iconv_t) -1 ) -+ return( NULL ); -+ -+ iconv_close( cd ); -+ return( value ); -+} ---- util.h.orig 2006-06-24 17:01:00.000000000 +0300 -+++ util.h 2006-11-15 13:56:12.000000000 +0200 -@@ -46,5 +46,6 @@ - - G_MODULE_EXPORT signed int do_iconv( char *from_cs, char *to_cs, char *src, char *dst, size_t size, size_t maxbuf ); - char *set_eval_charset( irc_t *irc, set_t *set, char *value ); -+char *set_eval_oscar_recode_charset( irc_t *irc, set_t *set, char *value ); - - #endif |