From: Paul Mangan Date: Tue, 4 Feb 2003 08:55:21 +0000 (+0000) Subject: sync with 0.8.9cvs6 X-Git-Tag: rel_0_8_10~26 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=fcd47e38dcbeff2ca3e024b3de73422754e1ae12 sync with 0.8.9cvs6 --- diff --git a/ChangeLog b/ChangeLog index b664c79f3..a39a6baab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2003-02-03 + + * src/textview.c: textview_write_line(): don't convert if conv is + NULL. + +2003-02-03 + + * src/codeconv.[ch]: + renamed conv_guess_encoding() to conv_guess_ja_encoding(). + conv_localetodisp(): new. It removes unreadable characters from + (assumed) current locale string. + conv_codeset_strdup(): convert into ISO-8859-1 if dest_code is + NULL and current locale encoding is US-ASCII. + conv_get_code_conv_func(): return conv_ustodisp if US-ASCII is + specified for destination charset. + * src/textview.c: textview_write_line(): use conv_localetodisp() + instead of strncpy2() if conversion failed. + 2003-01-31 * src/codeconv.c: conv_iconv_strdup() diff --git a/ChangeLog.claws b/ChangeLog.claws index b3f2cbdb0..7f7a18e81 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,8 @@ +2003-02-04 [paul] 0.8.9claws36 + + * sync with 0.8.9cvs6 + see ChangeLog 2003-02-03 + 2003-02-04 [paul] 0.8.9claws35 * po/pt_BR.po diff --git a/ChangeLog.jp b/ChangeLog.jp index eee8c2b54..00f68fcc6 100644 --- a/ChangeLog.jp +++ b/ChangeLog.jp @@ -1,3 +1,21 @@ +2003-02-03 + + * src/textview.c: textview_write_line(): conv ¤¬ NULL ¤Î¾ì¹ç¤Ï + ÊÑ´¹¤·¤Ê¤¤¤è¤¦¤Ë¤·¤¿¡£ + +2003-02-03 + + * src/codeconv.[ch]: + conv_guess_encoding() ¤ò conv_guess_ja_encoding() ¤ËÊѹ¹¡£ + conv_localetodisp(): ¿·µ¬¡£(²¾Äꤵ¤ì¤¿)¸½ºß¤Î locale ʸ»úÎ󤫤é + ɽ¼¨ÉԲĤÊʸ»ú¤òºï½ü¤¹¤ë¡£ + conv_codeset_strdup(): dest_code ¤¬ NULL ¤Ç¤«¤Ä¸½ºß¤Î locale + ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤¬ US-ASCII ¤Ê¤é¤Ð ISO-8859-1 ¤ËÊÑ´¹¤¹¤ë¤è¤¦¤Ë¤·¤¿¡£ + conv_get_code_conv_func(): ÊÑ´¹Àèʸ»ú¥³¡¼¥É¤Ë US-ASCII ¤¬»ØÄꤵ¤ì + ¤Æ¤¤¤ì¤Ð conv_ustodisp ¤òÊÖ¤¹¤è¤¦¤Ë¤·¤¿¡£ + * src/textview.c: textview_write_line(): ÊÑ´¹¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ï + strncpy2() ¤ÎÂå¤ï¤ê¤Ë conv_localetodisp() ¤ò»ÈÍÑ¡£ + 2003-01-31 * src/codeconv.c: conv_iconv_strdup() diff --git a/configure.ac b/configure.ac index 9caf012f4..277f6f4b2 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=8 MICRO_VERSION=9 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=claws35 +EXTRA_VERSION=claws36 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION dnl set $target diff --git a/src/codeconv.c b/src/codeconv.c index f6b3d4185..4d4a0a1b4 100644 --- a/src/codeconv.c +++ b/src/codeconv.c @@ -285,7 +285,7 @@ void conv_sjistoeuc(gchar *outbuf, gint outlen, const gchar *inbuf) void conv_anytoeuc(gchar *outbuf, gint outlen, const gchar *inbuf) { - switch (conv_guess_encoding(inbuf)) { + switch (conv_guess_ja_encoding(inbuf)) { case C_ISO_2022_JP: conv_jistoeuc(outbuf, outlen, inbuf); break; @@ -300,7 +300,7 @@ void conv_anytoeuc(gchar *outbuf, gint outlen, const gchar *inbuf) void conv_anytojis(gchar *outbuf, gint outlen, const gchar *inbuf) { - switch (conv_guess_encoding(inbuf)) { + switch (conv_guess_ja_encoding(inbuf)) { case C_EUC_JP: conv_euctojis(outbuf, outlen, inbuf); break; @@ -528,7 +528,7 @@ void conv_mb_alnum(gchar *str) } } -CharSet conv_guess_encoding(const gchar *str) +CharSet conv_guess_ja_encoding(const gchar *str) { const guchar *p = str; CharSet guessed = C_US_ASCII; @@ -611,6 +611,33 @@ void conv_noconv(gchar *outbuf, gint outlen, const gchar *inbuf) strncpy2(outbuf, inbuf, outlen); } +void conv_localetodisp(gchar *outbuf, gint outlen, const gchar *inbuf) +{ + strncpy2(outbuf, inbuf, outlen); + + switch (conv_get_current_charset()) { + case C_US_ASCII: + case C_ISO_8859_1: + case C_ISO_8859_2: + case C_ISO_8859_4: + case C_ISO_8859_5: + case C_ISO_8859_7: + case C_ISO_8859_8: + case C_ISO_8859_9: + case C_ISO_8859_11: + case C_ISO_8859_13: + case C_ISO_8859_15: + conv_unreadable_latin(outbuf); + break; + case C_EUC_JP: + conv_unreadable_eucjp(outbuf); + break; + default: + conv_unreadable_8bit(outbuf); + break; + } +} + CodeConverter *conv_code_converter_new(const gchar *charset) { CodeConverter *conv; @@ -673,8 +700,11 @@ gchar *conv_codeset_strdup(const gchar *inbuf, #if HAVE_ICONV if (!src_code) src_code = conv_get_outgoing_charset_str(); - if (!dest_code) + if (!dest_code) { dest_code = conv_get_current_charset_str(); + if (!strcasecmp(dest_code, CS_US_ASCII)) + dest_code = CS_ISO_8859_1; + } /* don't convert if current codeset is US-ASCII */ if (!strcasecmp(dest_code, CS_US_ASCII)) @@ -712,6 +742,9 @@ CodeConvFunc conv_get_code_conv_func(const gchar *src_charset_str, dest_charset = conv_get_charset_from_str(dest_charset_str); + if (dest_charset == C_US_ASCII) + return conv_ustodisp; + switch (src_charset) { case C_ISO_2022_JP: case C_ISO_2022_JP_2: diff --git a/src/codeconv.h b/src/codeconv.h index 892b198d2..d7c0ee44d 100644 --- a/src/codeconv.h +++ b/src/codeconv.h @@ -119,7 +119,7 @@ void conv_unreadable_8bit(gchar *str); void conv_unreadable_latin(gchar *str); void conv_mb_alnum(gchar *str); -CharSet conv_guess_encoding(const gchar *str); +CharSet conv_guess_ja_encoding(const gchar *str); void conv_jistodisp (gchar *outbuf, gint outlen, const gchar *inbuf); void conv_sjistodisp (gchar *outbuf, gint outlen, const gchar *inbuf); @@ -128,6 +128,8 @@ void conv_ustodisp (gchar *outbuf, gint outlen, const gchar *inbuf); void conv_latintodisp(gchar *outbuf, gint outlen, const gchar *inbuf); void conv_noconv (gchar *outbuf, gint outlen, const gchar *inbuf); +void conv_localetodisp(gchar *outbuf, gint outlen, const gchar *inbuf); + CodeConverter *conv_code_converter_new (const gchar *charset); void conv_code_converter_destroy (CodeConverter *conv); gint conv_convert (CodeConverter *conv, diff --git a/src/textview.c b/src/textview.c index 5489d231b..f2ba57352 100644 --- a/src/textview.c +++ b/src/textview.c @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2002 Hiroyuki Yamamoto + * Copyright (C) 1999-2003 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -1186,8 +1186,10 @@ static void textview_write_line(TextView *textview, const gchar *str, return; } #endif - if (!conv || conv_convert(conv, buf, sizeof(buf), str) < 0) + if (!conv) strncpy2(buf, str, sizeof(buf)); + else if (conv_convert(conv, buf, sizeof(buf), str) < 0) + conv_localetodisp(buf, sizeof(buf), str); strcrchomp(buf); if (prefs_common.conv_mb_alnum) conv_mb_alnum(buf);