Nmh-Attachment).
- The default Content-Transfer-Encoding for text parts is now 8bit.
- mhbuild(1) now supports a selectable Content-Transfer-Encoding
-- Added -[no]textcharset switches to mhshow(1). These only apply if
- nmh was configured with iconv(3) support. If -textcharset is not
- used, mhshow will convert, if necessary, the charset of text/plain
- content to match the user's locale setting.
+- If nmh was configured with iconv(3) support, mhshow will convert, if
+ necessary, the charset of text/plain content to match the user's
+ locale setting.
-----------------
OBSOLETE FEATURES
.RB [ \-pause " | " \-nopause ]
.RB [ \-form
.IR formfile ]
-.RB [ \-textcharset
-.I charset
-.RB "| " \-notextcharset ]
.RB [ \-rcache
.IR policy ]
.RB [ \-wcache
.B mhshow
was built with
.IR iconv (3),
-then all text/plain parts of the message(s) will be displayed
-using the character set of the current locale. This character
-set can be overridden with the
-.B \-textcharset
-switch. To convert text parts other than text/plain, or if
+then all text/plain parts of the message(s) will be displayed using
+the character set of the current locale. To convert text parts other
+than text/plain, or if
.B mhshow
was not built with
.IR iconv ,
.RB ` \-nocheck '
.RB ` \-form\ mhl.headers '
.RB ` \-pause '
-.RB ` \-notextcharset '
.RB ` \-rcache\ ask '
.RB ` \-noserialonly '
.RB ` \-wcache\ ask '
test_skip 'test-textcharset requires that nmh have been built with iconv'
fi
+LC_ALL=en_US.UTF-8; export LC_ALL
+
expected="$MH_TEST_DIR"/$$.expected
actual="$MH_TEST_DIR"/$$.actual
4 =F7 2 =3D 2
EOF
-# Check -notextcharset.
-cat >"$expected" <<EOF
-Date: Sun, 18 Dec 2005 00:52:39 +0100
-To: bar@example.edu
-From: foo@example.edu
-Subject: test display with charset conversion
-
-MIME-Version: 1.0
-
-EOF
-
-LC_ALL=C; export LC_ALL
-run_prog mhshow -textcharset UTF-8 -notextcharset -nopause last >"$actual" 2>&1
-check "$expected" "$actual"
-
-# Check -textcharset.
cat >"$expected" <<EOF
Date: Sun, 18 Dec 2005 00:52:39 +0100
To: bar@example.edu
4 รท 2 = 2
EOF
-run_prog mhshow -textcharset UTF-8 -nopause last >"$actual" 2>&1
-check "$expected" "$actual" 'keep first'
-
-# Check use of user's locale.
-LC_ALL=en_US.UTF-8; export LC_ALL
run_prog mhshow -nopause last >"$actual" 2>&1
check "$expected" "$actual"
X("form formfile", 0, FORMSW) \
X("part number", 0, PARTSW) \
X("type content", 0, TYPESW) \
- X("textcharset", 0, TEXTCHARSETSW) \
- X("notextcharset", 0, NTEXTCHARSETSW) \
X("rcache policy", 0, RCACHESW) \
X("wcache policy", 0, WCACHESW) \
X("version", 0, VERSIONSW) \
extern int pausesw;
extern int serialsw;
extern char *progsw;
-extern char *display_charset;
extern int nomore; /* flags for moreproc/header display */
extern char *formsw;
types[ntype++] = cp;
continue;
- case TEXTCHARSETSW:
- if (!(cp = *argp++) || *cp == '-')
- adios (NULL, "missing argument to %s", argp[-2]);
- display_charset = cp;
- continue;
-
- case NTEXTCHARSETSW:
- display_charset = NULL;
- continue;
-
case FILESW:
if (!(cp = *argp++) || (*cp == '-' && cp[1]))
adios (NULL, "missing argument to %s", argp[-2]);
int nolist = 0;
char *progsw = NULL;
-char *display_charset = NULL;
/* flags for moreproc/header display */
int nomore = 0;
some code rearrangement. And to make this really ugly,
only do it in mhshow, not mhfixmsg, mhn, or mhstore. */
if (convert_content_charset (ct, &file) != OK) {
- return NOTOK;
+ admonish (NULL, "unable to convert character set%s to %s",
+ ct->c_partno ? "of part " : "",
+ ct->c_partno ? ct->c_partno : "",
+ content_charset (ct));
}
}
static int
convert_content_charset (CT ct, char **file) {
- /* Convert character set if needed and if built with iconv. */
#ifdef HAVE_ICONV
- if (display_charset == NULL) {
- /* The user did not specify a display charset, so use
- current setting and see if the content will need to be
- converted. */
- char *charset = content_charset (ct);
-
- if (! check_charset (charset, strlen (charset))) {
- int unused = 0;
- if (convert_charset (ct, get_charset (), &unused) == 0) {
- *file = ct->c_cefile.ce_file;
- } else {
- return NOTOK;
- }
- }
- } else {
- /* The user requested display with a specific charset. */
+ /* Using current locale, see if the content needs to be converted. */
+
+ /* content_charset() cannot return NULL. */
+ char *charset = content_charset (ct);
+
+ if (! check_charset (charset, strlen (charset))) {
int unused = 0;
- if (convert_charset (ct, display_charset, &unused) == 0) {
+
+ if (convert_charset (ct, get_charset (), &unused) == 0) {
*file = ct->c_cefile.ce_file;
} else {
return NOTOK;