aboutsummaryrefslogtreecommitdiffstats
path: root/src/encoding.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding.cpp')
-rw-r--r--src/encoding.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/encoding.cpp b/src/encoding.cpp
index 4570237d..d2f1f23f 100644
--- a/src/encoding.cpp
+++ b/src/encoding.cpp
@@ -184,11 +184,24 @@ const encoding encoding::decideImpl
}
+bool encoding::shouldReencode() const
+{
+ if (m_name == encodingTypes::BASE64 ||
+ m_name == encodingTypes::QUOTED_PRINTABLE ||
+ m_name == encodingTypes::UUENCODE)
+ {
+ return false;
+ }
+
+ return true;
+}
+
+
const encoding encoding::decide
(ref <const contentHandler> data, const EncodingUsage usage)
{
// Do not re-encode data if it is already encoded
- if (data->isEncoded() && data->getEncoding() == encoding(encodingTypes::BASE64))
+ if (data->isEncoded() && !data->getEncoding().shouldReencode())
return data->getEncoding();
encoding enc;
@@ -220,7 +233,7 @@ const encoding encoding::decide(ref <const contentHandler> data,
const charset& chset, const EncodingUsage usage)
{
// Do not re-encode data if it is already encoded
- if (data->isEncoded() && data->getEncoding() == encoding(encodingTypes::BASE64))
+ if (data->isEncoded() && !data->getEncoding().shouldReencode())
return data->getEncoding();
if (usage == USAGE_TEXT)