Author: rfm
Date: Sat Jan 23 16:30:05 2016
New Revision: 39310

URL: http://svn.gna.org/viewcvs/gnustep?rev=39310&view=rev
Log:
quick hack to avoid splitting 'boundary' parameter values

Modified:
    libs/base/trunk/Source/Additions/GSMime.m

Modified: libs/base/trunk/Source/Additions/GSMime.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/Additions/GSMime.m?rev=39310&r1=39309&r2=39310&view=diff
==============================================================================
--- libs/base/trunk/Source/Additions/GSMime.m   (original)
+++ libs/base/trunk/Source/Additions/GSMime.m   Sat Jan 23 16:30:05 2016
@@ -4280,7 +4280,19 @@
          k = [k lowercaseString];
        }
       offset = appendBytes(md, offset, fold, ";", 1);
-      offset = appendBytes(md, offset, fold, " ", 1);
+
+      /* Crude heuristic ... if the length of the value will definitely be
+       * too long to fit on a line, fold right now.
+       */
+      if (fold > 0 && offset + [k length] > fold)
+        {
+          [md appendBytes: "\r\n " length: 3];
+          offset = 1;
+        }
+      else
+        {
+          offset = appendBytes(md, offset, fold, " ", 1);
+        }
       offset = appendString(md, offset, fold, k, &ok);
       if (ok == NO)
         {
@@ -4289,6 +4301,15 @@
             k, n, fold);
         }
       offset = appendBytes(md, offset, fold, "=", 1);
+
+      /* Crude heuristic ... if the length of the value will definitely be
+       * too long to fit on a line, fold right now.
+       */
+      if (fold > 0 && offset + [v length] > fold)
+        {
+          [md appendBytes: "\r\n " length: 3];
+          offset = 1;
+        }
       offset = appendString(md, offset, fold, v, &ok);
       if (ok == NO)
         {
@@ -4381,8 +4402,10 @@
       m = [[_GSMutableInsensitiveDictionary alloc] initWithCapacity: c];
       while ((k = [e nextObject]) != nil)
        {
-         [m setObject: [d objectForKey: k]
-               forKey: [headerClass makeToken: k preservingCase: YES]];
+          NSString      *v = [d objectForKey: k];
+
+          k = [headerClass makeToken: k preservingCase: YES];
+         [m setObject: v forKey: k];
        }
     }
   DESTROY(params);


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to