]> err.no Git - sope/commitdiff
minor fixes
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Fri, 29 Oct 2004 16:24:19 +0000 (16:24 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Fri, 29 Oct 2004 16:24:19 +0000 (16:24 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@325 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-mime/ChangeLog
sope-mime/NGMail/ChangeLog
sope-mime/NGMail/NGMimeMessageGenerator.h
sope-mime/NGMail/NGMimeMessageGenerator.m
sope-mime/NGMail/NGSendMail.h
sope-mime/NGMail/NGSendMail.m
sope-mime/NGMime/NGMimeFileData.h
sope-mime/Version

index 89d2eb4aa040f368c81161f8600970b607a0ec17..be44cf2c8731be1888e28d2a4cb5a100b06d00e1 100644 (file)
@@ -1,3 +1,7 @@
+2004-10-29  Helge Hess  <helge.hess@skyrix.com>
+
+       * NGMime: minor cleanups (v4.3.195)
+
 2004-10-28  Helge Hess  <helge.hess@skyrix.com>
 
        * NGImap4: added a constructor to NGImap4Envelope (v4.3.194)
index f8ccafd742e4d4435dad3f86925428365db79639..710a3002cc39aa308ca2b6164887b5b1a1238204 100644 (file)
@@ -1,3 +1,9 @@
+2004-10-29  Helge Hess  <helge.hess@skyrix.com>
+
+       * NGSendMail.m: use fwrite() to write to pipe
+
+       * NGMimeMessageGenerator.m: minor code cleanups
+
 2004-10-27  Marcus Mueller  <znek@mulle-kybernetik.com>
 
        * NGMail.xcode: added NGSendMail.h
index bfc721118fcf64634f75f860f1ecf8713cb58853..ea4e333b17908af26839d71f62646a68e68757ab 100644 (file)
@@ -1,7 +1,7 @@
 /*
   Copyright (C) 2000-2004 SKYRIX Software AG
 
-  This file is part of OGo
+  This file is part of OpenGroupware.org.
 
   OGo is free software; you can redistribute it and/or modify it under
   the terms of the GNU Lesser General Public License as published by the
@@ -18,7 +18,6 @@
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id$
 
 #ifndef __NGMime_NGMimeMessageGenerator_H__
 #define __NGMime_NGMimeMessageGenerator_H__
index 6e61755faf726374f6ee164acb5171e8e125e819..ba65cbdc1891d0f3b1615decb318fe433579d3f5 100644 (file)
@@ -18,7 +18,6 @@
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id: NGMimeMessageGenerator.m 11 2004-08-20 19:20:03Z helge $
 
 #include "NGMimeMessageGenerator.h"
 #include "NGMimeMessage.h"
@@ -60,34 +59,33 @@ _base64Encoding(NGMimeBodyGenerator *self,
     type = [_part contentType];
     
     if ([[type type] isEqualToString:@"text"] == YES) {
+      NSUserDefaults *ud;
       BOOL use8bit;
 
-      use8bit = [[NSUserDefaults standardUserDefaults]
-                                 boolForKey:
-                                   @"Mail_Use_8bit_Encoding_For_Text"];
-
-      if (use8bit) {
+      ud      = [NSUserDefaults standardUserDefaults];
+      use8bit = [ud boolForKey:@"Mail_Use_8bit_Encoding_For_Text"];
+      
+      if (use8bit)
         transEnc = @"8bit";
-      }
       else {
         _data_   = [_data_ dataByEncodingQuotedPrintable];
         transEnc = @"quoted-printable";
       }
     }
     else {
+      NGMimeType *appOctet;
+      
       _data_   = [_data_ dataByEncodingBase64];
       transEnc = @"base64";
 
-      if (type == nil) {
-        [_addHeaders setObject:[NGMimeType mimeType:@"application"
-                                           subType:@"octet-stream"]
-                     forKey:@"content-type"];
-      }
+      appOctet = [NGMimeType mimeType:@"application" subType:@"octet-stream"];
+      if (type == nil)
+        [_addHeaders setObject:appOctet forKey:@"content-type"];
     }
   }
-  else { // no encoding
+  else /* no encoding */
     transEnc = @"7bit";
-  }
+  
   [_addHeaders setObject:transEnc forKey:@"content-transfer-encoding"];
   [_addHeaders setObject:[NSNumber numberWithInt:[_data_ length]]
                       forKey:@"content-length"];
@@ -149,8 +147,8 @@ _base64Encoding(NGMimeBodyGenerator *self,
       unsigned    isoEndLen = 2;
       
       desLen = length * 3 + 20;
-
-      des = NGMallocAtomic(sizeof(char) * desLen + 2);
+      
+      des = calloc(desLen + 2, sizeof(char));
       
       // memcpy(des, bytes, cnt);
       memcpy(des, iso, isoLen);
@@ -160,11 +158,11 @@ _base64Encoding(NGMimeBodyGenerator *self,
         memcpy(des + isoLen + desLen, isoEnd, isoEndLen);
         
         data = [NSData dataWithBytesNoCopy:des
-                         length:(isoLen + desLen + isoEndLen)];
+                      length:(isoLen + desLen + isoEndLen)];
       }
       else {
         NSLog(@"WARNING: An error occour during quoted-printable decoding");
-        if (des) NGFree(des);
+        if (des != NULL) free(des);
       }
     }
   }
