+2009-04-08 [colin] 3.7.1cvs42
+
+ * src/procmime.c
+ fix saving (but not displaying) of UTF-16
+ files
+
2009-04-08 [colin] 3.7.1cvs41
* src/gtk/manage_window.c
( cvs diff -u -r 1.100.2.67 -r 1.100.2.68 AUTHORS; cvs diff -u -r 1.654.2.3846 -r 1.654.2.3847 configure.ac; diff -u /dev/null po/id.po; cvs diff -u -r 1.1.2.55 -r 1.1.2.56 src/gtk/authors.h; cvs diff -u -r 1.1.2.19 -r 1.1.2.20 tools/claws.i18n.status.pl; ) > 3.7.1cvs39.patchset
( cvs diff -u -r 1.150.2.114 -r 1.150.2.115 src/procmsg.c; ) > 3.7.1cvs40.patchset
( cvs diff -u -r 1.1.4.8 -r 1.1.4.9 src/gtk/manage_window.c; ) > 3.7.1cvs41.patchset
+( cvs diff -u -r 1.49.2.129 -r 1.49.2.130 src/procmime.c; ) > 3.7.1cvs42.patchset
gboolean got_error = FALSE;
gboolean uncanonicalize = FALSE;
FILE *tmpfp = outfp;
+ gboolean null_bytes = FALSE;
if (mimeinfo->type == MIMETYPE_TEXT ||
mimeinfo->type == MIMETYPE_MESSAGE) {
decoder = base64_decoder_new();
while ((ftell(infp) < readend) && (fgets(buf, sizeof(buf), infp) != NULL)) {
len = base64_decoder_decode(decoder, buf, outbuf);
+ if (uncanonicalize == TRUE && strlen(outbuf) < len) {
+ uncanonicalize = FALSE;
+ null_bytes = TRUE;
+ }
if (len < 0 && !got_error) {
g_warning("Bad BASE64 content.\n");
if (fwrite(_("[Error decoding BASE64]\n"),
} else if (len >= 0) {
/* print out the error message only once
* per block */
- if (fwrite(outbuf, sizeof(gchar), len, tmpfp) < len)
- err = TRUE;
+ if (null_bytes) {
+ /* we won't uncanonicalize, output to outfp directly */
+ if (fwrite(outbuf, sizeof(gchar), len, outfp) < len)
+ err = TRUE;
+ } else {
+ if (fwrite(outbuf, sizeof(gchar), len, tmpfp) < len)
+ err = TRUE;
+ }
got_error = FALSE;
}
}