Subject: x-to-x charset translation patch w/ UTF-8 support for pine(Version 8k)

From: Bernhard Kaindl <[email-masked]>
Date: Wed, 7 Jan 2004 12:17:54 +0100

Hi,

It's now possible to view messages on UTF-8 terminals using pine 4.58
without enabling pass-control-characters-as-is.

The new patch which makes this possible is now at:

http://www.suse.de/~bk/pine/iconv/4.58/pine-iconv-8k.patch.gz

Further changes:

* If message items like To, From, Subject, or the mail Body have no fully
  RFC-compiant charset label, and there was already a charset recogized to
  convert some parts from, this charset is used again. This fixes the conversion
  of some spam mail which is often not composed in a fully RFC-compliant way.
* wrapping fixes for the gf_wrap filter and Writechar
* add help texts for the new config options added by the patch
* fix resolving the charset using iconv-aliases config option

A changelog is found in in pine4.58/doc/iconv.txt

A tiny patch to fix a case where the Date: line was empty(when an unquoted
non-UTF-8 character is included in Date:) is attached.

Just an observation:

- On a terminal like mlterm which supports bidirectional mode with UTF-8,
  you can get Hebrew display in with right-to-left display if using UTF-8.

You may need to add "iso-8859-8-i:iso-8859-8" to your iconv-aliases(which is a
config option added by the patch) to see some Hebrew mail converted to UTF-8.

I'll not send a mail on every update to this list, so if you want to be
notified of updates, send me a mail to notify you.

You can also look at http://www.suse.de/~bk/pine/iconv/ for newer versions.
--
Bernhard Kaindl
PS: More info on the iconv patch which also adds UTF-8 support for
message view and editing: http://www.suse.de/~bk/pine/iconv/FAQ.html

--- pine4.58/pine/mailview.c	2004-01-06 15:52:19.000000000 +0100
+++ pine4.58/pine/mailview.c	2004-01-06 23:55:16.000000000 +0100
@@ -5684,9 +5743,8 @@
 
     if((which & FE_DATE) && e->date) {
 	q = "Date: ";
-	sprintf(buftmp, "%.200s", e->date);
 	p2 = (char *)rfc1522_decode((unsigned char *) tmp_20k_buf,
-				    SIZEOF_20KBUF, buftmp, NULL);
+				    SIZEOF_20KBUF, e->date, NULL);
 	gf_puts(q, pc);
 	format_env_puts(p2, pc);
 	gf_puts(NEWLINE, pc);