]> err.no Git - sope/commitdiff
minor code cleanups in message generator
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 24 Mar 2005 16:40:18 +0000 (16:40 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 24 Mar 2005 16:40:18 +0000 (16:40 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@696 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-mime/ChangeLog
sope-mime/NGMail/ChangeLog
sope-mime/NGMail/NGMimeMessageGenerator.m
sope-mime/Version

index ded5fc96390b63dcf6e8b940e59b13466ba64d84..2cfeee07f14bc05cad880cecce6d707d0541dd98 100644 (file)
@@ -1,3 +1,7 @@
+2005-03-24  Helge Hess  <helge.hess@skyrix.com>
+
+       * NGMime: minor code cleanups (v4.5.218)
+
 2005-03-05  Helge Hess  <helge.hess@opengroupware.org>
 
        * NGMime: fixed an issue with incorrect header field termination
index 009fae086b93a18f77120da5214d84f4354b3bf1..966484519a5dae21c417edc48b28eb7d5b3cef0a 100644 (file)
@@ -1,3 +1,7 @@
+2005-03-24  Helge Hess  <helge.hess@skyrix.com>
+       
+       * NGMimeMessageGenerator.m: minor code cleanups
+       
 2005-01-30  Helge Hess  <helge.hess@opengroupware.org>
 
        * NGMimeMessageGenerator.m: fixed a format bug in an error log which
index 415b34c309b5396e5b7653671bb59ea31f82b052..50820cf04c4405d0075acbd3210ea0bb464edf5b 100644 (file)
@@ -45,68 +45,79 @@ static BOOL debugOn = NO;
 
 /* header field specifics */
 
-- (NSData *)generateDataForHeaderField:(NSString *)_headerField
-  value:(id)_value
-{
-  NSData *data = nil;
+- (id)_escapeHeaderFieldValue:(NSData *)_data {
+  const char   *bytes  = NULL;
+  unsigned int length  = 0;
+  unsigned int desLen  = 0;
+  char         *des    = NULL;
+  unsigned int cnt;
+  BOOL         doEnc;
+  NSString     *str;
 
-  data = [super generateDataForHeaderField:_headerField
-                value:_value];
-  {
-    const char   *bytes  = NULL;
-    unsigned int length  = 0;
-    unsigned int desLen  = 0;
-    char         *des    = NULL;
-    unsigned int cnt     = 0;
-    BOOL         doEnc   = NO;
-    NSString     *str;
+  // TODO: this s***s big time!
 
 #if APPLE_Foundation_LIBRARY || NeXT_Foundation_LIBRARY
-    str = [[NSString alloc] initWithData:data
-                            encoding:NSISOLatin1StringEncoding];
+  str = [[NSString alloc] initWithData:_data
+                          encoding:NSISOLatin1StringEncoding];
 #else
-    str = [[NSString alloc] initWithData:data
-                            encoding:NSISOLatin9StringEncoding];
+  str = [[NSString alloc] initWithData:_data
+                          encoding:NSISOLatin9StringEncoding];
 #endif
-    str = [str autorelease];
-    
-    bytes  = [str cString];
-    length = [str cStringLength];
-
-    while (cnt < length) {
-      if ((unsigned char)bytes[cnt] > 127) {
-        doEnc = YES;
-        break;
-      }
-      cnt++;
+  str = [str autorelease];
+  
+  bytes  = [str cString];
+  length = [str cStringLength];
+  
+  /* check whether we need to encode */
+  
+  for (cnt = 0, doEnc = NO; cnt < length; cnt++) {
+    if ((unsigned char)bytes[cnt] > 127) {
+      doEnc = YES;
+      break;
     }
-    if (doEnc) {
-      char        iso[]     = "=?iso-8859-15?q?";
-      unsigned    isoLen    = 16;
-      char        isoEnd[]  = "?=";
-      unsigned    isoEndLen = 2;
+  }
+  
+  if (!doEnc)
+    return _data;
+  
+  /* encode quoted printable */
+  {
+    char        iso[]     = "=?iso-8859-15?q?";
+    unsigned    isoLen    = 16;
+    char        isoEnd[]  = "?=";
+    unsigned    isoEndLen = 2;
+      
+    desLen = length * 3 + 20;
       
-      desLen = length * 3 + 20;
+    des = calloc(desLen + 2, sizeof(char));
       
-      des = calloc(desLen + 2, sizeof(char));
+    // memcpy(des, bytes, cnt);
+    memcpy(des, iso, isoLen);
+    desLen = NGEncodeQuotedPrintableMime(bytes, length,
+                                         des + isoLen, desLen - isoLen);
+    if ((int)desLen != -1) {
+      memcpy(des + isoLen + desLen, isoEnd, isoEndLen);
       
-      // memcpy(des, bytes, cnt);
-      memcpy(des, iso, isoLen);
-      desLen = NGEncodeQuotedPrintableMime(bytes, length,
-                                           des + isoLen, desLen - isoLen);
-      if ((int)desLen != -1) {
-        memcpy(des + isoLen + desLen, isoEnd, isoEndLen);
-        
-        data = [NSData dataWithBytesNoCopy:des
-                      length:(isoLen + desLen + isoEndLen)];
-      }
-      else {
-        NSLog(@"WARNING: An error occour during quoted-printable decoding");
-        if (des != NULL) free(des);
-      }
+      return [NSData dataWithBytesNoCopy:des
+                     length:(isoLen + desLen + isoEndLen)];
+    }
+    else {
+      [self logWithFormat:
+              @"WARNING: An error occour during quoted-printable decoding"];
+      if (des != NULL) free(des);
+      return _data;
     }
   }
-  return data;
+}
+
+- (NSData *)generateDataForHeaderField:(NSString *)_hf value:(id)_value {
+  NSData *data;
+  
+  // TODO: properly deal with header field values, add proper quoting
+  //       prior passing the value up?
+  
+  data = [super generateDataForHeaderField:_hf value:_value];
+  return [self _escapeHeaderFieldValue:data];
 }
 
 
index 981f7bf8bd9684a0f21cfe58289a61daa3dc1154..f805eb4df47283f510103b26b07a411966b34ea7 100644 (file)
@@ -2,7 +2,7 @@
 
 MAJOR_VERSION:=4
 MINOR_VERSION:=5
-SUBMINOR_VERSION:=217
+SUBMINOR_VERSION:=218
 
 # v4.5.214 requires libNGExtensions v4.5.146
 # v4.2.149 requires libNGStreams    v4.2.34