From 4136c55baf03d46ecc1e9a1a5bd3d9d81046e7a9 Mon Sep 17 00:00:00 2001 From: Colin Leroy Date: Thu, 14 Oct 2004 10:22:30 +0000 Subject: [PATCH] 2004-10-14 [colin] 0.9.12cvs126.2 * src/codeconv.c * src/textview.c Fix conv_unreadable_locale --- ChangeLog-gtk2.claws | 6 ++++++ PATCHSETS | 1 + configure.ac | 2 +- src/codeconv.c | 21 ++++++++++++++++++++- src/textview.c | 7 ++++--- 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/ChangeLog-gtk2.claws b/ChangeLog-gtk2.claws index b53d9084f..ea3009eed 100644 --- a/ChangeLog-gtk2.claws +++ b/ChangeLog-gtk2.claws @@ -1,3 +1,9 @@ +2004-10-14 [colin] 0.9.12cvs126.2 + + * src/codeconv.c + * src/textview.c + Fix conv_unreadable_locale + 2004-10-13 [colin] 0.9.12cvs126.1 * src/compose.c diff --git a/PATCHSETS b/PATCHSETS index 09ad7b24e..347773cb9 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -199,3 +199,4 @@ ( cvs diff -u -r 1.382.2.49 -r 1.382.2.50 src/compose.c; ) > 0.9.12cvs124.3.patchset ( cvs diff -u -r 1.53.2.6 -r 1.53.2.7 po/POTFILES.in; ) > 0.9.12cvs125.1.patchset ( cvs diff -u -r 1.382.2.50 -r 1.382.2.51 src/compose.c; ) > 0.9.12cvs126.1.patchset +( cvs diff -u -r 1.65.2.13 -r 1.65.2.14 src/codeconv.c; cvs diff -u -r 1.96.2.21 -r 1.96.2.22 src/textview.c; ) > 0.9.12cvs126.2.patchset diff --git a/configure.ac b/configure.ac index 52056a21c..275327b99 100644 --- a/configure.ac +++ b/configure.ac @@ -13,7 +13,7 @@ INTERFACE_AGE=0 BINARY_AGE=0 EXTRA_VERSION=126 EXTRA_RELEASE= -EXTRA_GTK2_VERSION=.1 +EXTRA_GTK2_VERSION=.2 if test \( $EXTRA_VERSION -eq 0 \) -o \( "x$EXTRA_RELEASE" != "x" \); then VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}${EXTRA_RELEASE}${EXTRA_GTK2_VERSION} diff --git a/src/codeconv.c b/src/codeconv.c index 33325b70e..12c8e9395 100644 --- a/src/codeconv.c +++ b/src/codeconv.c @@ -47,7 +47,7 @@ typedef enum JIS_AUXKANJI } JISState; -#define SUBST_CHAR '_' +#define SUBST_CHAR 0x5f; #define ESC '\033' #define iseuckanji(c) \ @@ -574,6 +574,22 @@ void conv_unreadable_latin(gchar *str) } } +void conv_unreadable_utf8(gchar *str) +{ + register guchar *p = str; + + while (*p != '\0') { + /* convert CR+LF -> LF */ + printf("p %c (%d)\n", *p, *p); + if (*p == '\r' && *(p + 1) == '\n') + memmove(p, p + 1, strlen(p)); + else if (((*p & 0xff) >= 0x7f && (*p & 0xff) <= 0x9f) + || *p == 0xfc) + *p = SUBST_CHAR; + p++; + } +} + void conv_unreadable_locale(gchar *str) { switch (conv_get_current_charset()) { @@ -597,6 +613,9 @@ void conv_unreadable_locale(gchar *str) case C_EUC_JP: conv_unreadable_eucjp(str); break; + case C_UTF_8: + conv_unreadable_utf8(str); + break; default: break; } diff --git a/src/textview.c b/src/textview.c index 47ad7b082..e23d2a326 100644 --- a/src/textview.c +++ b/src/textview.c @@ -1074,10 +1074,11 @@ static void textview_write_line(TextView *textview, const gchar *str, buffer = gtk_text_view_get_buffer(text); gtk_text_buffer_get_end_iter(buffer, &iter); - if (!conv) - strncpy2(buf, str, sizeof(buf)); - else if (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); -- 2.25.1