[gmime: 5/24] Updated gmime-part encode() method to force 7bit and 8bit to qp if they contain from-lines
- From: Jeffrey Stedfast <fejj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gmime: 5/24] Updated gmime-part encode() method to force 7bit and 8bit to qp if they contain from-lines
- Date: Sat, 26 Aug 2017 13:20:10 +0000 (UTC)
commit 1a0b2abdf9629d95f738a245107466875b3603be
Author: Jeffrey Stedfast <jestedfa microsoft com>
Date: Mon Jul 10 14:55:20 2017 -0400
Updated gmime-part encode() method to force 7bit and 8bit to qp if they contain from-lines
gmime/gmime-part.c | 35 ++++++++++++++++++++++-------------
1 files changed, 22 insertions(+), 13 deletions(-)
---
diff --git a/gmime/gmime-part.c b/gmime/gmime-part.c
index 677bc98..ffa6c68 100644
--- a/gmime/gmime-part.c
+++ b/gmime/gmime-part.c
@@ -432,18 +432,6 @@ mime_part_encode (GMimeObject *object, GMimeEncodingConstraint constraint)
GMimeFilter *filter;
switch (part->encoding) {
- case GMIME_CONTENT_ENCODING_DEFAULT:
- /* Unspecified encoding, we need to figure out the
- * best encoding no matter what */
- break;
- case GMIME_CONTENT_ENCODING_7BIT:
- /* This encoding is always safe. */
- return;
- case GMIME_CONTENT_ENCODING_8BIT:
- /* This encoding is safe unless the constraint is 7bit. */
- if (constraint != GMIME_ENCODING_CONSTRAINT_7BIT)
- return;
- break;
case GMIME_CONTENT_ENCODING_BINARY:
/* This encoding is only safe if the constraint is binary. */
if (constraint == GMIME_ENCODING_CONSTRAINT_BINARY)
@@ -454,6 +442,8 @@ mime_part_encode (GMimeObject *object, GMimeEncodingConstraint constraint)
case GMIME_CONTENT_ENCODING_UUENCODE:
/* These encodings are always safe. */
return;
+ default:
+ break;
}
filter = g_mime_filter_best_new (GMIME_FILTER_BEST_ENCODING);
@@ -467,7 +457,26 @@ mime_part_encode (GMimeObject *object, GMimeEncodingConstraint constraint)
g_object_unref (stream);
encoding = g_mime_filter_best_encoding ((GMimeFilterBest *) filter, constraint);
- g_mime_part_set_content_encoding (part, encoding);
+
+ switch (part->encoding) {
+ case GMIME_CONTENT_ENCODING_DEFAULT:
+ g_mime_part_set_content_encoding (part, encoding);
+ break;
+ case GMIME_CONTENT_ENCODING_7BIT:
+ /* This encoding is generally safe, but we may need to encode From-lines. */
+ if (((GMimeFilterBest *) filter)->hadfrom)
+ g_mime_part_set_content_encoding (part, GMIME_ENCODING_QUOTED_PRINTABLE);
+ break;
+ case GMIME_CONTENT_ENCODING_8BIT:
+ if (constraint == GMIME_ENCODING_CONSTRAINT_7BIT)
+ g_mime_part_set_content_encoding (part, encoding);
+ else if (((GMimeFilterBest *) filter)->hadfrom)
+ g_mime_part_set_content_encoding (part, GMIME_ENCODING_QUOTED_PRINTABLE);
+ break;
+ default:
+ break;
+ }
+
g_object_unref (filter);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]