@@ -172,49 +170,51 @@ _base64Encoding(NGMimeBodyGenerator *self,
 }
 
 
-/*
-  content-transfer-encoding
-*/
+/* content-transfer-encoding */
 
 - (id<NGMimeBodyGenerator>)defaultBodyGenerator {
-  id gen;
-
-  gen  = [[NGMimeMessageBodyGenerator allocWithZone:[self zone]] init];
+  NGMimeMessageBodyGenerator *gen;
+  
+  gen  = [[NGMimeMessageBodyGenerator alloc] init];
   [gen setUseMimeData:self->useMimeData];
   return gen;
 }
 
 - (id<NGMimeBodyGenerator>)generatorForBodyOfPart:(id<NGMimePart>)_part {
-  id<NGMimeBodyGenerator> bodyGen      = nil;
-  NGMimeType              *contentType = nil;
-  NSString                *type        = nil;
+  id<NGMimeBodyGenerator> bodyGen;
+  NGMimeType              *contentType;
+  NSString                *type;
+  Class generatorClass;
   
-  if (self->delegateRespondsTo.generatorGeneratorForBodyOfPart)
+  if (self->delegateRespondsTo.generatorGeneratorForBodyOfPart) {
     bodyGen = [self->delegate mimePartGenerator:self
                               generatorForBodyOfPart:self->part];
-
-  if (bodyGen)
-    return bodyGen;
-
-  contentType = [_part contentType];
-  if (contentType == nil) {
-    contentType = [self defaultContentTypeForPart:_part];
+  
+    if (bodyGen != nil)
+      return bodyGen;
   }
+  
+  if ((contentType = [_part contentType]) == nil)
+    contentType = [self defaultContentTypeForPart:_part];
+  
   if (contentType == nil) {
-    NSLog(@"WARNING: no content-type");
+    NSLog(@"WARNING(%s): missing content-type in part 0x%08X.", _part);
     return nil;
   }
+  
   type = [contentType type];
-  if ([type isEqualToString:NGMimeTypeMultipart]) {
-    bodyGen = [[[NGMimeMessageMultipartBodyGenerator alloc] init] autorelease];
-  }
-  else if ([type isEqualToString:NGMimeTypeText]) {
-    bodyGen = [[[NGMimeMessageTextBodyGenerator alloc] init] autorelease];
-  }
+
+  generatorClass = Nil;
+  if ([type isEqualToString:NGMimeTypeMultipart])
+    generatorClass = [NGMimeMessageMultipartBodyGenerator class];
+  else if ([type isEqualToString:NGMimeTypeText])
+    generatorClass = [NGMimeMessageTextBodyGenerator class];
   else if (([type isEqualToString:NGMimeTypeMessage]) &&
            [[contentType subType] isEqualToString:@"rfc822"]) {
-    bodyGen = [[[NGMimeMessageRfc822BodyGenerator alloc] init] autorelease];
+    generatorClass = [NGMimeMessageRfc822BodyGenerator class];
   }
+  
+  bodyGen = [[[generatorClass alloc] init] autorelease];
   [(id)bodyGen setUseMimeData:self->useMimeData];
   return bodyGen;
 }
index e4b5fb25305161825622d4584527587107aef5c1..55ca0e2e89bdf50aed02d516d24c158a0f3573e8 100644 (file)
@@ -19,8 +19,8 @@
   02111-1307, USA.
 */
 
-#ifndef __LSMail_NGSendMail_H__
-#define __LSMail_NGSendMail_H__
+#ifndef __NGMail_NGSendMail_H__
+#define __NGMail_NGSendMail_H__
 
 #import <Foundation/NSObject.h>
 #include <NGMime/NGPart.h>
@@ -64,4 +64,4 @@
 
 @end
 
-#endif /* __LSMail_NGSendMail_H__ */
+#endif /* __NGMail_NGSendMail_H__ */
index 2ab2102c7ba54a0606c0ef7c2749cc2294dc2646..aba5465ffda89213a5e1f8a549953dcd510cd5ef 100644 (file)
     [fs release]; fs = nil;
     return NO;
   }
