aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--driver.c2
-rw-r--r--fetchmail.h2
-rw-r--r--unmime.c8
4 files changed, 8 insertions, 5 deletions
diff --git a/NEWS b/NEWS
index edbebbb2..04548fcb 100644
--- a/NEWS
+++ b/NEWS
@@ -17,6 +17,7 @@
fetchmail-4.4.5 ():
* Make RPA logging use error() rather than stderr.
* Autoconfiguration support for NetBSD.
+* Henrik Storner's fix for a minor mimedecode bug.
There are 273 people on fetchmail-friends and 209 on fetchmail-announce.
diff --git a/driver.c b/driver.c
index 546c9609..dea10ba5 100644
--- a/driver.c
+++ b/driver.c
@@ -995,7 +995,7 @@ int num; /* index of message */
UnMimeHeader(headers);
}
/* Check for MIME headers indicating possible 8-bit data */
- mimemsg = MimeBodyType(headers);
+ mimemsg = MimeBodyType(headers, ctl->mimedecode);
/*
* If there is a Return-Path address on the message, this was
diff --git a/fetchmail.h b/fetchmail.h
index 891c2ec8..867bbad0 100644
--- a/fetchmail.h
+++ b/fetchmail.h
@@ -333,7 +333,7 @@ int from64tobits(char *, const char *);
#define MSG_IS_8BIT 0x02
#define MSG_NEEDS_DECODE 0x80
extern void UnMimeHeader(unsigned char *buf);
-extern int MimeBodyType(unsigned char *hdrs);
+extern int MimeBodyType(unsigned char *hdrs, int WantDecode);
extern int UnMimeBodyline(unsigned char **buf, int collapsedoubledot);
/* interface.c */
diff --git a/unmime.c b/unmime.c
index 26c41637..0f0dcf42 100644
--- a/unmime.c
+++ b/unmime.c
@@ -339,7 +339,7 @@ static char *GetBoundary(char *CntType)
*
* The return value is a bitmask.
*/
-int MimeBodyType(unsigned char *hdrs)
+int MimeBodyType(unsigned char *hdrs, int WantDecode)
{
unsigned char *NxtHdr = hdrs;
unsigned char *XferEnc, *XferEncOfs, *CntType, *MimeVer, *p;
@@ -440,7 +440,9 @@ int MimeBodyType(unsigned char *hdrs)
if (strcasecmp(XferEnc, "quoted-printable") == 0) {
CurrEncodingIsQP = 1;
BodyType = (MSG_IS_8BIT | MSG_NEEDS_DECODE);
- SetEncoding8bit(XferEncOfs);
+ if (WantDecode) {
+ SetEncoding8bit(XferEncOfs);
+ }
}
else if (strcasecmp(XferEnc, "7bit") == 0) {
CurrEncodingIsQP = 0;
@@ -643,7 +645,7 @@ int main(int argc, char *argv[])
DBG_FWRITE(buffer, strlen(buffer), 1, fd_orig);
UnMimeHeader(buffer);
- bodytype = MimeBodyType(buffer);
+ bodytype = MimeBodyType(buffer, 1);
i = strlen(buffer);
fwrite(buffer, i, 1, stdout);