--- syncevolution-1.5.1+20160926+SE+8fccc44+unclean+SYSYNC+59b55aa/src/synthesis/src/sysync/mimedirprofile.cpp	2016-09-20 13:47:49.000000000 +0200
+++ ../syncevolution-1.5.1+20160926+SE+8fccc44+unclean+SYSYNC+59b55aa/src/synthesis/src/sysync/mimedirprofile.cpp	2016-10-02 00:21:19.632479707 +0200
@@ -1939,6 +1939,7 @@
         char hex[2];
         s=nextunfolded(p,aMimeMode,true);
         if (*s==0) break; // end of string
+        if (*s=='=') { p=s; continue; } // EKO workarround ==0D=0A=
         hex[0]=*s; // first digit
         s=nextunfolded(s,aMimeMode,true);
         if (*s==0) break; // end of string
@@ -1947,12 +1948,14 @@
           p=s; // continue with next char after second digit
           c=code; // decoded char
           if (c=='\x0D') {
-            c='\n'; // convert to newline
+            //c='\n'; // convert to newline - EKO: this creates a lot of mess
+            p = nextunfolded(p,aMimeMode,true); // move forward
             lastWasQPCR = true; // remember
+            continue; // EKO: start new iteration
           }
-          else if (c=='\x0A') {
+          if (c=='\x0A') {
             if (lastWasQPCR) {
-              // if last was CR, ignore LF (CR already has generated a newline)
+              // if last was CR, ignore LF (newline will be generated below)
               p = nextunfolded(p,aMimeMode,true); // but skip it for now.
               lastWasQPCR = false;
               continue; // ignore LF
@@ -1960,8 +1963,8 @@
             // LF not preceeded by CR is a newline
             c='\n'; // convert to newline
           }
-          else {
-            // neither CR nor LF
+          if (lastWasQPCR) {
+            c='\n'; // EKO: take care of CR on mac or similar
             lastWasQPCR = false;
           }
         }