+  
   result = YES;
   NS_DURING {
     int  read;
     
     read = (bufCnt > (fileLen - alreadyRead))
            ? fileLen - alreadyRead : bufCnt;
-        
-    while ((read = [fs readBytes:buffer count:read])) {
-        alreadyRead += read;
-
-        buffer[read] = '\0';
-
-        if (fputs(buffer, _fd) == EOF) {
+    
+    while ((read = [fs readBytes:buffer count:read]) != 0) {
+      int rc;
+      
+      alreadyRead += read;
+      
+      rc = fwrite(buffer, read, 1, _fd);
+      if (rc == 0) {
           fprintf(stderr, "%s: Failed to write %i bytes to process\n",
                   __PRETTY_FUNCTION__, alreadyRead);
           break;
-        }
-        if (alreadyRead == fileLen)
-          break;
+      }
+      if (alreadyRead == fileLen)
+       break;
     }
   }
   NS_HANDLER {
   
   written = fwrite((char *)[_data bytes], [_data length],
                   1, _fd);
-  if (written > 0)
+  if (written > 0) {
+    [self logWithFormat:@"wrote %d, length %d", written, [_data length]];
     return YES;
+  }
   
   [self logWithFormat:@"[2] Could not write mail to sendmail <%d>", errno];
   
index 1142314e8c7e26c7ee8b552928eefb4e770b9294..fbd61ca82f370effc6c676356ac33414b3ea53f2 100644 (file)
@@ -29,6 +29,8 @@
   
   TODO: explain. Somehow this is an object to save loading an NSData to RAM.
   
+  Note: the -initWithBytes:length: method creates a temporary file!
+  
   Checked in:
   - NGMimeBodyGenerator
   - NGMimeBodyPart
@@ -45,6 +47,7 @@
 }
 
 - (id)initWithPath:(NSString *)_path removeFile:(BOOL)_remove;
+- (id)initWithBytes:(const void *)_bytes length:(unsigned int)_length;
 
 /* operations */
 
index a1f50532ebf1d34862486870d3c976d2da3b0b53..030b1c17e79601147f31901509ef0483b85b8676 100644 (file)
@@ -2,6 +2,6 @@
 
 MAJOR_VERSION:=4
 MINOR_VERSION:=3
-SUBMINOR_VERSION:=194
+SUBMINOR_VERSION:=195
 
 # v4.2.149 requires libNGStreams v4.2.34