]> err.no Git - sope/commitdiff
fixed gcc 4.0 warnings
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Sun, 24 Apr 2005 18:13:23 +0000 (18:13 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Sun, 24 Apr 2005 18:13:23 +0000 (18:13 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@770 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

32 files changed:
sope-mime/ChangeLog
sope-mime/NGImap4/ChangeLog
sope-mime/NGImap4/NGImap4Client.h
sope-mime/NGImap4/NGImap4Client.m
sope-mime/NGImap4/NGImap4DataSource.h
sope-mime/NGImap4/NGImap4FileManager.m
sope-mime/NGImap4/NGImap4Folder.m
sope-mime/NGImap4/NGImap4Message.m
sope-mime/NGImap4/NGImap4ResponseParser.m
sope-mime/NGImap4/NGImap4ServerRoot.m
sope-mime/NGImap4/NGSieveClient.m
sope-mime/NGImap4/NSString+Imap4.m
sope-mime/NGMail/ChangeLog
sope-mime/NGMail/NGMailAddressParser.m
sope-mime/NGMail/NGMimeMessageGenerator.m
sope-mime/NGMail/NGMimeMessageParser.m
sope-mime/NGMime/ChangeLog
sope-mime/NGMime/NGMimeAddressHeaderFieldGenerator.m
sope-mime/NGMime/NGMimeContentDispositionHeaderFieldGenerator.m
sope-mime/NGMime/NGMimeContentDispositionHeaderFieldParser.m
sope-mime/NGMime/NGMimeContentLengthHeaderFieldParser.m
sope-mime/NGMime/NGMimeContentTypeHeaderFieldGenerator.m
sope-mime/NGMime/NGMimeContentTypeHeaderFieldParser.m
sope-mime/NGMime/NGMimeHeaderFieldParser.m
sope-mime/NGMime/NGMimeMultipartBodyGenerator.m
sope-mime/NGMime/NGMimePartGenerator.m
sope-mime/NGMime/NGMimePartParser.m
sope-mime/NGMime/NGMimeRFC822DateHeaderFieldParser.m
sope-mime/NGMime/NGMimeStringHeaderFieldParser.m
sope-mime/NGMime/NGMimeType.m
sope-mime/NGMime/NGMimeUtilities.m
sope-mime/Version

index 90118a350c9f2864f0971ad7f98568325833efe4..5f4a738083025137b1c7abd97e4aeb854e52b742 100644 (file)
@@ -1,3 +1,7 @@
+2005-04-24  Helge Hess  <helge.hess@opengroupware.org>
+
+       * NGMime, NGImap4, NGMail: fixed gcc 4.0 warnings (v4.5.220)
+
 2005-03-24  Helge Hess  <helge.hess@skyrix.com>
 
        * NGMime, NGMail: fixed OGo bug #1324 by adding support for multivalue
index f544c8610ebb34ce2789256638255da44c6952f4..258d292c890ae688e89664cdf6519815b4bad8c6 100644 (file)
@@ -1,3 +1,7 @@
+2005-04-24  Helge Hess  <helge.hess@opengroupware.org>
+
+       * fixed gcc 4.0 warnings
+
 2005-03-24  Helge Hess  <helge.hess@opengroupware.org>
 
        * EOQualifier+IMAPAdditions.m: fixed a warning
index aa67971884b537a2cf0ac998ef542f94600af9bd..e3e7e6a4238618e0f0feaeb9e5b2534e668673e2 100644 (file)
@@ -128,8 +128,7 @@ typedef enum {
 - (NSDictionary *)unsubscribe:(NSString *)_name;
 - (NSDictionary *)expunge;
   
-- (NSDictionary *)sort:(NSArray *)_sortOrderings
-  qualifier:(EOQualifier *)_qual
+- (NSDictionary *)sort:(id)_sortOrderings qualifier:(EOQualifier *)_qual
   encoding:(NSString *)_encoding;
 - (NSDictionary *)fetchUids:(NSArray *)_uids parts:(NSArray *)_parts;
 - (NSDictionary *)fetchUid:(unsigned)_uid    parts:(NSArray *)_parts;
index 3995c095605740f2dc9b564e6eaeb9b9d11d60fa..71bf137b067d84623b921738cd2121a65da58efe 100644 (file)
@@ -1043,8 +1043,7 @@ static BOOL         ImapDebugEnabled   = NO;
   return [self->normer normalizeSortResponse:[self processCommand:sortStr]];
 }
 
-- (NSDictionary *)sort:(id)_sortSpec
-  qualifier:(EOQualifier *)_qual
+- (NSDictionary *)sort:(id)_sortSpec qualifier:(EOQualifier *)_qual
   encoding:(NSString *)_encoding
 {
   /* 
@@ -1392,12 +1391,12 @@ static inline NSArray *_flags2ImapFlags(NGImap4Client *self, NSArray *_flags) {
   CountClient++;
 }
 
-- (id<NGExtendedTextStream>)textStream {
+- (NGCTextStream *)textStream {
   if (self->text == nil) {
     if ([self->context lastException] == nil)
       [self reconnect];
   }
-  return self->text;
+  return (NGCTextStream *)self->text;
 }
 
 /* description */
index 76871a12dffc0ff3c2ff1dd3a67afd380db3b099..de7f968ebaeb778d96942c56e6bbef81c87ccfff 100644 (file)
 #import <NGExtensions/EODataSource+NGExtensions.h>
 #import <NGImap4/NGImap4Folder.h>
 
+/*
+  NGImap4DataSource
+  
+  Returned by the NGImap4FileManager when -dataSourceAtPath: is called.
+  
+  TODO: does this also handle subfolders? If not, we should rename the
+        datasource class (eg NGImap4MessageDataSource).
+*/
+
 @class NSArray;
 @class NGImap4Folder;
 @class EOFetchSpecification;
index fbfacb12347b356ba1e1ba72610580b98aeab156..6377ef9b4ed2c815b28b06772ba826fc8d6bc96a 100644 (file)
   password:(NSString *)_pwd
   host:(NSString *)_host;
 
-- (NGImap4Folder *)_lookupFolderAtPath:(NSArray *)_paths;
-
-- (NGImap4Folder *)_lookupFolderAtPathString:(NSString *)_path;
+- (id<NGImap4Folder>)_lookupFolderAtPath:(NSArray *)_paths;
+- (id<NGImap4Folder>)_lookupFolderAtPathString:(NSString *)_path;
 
 - (EOQualifier *)_qualifierForFileName:(NSString *)_filename;
+
 @end
 
 @implementation NGImap4FileManager
@@ -169,9 +169,9 @@ static BOOL debugOn = NO;
 /* internals */
 
 - (id<NGImap4Folder>)_lookupFolderAtPath:(NSArray *)_paths {
+  id<NGImap4Folder> folder;
   NSEnumerator  *e;
   NSString      *path;
-  id<NGImap4Folder> folder;
 
   folder = self->currentFolder;
 
@@ -195,7 +195,7 @@ static BOOL debugOn = NO;
 
   return folder;
 }
-- (NGImap4Folder *)_lookupFolderAtPathString:(NSString *)_path {
+- (id<NGImap4Folder>)_lookupFolderAtPathString:(NSString *)_path {
   return [self _lookupFolderAtPath:[_path pathComponents]];
 }
 
@@ -208,7 +208,7 @@ static BOOL debugOn = NO;
 - (BOOL)createDirectoryAtPath:(NSString *)_path
   attributes:(NSDictionary *)_attributes
 {
-  NGImap4Folder *folder;
+  id<NGImap4Folder> folder;
   NSString *filename;
   
   if (![_path isAbsolutePath])
@@ -224,7 +224,7 @@ static BOOL debugOn = NO;
 }
 
 - (BOOL)changeCurrentDirectoryPath:(NSString *)_path {
-  NGImap4Folder *folder;
+  id<NGImap4Folder> folder;
 
   if ([_path length] == 0)
     return NO;
@@ -270,7 +270,7 @@ static BOOL debugOn = NO;
   directories:(BOOL)_dirs
   files:(BOOL)_files
 {
-  NGImap4Folder  *folder;
+  id<NGImap4Folder> folder;
   NSMutableArray *results;
   NSEnumerator   *e;
   NGImap4Folder  *tmp;
@@ -310,7 +310,7 @@ static BOOL debugOn = NO;
 }
 
 - (NGImap4Message *)messageAtPath:(NSString *)_path {
-  NGImap4Folder  *folder;
+  id<NGImap4Folder> folder;
   NSString       *filename;
   EOQualifier    *q;
   NSArray        *msgs;
@@ -346,8 +346,8 @@ static BOOL debugOn = NO;
 }
 
 - (NSData *)contentsAtPath:(NSString *)_path part:(NSString *)_part {
-  NSString      *fileName;
-  NGImap4Folder *folder;
+  id<NGImap4Folder> folder;
+  NSString          *fileName;
 
   if (![_path isAbsolutePath])
     _path = [[self currentDirectoryPath] stringByAppendingPathComponent:_path];
@@ -357,8 +357,12 @@ static BOOL debugOn = NO;
 
   if ((folder = [self _lookupFolderAtPath:[_path pathComponents]]) == nil)
     return nil;
-
-  return [folder blobForUid:[fileName unsignedIntValue] part:_part];
+  
+  if (![folder respondsToSelector:@selector(blobForUid:part:)])
+    return nil;
+  
+  return [(NGImap4Folder *)folder blobForUid:[fileName unsignedIntValue] 
+                          part:_part];
 }
 
 - (BOOL)fileExistsAtPath:(NSString *)_path {
@@ -366,9 +370,9 @@ static BOOL debugOn = NO;
   return [self fileExistsAtPath:_path isDirectory:&isDir];
 }
 - (BOOL)fileExistsAtPath:(NSString *)_path isDirectory:(BOOL *)_isDir {
-  NSArray       *paths;
-  NSString      *fileName;
-  NGImap4Folder *folder;
+  id<NGImap4Folder> folder;
+  NSArray  *paths;
+  NSString *fileName;
   
   if (![_path isAbsolutePath])
     _path = [[self currentDirectoryPath] stringByAppendingPathComponent:_path];
@@ -539,7 +543,7 @@ static BOOL debugOn = NO;
   traverseLink:(BOOL)flag
 {
   NSString      *fileName;
-  NGImap4Folder *folder, *sfolder;
+  id<NGImap4Folder> folder, sfolder;
   
   if (![_path isAbsolutePath])
     _path = [[self currentDirectoryPath] stringByAppendingPathComponent:_path];
@@ -559,8 +563,12 @@ static BOOL debugOn = NO;
   
   if ((sfolder = [folder subFolderWithName:fileName caseInsensitive:NO])) 
     return [self _fileAttributesOfFolder:sfolder];
-
+  
   /* check for messages */
+  
+  if (![folder isKindOfClass:[NGImap4Folder class]])
+    return nil;
+  
   {
     EOQualifier *q;
     NSArray *msgs;
@@ -575,7 +583,7 @@ static BOOL debugOn = NO;
     }
     
     return [self _fileAttributesOfMessage:[msgs objectAtIndex:0]
-                 inFolder:folder];
+                 inFolder:(NGImap4Folder *)folder];
   }
 }
 
@@ -614,12 +622,14 @@ static BOOL debugOn = NO;
 
 
 - (EODataSource *)dataSourceAtPath:(NSString *)_path {
-  NGImap4Folder *f;
+  id<NGImap4Folder> f;
   
   if ((f = [self _lookupFolderAtPath:[_path pathComponents]]) == nil)
     return nil;
-    
-  return [[[NGImap4DataSource alloc] initWithFolder:f] autorelease];
+  
+  // TODO: check whether 'f' is really an NGImap4Folder?
+  return [[[NGImap4DataSource alloc] initWithFolder:(NGImap4Folder *)f] 
+          autorelease];
 }
 
 - (BOOL)syncMode {
index 161c33ee58a80b7def78e49af49f2e420605c0e0..b0966d203ea8e217146af70eb5c8ab26bf8e07fc 100644 (file)
@@ -124,7 +124,7 @@ static int FetchNewUnseenMessagesInSubFoldersOnDemand = -1;
 #endif    
 }
 
-- (id)initWithContext:_context
+- (id)initWithContext:(NGImap4Context *)_context
   name:(NSString *)_name
   flags:(NSArray *)_flags
   parentFolder:(id<NGImap4Folder>)_folder
index 661349ac6deb19487c3d50ff6acf1beaf4a11924..40b2ef781e98429ef822e88bcc79f6b3364be153 100644 (file)
@@ -31,6 +31,8 @@
 
 #include "NGImap4Message+BodyStructure.h"
 
+@class NSNotification;
+
 @interface NGImap4Message(Internals)
 
 - (void)initializeMessage;
@@ -39,8 +41,8 @@
 - (void)generateBodyStructure;
 - (NSString *)_addFlagNotificationName;
 - (NSString *)_removeFlagNotificationName;
-- (void)_removeFlag:(id)_obj;
-- (void)_addFlag:(id)_obj;
+- (void)_removeFlag:(NSNotification *)_obj;
+- (void)_addFlag:(NSNotification *)_obj;
 - (void)setIsRead:(BOOL)_isRead;
 
 @end /* NGImap4Message(Internals) */
index 561f247d4b215d157f88382e3710bc5c4f88aa2b..270a59c6378d8e79dca7e7c5eedc53e57300fd41 100644 (file)
@@ -63,7 +63,7 @@ static __inline__ int _la(NGImap4ResponseParser *self, unsigned _laCnt) {
     : c;
 }
 static __inline__ BOOL _matchesString(NGImap4ResponseParser *self, 
-                                     unsigned char *s)
+                                     const char *s)
 {
   register unsigned int  i;
   
index ed486298bcd52569945be506eb48e79f2dca98e8..4b58acefa49371388732689f4775b17e3762b706 100644 (file)
@@ -154,7 +154,7 @@ static int FetchNewUnseenMessagesInSubFoldersOnDemand = -1;
   return _subFolderWithName(self, _name, _caseIns);
 }
 
-- (id<NGImap4Folder>)parentFolder {
+- (NGImap4Folder *)parentFolder {
   return nil;
 }
 
@@ -355,11 +355,11 @@ static int FetchNewUnseenMessagesInSubFoldersOnDemand = -1;
   return _deleteSubFolder(self, _folder);
 }
 
-- (BOOL)copySubFolder:(NGImap4Folder *)_f to:(id<NGImap4Folder>)_folder {
+- (BOOL)copySubFolder:(NGImap4Folder *)_f to:(NGImap4Folder *)_folder {
   return _copySubFolder(self, _f, _folder);
 }
 
-- (BOOL)moveSubFolder:(NGImap4Folder *)_f to:(id<NGImap4Folder>)_folder {
+- (BOOL)moveSubFolder:(NGImap4Folder *)_f to:(NGImap4Folder *)_folder {
   return _moveSubFolder(self, _f, _folder);
 }
 
index 547c23ae0ac544cf4d1d59aa821e2bff5b815dbe..94baaca47a653087e4fb4ffafb0ffbb1af6c8303 100644 (file)
@@ -223,8 +223,9 @@ static BOOL     debugImap4         = NO;
     [self logWithFormat:@"ERROR: could not connect: %@", self->address];
     return nil;
   }
-  
-  self->io     = [[NGBufferedStream alloc] initWithSource:(id)self->socket];
+
+  self->io     = [NGBufferedStream alloc]; // keep gcc happy
+  self->io     = [self->io initWithSource:(id)self->socket];
   self->parser = [[NGImap4ResponseParser alloc] initWithStream:self->socket];
 
   /* receive greeting from server without tag-id */
@@ -284,7 +285,7 @@ static BOOL     debugImap4         = NO;
   int       bufLen, logLen;
   
   if (![self->socket isConnected]) {
-    id con;
+    NSDictionary *con;
     
     if ((con = [self openConnection]) == nil)
       return nil;
@@ -531,7 +532,7 @@ static BOOL     debugImap4         = NO;
                               forKeys:keys count:2];
 }
 
-- (NSDictionary *)normalizeOpenConnectionResponse:(NGHashMap *)_map {
+- (NSMutableDictionary *)normalizeOpenConnectionResponse:(NGHashMap *)_map {
   /* filter for open connection */
   NSMutableDictionary *result;
   NSString *tmp;
@@ -744,7 +745,7 @@ static BOOL     debugImap4         = NO;
     countBuf[i] = c;
   }
   countBuf[i] = '\0';
-  byteCount = i > 0 ? atoi(countBuf) : 0;
+  byteCount = i > 0 ? atoi((char *)countBuf) : 0;
   
   /* read CRLF */
   
@@ -768,7 +769,7 @@ static BOOL     debugImap4         = NO;
   }
   octets[byteCount] = '\0';
   
-  return [[NSString alloc] initWithUTF8String:octets];
+  return [[NSString alloc] initWithUTF8String:(char *)octets];
 }
 
 - (NSString *)readQuoted {
@@ -792,7 +793,7 @@ static BOOL     debugImap4         = NO;
   if (c == -1)
     return nil;
   
-  return [[NSString alloc] initWithUTF8String:buf];
+  return [[NSString alloc] initWithUTF8String:(char *)buf];
 }
 
 - (NSString *)readStringToCRLF {
@@ -825,7 +826,7 @@ static BOOL     debugImap4         = NO;
     }
   }
   
-  return [[NSString alloc] initWithUTF8String:buf];
+  return [[NSString alloc] initWithUTF8String:(char *)buf];
 }
 
 - (NSString *)readString {
index f6fe914d8f765678bd6c5f93d21348cadf03e634..76594791bbb8039289cb27e6ecc453c48a07bccf 100644 (file)
@@ -27,7 +27,7 @@
 static void _encodeToModifiedUTF7(unsigned char *_buf, int encLen,
                                   unsigned char **result_,
                                   unsigned int *cntRes_);
-static int _decodeOfModifiedUTF7(char *_target, unsigned _targetLen,
+static int _decodeOfModifiedUTF7(unsigned char *_target, unsigned _targetLen,
                                  unsigned *usedBytes_ ,
                                  unsigned char **buffer_,
                                  int *bufLen_, int maxBuf);
@@ -48,7 +48,7 @@ static int _decodeOfModifiedUTF7(char *_target, unsigned _targetLen,
   res = calloc((len * 6) + 3, sizeof(char));  
   buf[len] = '\0';
   res[len * 6] = '\0';  
-  [self getCString:buf];
+  [self getCString:(char *)buf];
 
   while (cnt < len) {
     int c = buf[cnt];
@@ -94,9 +94,9 @@ static int _decodeOfModifiedUTF7(char *_target, unsigned _targetLen,
       }
     }
   }
-  result = [[NSString alloc] initWithCStringNoCopy:res
-                               length:cntRes
-                               freeWhenDone:YES];
+  result = [[NSString alloc] initWithCStringNoCopy:(char *)res
+                            length:cntRes
+                            freeWhenDone:YES];
   free(buf); buf = NULL;
   return [result autorelease];
 }
@@ -118,7 +118,7 @@ static int _decodeOfModifiedUTF7(char *_target, unsigned _targetLen,
   buf[len] = '\0';
   res[len] = '\0';
   
-  [self getCString:buf];
+  [self getCString:(char *)buf];
   
   while (cnt < (len - 1)) { /* &- */
     unsigned char c;
@@ -164,32 +164,34 @@ static int _decodeOfModifiedUTF7(char *_target, unsigned _targetLen,
   if (cnt < len)
     res[cntRes++] = buf[cnt++];
   
-  result = [[NSString alloc] initWithCStringNoCopy:res
+  result = [[NSString alloc] initWithCStringNoCopy:(char *)res
                              length:cntRes
                              freeWhenDone:YES];
-  free(buf); buf = NULL;
+  if (buf) free(buf); buf = NULL;
   return [result autorelease];
 }
 
 - (NSString *)stringByEscapingImap4Password {
-  // TODO: Unicode, perf
-  unsigned char       *buffer;
-  const unsigned char *chars;
-  unsigned            len, i, j;
-
-  len   = [self cStringLength];
-  chars = [self cString];
-
-  buffer = calloc(len * 2 + 2, sizeof(char));
+  // TODO: perf
+  unichar  *buffer;
+  unichar  *chars;
+  unsigned len, i, j;
+  NSString *s;
+
+  len   = [self length];
+  chars = calloc(len + 2, sizeof(unichar));
+  [self getCharacters:chars];
+  
+  buffer = calloc(len * 2 + 2, sizeof(unichar));
   buffer[len * 2] = '\0';
-
+  
   for (i = 0, j = 0; i < len; i++, j++) {
       BOOL conv = NO;
       
       if (chars[i] <= 0x1F || chars[i] > 0x7F) {
         conv = YES;
       }
-      switch (chars[i]) {
+      else switch (chars[i]) {
         case '(':
         case ')':
         case '{':
@@ -199,16 +201,20 @@ static int _decodeOfModifiedUTF7(char *_target, unsigned _targetLen,
         case '"':
         case '\\':
           conv = YES;
+         break;
       }
-
+      
       if (conv) {
-        buffer[j++] = '\\';
+        buffer[j] = '\\';
+       j++;
       }
       buffer[j] = chars[i];
-    }
+  }
+  if (chars != NULL) free(chars); chars = NULL;
   
-  return [[(NSString *)[NSString alloc] 
-            initWithCString:buffer length:j] autorelease];
+  s = [NSString stringWithCharacters:buffer length:j];
+  if (buffer != NULL) free(buffer); buffer = NULL;
+  return s;
 }
 
 @end /* NSString(Imap4) */
@@ -308,7 +314,7 @@ static char index_64[128] = {
 
 #define char64(c)  (((c) < 0 || (c) > 127) ? -1 : index_64[(c)])
 
-static int _decodeOfModifiedUTF7(char *_target, unsigned _targetLen,
+static int _decodeOfModifiedUTF7(unsigned char *_target, unsigned _targetLen,
                                  unsigned *usedBytes_ , unsigned char **buffer_,
                                  int *bufLen_, int maxBuf)
 {
index e1ef34ce33356305b3eff448e590b5407dec633a..8c3da6c02c2c5d6db5a07b1d03b456c424133b30 100644 (file)
@@ -1,3 +1,7 @@
+2005-04-24  Helge Hess  <helge.hess@opengroupware.org>
+
+       * fixed gcc 4.0 warnings
+
 2005-03-24  Helge Hess  <helge.hess@opengroupware.org>
 
        * NGMimeMessageGenerator.m: mark To, Cc and Bcc as multivalue header
index bd90f2fc0deefa6d96f3666b922fd74e9066b911..ecef01c8ce0fa577ef26f158c91f28934b156143 100644 (file)
@@ -52,7 +52,8 @@ static NSNumber *yesNum  = nil;
 }
 
 static inline NSString *mkStrObj(const unsigned char *s, unsigned int l) {
-  return [(NSString *)[StrClass alloc] initWithCString:s length:l];
+  // TODO: unicode
+  return [(NSString *)[StrClass alloc] initWithCString:(char *)s length:l];
 }
 
 static inline id parseWhiteSpaces(NGMailAddressParser *self, BOOL _guessMode) {
@@ -82,7 +83,7 @@ static inline id parseAtom(NGMailAddressParser *self, BOOL _guessMode) {
   int  keepPos     = self->dataPos; // keep reference for backtracking
   id   returnValue = nil;
   BOOL isAtom      = YES;
-  char text[self->maxLength];  // token text
+  unsigned char text[self->maxLength + 2];  // token text
   int  length      = 0;  // token text length
   BOOL done        = NO;
 
@@ -160,7 +161,7 @@ static inline id parseQText(NGMailAddressParser *self, BOOL _guessMode) {
   int  keepPos     = self->dataPos; // keep reference for backtracking
   id   returnValue = nil;
   BOOL isQText    = YES;
-  char text[self->maxLength];  // token text
+  unsigned char text[self->maxLength + 4];  // token text
   int  length      = 0;  // token text length
   BOOL done        = YES;
 
@@ -213,7 +214,7 @@ static inline id parseDText(NGMailAddressParser *self, BOOL _guessMode) {
   int  keepPos     = self->dataPos; // keep reference for backtracking
   id   returnValue = nil;
   BOOL isDText    = YES;
-  char text[self->maxLength];  // token text
+  unsigned char text[self->maxLength];  // token text
   int  length      = 0;  // token text length
   BOOL done        = YES;
 
@@ -317,23 +318,19 @@ static inline id parseDomainLiteral(NGMailAddressParser *self, BOOL _guessMode)
 
 /* constructors */
 
-+ (id)mailAddressParserWithString:(NSString *)_string {
-  return [[(NGMailAddressParser *)[self alloc] 
-                                 initWithCString:[_string cString]
-                                 length:[_string cStringLength]] autorelease];
-}
 + (id)mailAddressParserWithData:(NSData *)_data {
   return [[(NGMailAddressParser *)[self alloc] 
-                                 initWithCString:(char *)[_data bytes]
+                                 initWithCString:[_data bytes]
                                  length:[_data length]] autorelease];
 }
 + (id)mailAddressParserWithCString:(char *)_cString {
   return [[(NGMailAddressParser *)[self alloc] 
-                                 initWithCString:_cString
+                                 initWithCString:(unsigned char *)_cString
                                  length:strlen(_cString)] autorelease];
 }
 - (id)initWithCString:(const unsigned char *)_cstr length:(int unsigned)_len {
   if ((self = [super init])) {
+    // TODO: remember some string encoding?
     self->data      = (unsigned char *)_cstr;
     self->maxLength = _len;
     self->dataPos   = 0;
@@ -341,10 +338,22 @@ static inline id parseDomainLiteral(NGMailAddressParser *self, BOOL _guessMode)
   }
   return self;
 }
+
+- (id)initWithString:(NSString *)_str {
+  // TODO: unicode
+  return [self initWithCString:(unsigned char *)[_str cString] 
+              length:[_str cStringLength]];
+}
+
 - (id)init {
   return [self initWithCString:NULL length:0];
 }
 
++ (id)mailAddressParserWithString:(NSString *)_string {
+  return [[(NGMailAddressParser *)[self alloc] initWithString:_string] 
+          autorelease];
+}
+
 - (void)dealloc {
   self->data      = NULL;
   self->maxLength = 0;
index 736a9da16f2d3e50fe186cb49f554b930f513360..e3e6101d385402a0ba9e79981b19755fcb51d023 100644 (file)
@@ -126,8 +126,9 @@ static BOOL debugOn = NO;
       
     // memcpy(des, bytes, cnt);
     memcpy(des, iso, isoLen);
-    desLen = NGEncodeQuotedPrintableMime(bytes, length,
-                                         des + isoLen, desLen - isoLen);
+    desLen = NGEncodeQuotedPrintableMime((unsigned char *)bytes, length,
+                                         (unsigned char *)(des + isoLen),
+                                        desLen - isoLen);
     if ((int)desLen != -1) {
       memcpy(des + isoLen + desLen, isoEnd, isoEndLen);
       
index c373c151c9f6cd36b09573a972e526661daaec63..e883a87218651fb03756c1ffe9cee2689d928920 100644 (file)
@@ -37,7 +37,7 @@ static Class NGMimeMessageParserClass                 = NULL;
   if (UseFoundationStringEncodingForMimeHeader == -1) {
     UseFoundationStringEncodingForMimeHeader
       = [[NSUserDefaults standardUserDefaults]
-                         boolForKey:@"UseFoundationStringEncodingForMimeHeader"]
+         boolForKey:@"UseFoundationStringEncodingForMimeHeader"]
       ? 1 : 0;
   }
   if (NGMimeMessageParserClass == NULL) {
@@ -45,25 +45,26 @@ static Class NGMimeMessageParserClass                 = NULL;
   }
 }
 
-- (id)parser:(id)_parser parseHeaderField:(NSString *)_field data:(NSData *)_data
+- (id)parser:(NGMimePartParser *)_p parseHeaderField:(NSString *)_field
+  data:(NSData *)_data
 {
-  id v = nil;
+  NGMimeMessageParser *parser = nil;
+  id v;
 
-  if ([_parser isKindOfClass:NGMimeMessageParserClass] == NO) {
-    NGMimeMessageParser *parser = nil;
-
-    parser = [[NGMimeMessageParserClass alloc] init];
-    v = [parser valueOfHeaderField:_field data:_data];
-    [parser release]; parser = nil;
-  }
+  if ([_p isKindOfClass:NGMimeMessageParserClass])
+    return nil;
+  
+  parser = [[NGMimeMessageParserClass alloc] init];
+  v = [parser valueOfHeaderField:_field data:_data];
+  [parser release]; parser = nil;
   return v;
 }
 
 - (id<NGMimeBodyParser>)parser:(NGMimePartParser *)_parser
   bodyParserForPart:(id<NGMimePart>)_part
 {
-  id                   ctype;
-  NGMimeType           *contentType;
+  id         ctype;
+  NGMimeType *contentType;
 
   ctype = [_part contentType];
   
@@ -210,7 +211,8 @@ static Class NSStringClass = Nil;
        
         if (bytes[cnt] == '?') {
           charset = 
-           [NSStringClass stringWithCString:(bytes + tmp) length:cnt - tmp];
+           [NSStringClass stringWithCString:(char *)(bytes + tmp) 
+                          length:(cnt - tmp)];
           tmp = -1;
          
           if ((length - cnt) > 2) { 
@@ -236,7 +238,7 @@ static Class NSStringClass = Nil;
           NSString         *tmpStr;
          unsigned int     tmpLen;
          
-          tmpData = _rfc2047Decoding(encoding, bytes + tmp, cnt - tmp);
+          tmpData = _rfc2047Decoding(encoding, (char *)bytes + tmp, cnt - tmp);
          foundQP = YES;
 
          /* 
index 5e02edef422780c800541414b97cebf4855a3525..476641378a2ed281a42a305a1ad4a4de5d7eabe5 100644 (file)
@@ -1,3 +1,7 @@
+2005-04-24  Helge Hess  <helge.hess@opengroupware.org>
+
+       * fixed gcc 4.0 warnings
+
 2005-03-24  Helge Hess  <helge.hess@opengroupware.org>
 
        * NGMimePartGenerator.m: minor improvement in field generation API,
index 21d67962b88af3a193c8dce627846001b8a8e40c..87becd90cadb79008a61bbbe947e7fe874e11300 100644 (file)
@@ -106,7 +106,7 @@ static int UseLFSeperatedAddressEntries = -1;
       unsigned      desLen;
       unsigned char *des;
       
-      if (buffer) free(buffer);
+      if (buffer != NULL) free(buffer); buffer = NULL;
       {
         NSData *data;
 
@@ -127,12 +127,12 @@ static int UseLFSeperatedAddressEntries = -1;
       memcpy(des, buffer, cnt);
       memcpy(des + cnt, iso, isoLen);
       desLen =
-        NGEncodeQuotedPrintableMime(buffer + cnt, bufLen - cnt,
+        NGEncodeQuotedPrintableMime((unsigned char *)buffer + cnt, bufLen- cnt,
                                     des + cnt + isoLen,
                                     desLen - cnt - isoLen);
       if ((int)desLen != -1) {
         memcpy(des + cnt + isoLen + desLen, isoEnd, isoEndLen);
-        tmp = [NSString stringWithCString:des
+        tmp = [NSString stringWithCString:(char *)des
                         length:(cnt + isoLen + desLen + isoEndLen)];
       }
       else {
index 14d2d2d1f2c53aa0654604017528c68bf6902e15..af429b58acdf331c84c9c589a2a0aa2003d1fffc 100644 (file)
@@ -63,7 +63,7 @@
       // TODO: unicode?
       len  = [tmp cStringLength];
       ctmp = malloc(len + 3);
-      [tmp getCString:ctmp]; ctmp[len] = '\0';
+      [tmp getCString:(char *)ctmp]; ctmp[len] = '\0';
       cnt  = 0;
       doEnc = NO;
       while (cnt < len) {
         memcpy(des, ctmp, cnt);
         memcpy(des + cnt, iso, isoLen);
         desLen =
-             NGEncodeQuotedPrintableMime(ctmp + cnt, len - cnt,
-                                         des + cnt + isoLen,
-                                         desLen - cnt - isoLen);
+         NGEncodeQuotedPrintableMime((unsigned char *)ctmp + cnt, len - cnt,
+                                     (unsigned char *)des + cnt + isoLen,
+                                     desLen - cnt - isoLen);
         if ((int)desLen != -1) {
           memcpy(des + cnt + isoLen + desLen, isoEnd, isoEndLen);
           [data appendBytes:des length:(cnt + isoLen + desLen + isoEndLen)];
index 38d270485d2e8b79827fcbfbb088a8c1984e5fcb..fe37078bc369a1102151e017a0204a80238f4133 100644 (file)
@@ -37,9 +37,9 @@ static BOOL MimeLogEnabled     = NO;
   MimeLogEnabled     = [self isMIMELogEnabled];
 }
 
-- (id)parseValue:(NSString *)_data ofHeaderField:(NSString *)_field {
+- (id)parseValue:(id)_data ofHeaderField:(NSString *)_field {
   unsigned   len = [_data length];
-  unichar    src[len+1];
+  unichar    src[len + 1];
   unsigned   cnt;
   BOOL       didModify;
   NSString   *str;
@@ -49,7 +49,7 @@ static BOOL MimeLogEnabled     = NO;
 
   [_data getCharacters:src];
   
-  // strip leading spaces
+  /* strip leading spaces */
   if (StripLeadingSpaces) {
     while (isRfc822_LWSP(src[cnt]) && (len > 0)) {
       cnt++;
@@ -57,7 +57,7 @@ static BOOL MimeLogEnabled     = NO;
       didModify = YES;
     }
   }
-  // strip trailing spaces
+  /* strip trailing spaces */
   while (len > 0) {
     if (isRfc822_LWSP(src[len - 1])) {
       len--;
@@ -74,10 +74,9 @@ static BOOL MimeLogEnabled     = NO;
   }
   str = nil;
   
-  if (didModify)
-    str = [[[NSString alloc] initWithCharacters:src+cnt length:len] autorelease];
-  else
-    str = _data;
+  str = (didModify)
+    ? [NSString stringWithCharacters:(src + cnt) length:len]
+    : _data;
   
   return [[[NGMimeContentDispositionHeaderField alloc] initWithString:str]
                                                 autorelease];
index 05fc052a2604deeecd4eba117c7ea44ada6d8e78..e6a0c039202402b0057f48fa65250255b468c96d 100644 (file)
@@ -30,7 +30,7 @@
   return 2;
 }
 
-- (id)parseValue:(NSString *)_data ofHeaderField:(NSString *)_field {
+- (id)parseValue:(id)_data ofHeaderField:(NSString *)_field {
   const char *buf, *ptr;
     
   _data = [self removeCommentsFromValue:_data];
index 5fba916f568d8e2d517943dbc44317774a23f018..390fceadb600b24eac30a88633d6eefc9441357d 100644 (file)
@@ -59,8 +59,8 @@
   tmp = [type type];
   NSAssert(tmp, @"type should not be nil");
   len  = [tmp length];
-  ctmp = malloc(len + 1);
-  [tmp getCString:ctmp]; ctmp[len] = '\0';
+  ctmp = malloc(len + 4);
+  [tmp getCString:(char *)ctmp]; ctmp[len] = '\0';
   [data appendBytes:ctmp length:len];
   free(ctmp);
   
@@ -69,8 +69,8 @@
   tmp = [type subType];
   if (tmp != nil) {
     len  = [tmp length];
-    ctmp = malloc(len + 1);
-    [tmp getCString:ctmp]; ctmp[len] = '\0';
+    ctmp = malloc(len + 4);
+    [tmp getCString:(char *)ctmp]; ctmp[len] = '\0';
     [data appendBytes:ctmp length:len];
     free(ctmp);
   }
@@ -93,7 +93,7 @@
       
       len  = [name cStringLength];
       ctmp = malloc(len + 1);
-      [name getCString:ctmp]; ctmp[len] = '\0';
+      [name getCString:(char *)ctmp]; ctmp[len] = '\0';
       [data appendBytes:ctmp length:len];
       free(ctmp);
 
         BOOL doEnc;
         
         len  = [value cStringLength];
-        ctmp = malloc(len + 1);
-        [value getCString:ctmp]; ctmp[len] = '\0';
+        ctmp = malloc(len + 4);
+        [value getCString:(char *)ctmp]; ctmp[len] = '\0';
         cnt  = 0;
         doEnc = NO;
         while (cnt < len) {
index dff87f1a61b54d16feeb0b5ebd9897aaa9772646..9c95ab52e340040db2ac97a54f000f389fe1a89c 100644 (file)
@@ -37,7 +37,7 @@ static BOOL MimeLogEnabled     = NO;
   MimeLogEnabled     = [self isMIMELogEnabled];
 }
 
-- (id)parseValue:(NSString *)_data ofHeaderField:(NSString *)_field {
+- (id)parseValue:(id)_data ofHeaderField:(NSString *)_field {
   NSString *typeString;
   unsigned len;
 
index fb333e1a6e93e4052e66abbfb45e8a41655adbf1..a4140a0c03739043610cfa2c4351f7f10a106909 100644 (file)
@@ -130,7 +130,7 @@ static int StripLeadingSpaces = -1;
   return _value;
 }
 
-- (id)parseValue:(NSString *)_data ofHeaderField:(NSString *)_field { 
+- (id)parseValue:(id)_data ofHeaderField:(NSString *)_field { 
   // abstract
   NSLog(@"ERROR(%s): subclass should override this method: %@",
        __PRETTY_FUNCTION__, self);
index 3481ba8c6d6f6bba2d86bd448420fee8567ab46f..e147a84392efa849c3e57eddfee78913ec03b8fb 100644 (file)
@@ -75,7 +75,7 @@ static inline BOOL _isBoundaryInArray(NGMimeMultipartBodyGenerator *self,
   BOOL         wasFound;
   
   // TODO: do we need to treat the boundary as a CString?
-  boundary   = [_boundary cString];
+  boundary   = (const unsigned char *)[_boundary cString];
   length     = [_boundary length];
   enumerator = [_data objectEnumerator];
   data       = nil;
@@ -105,7 +105,7 @@ static inline BOOL _isBoundaryInArray(NGMimeMultipartBodyGenerator *self,
 
       if (bytes[cnt] == '\n') {// LF*-
        if (bytes[cnt + 1] == '-') { // LF--
-         if (strncmp(boundary, bytes + cnt + 3, length) == 0) {
+         if (strncmp((char *)boundary, (char *)(bytes+cnt+3), length) == 0) {
            wasFound = YES;
            break;
          }
@@ -113,13 +113,13 @@ static inline BOOL _isBoundaryInArray(NGMimeMultipartBodyGenerator *self,
       }
       else if (bytes[cnt] == '\r') { //CR*-
        if (bytes[cnt + 1] == '-') { //CR--
-         if (strncmp(boundary, bytes + cnt + 3, length) == 0) {
+         if (strncmp((char *)boundary, (char *)(bytes+cnt+3), length) == 0) {
            wasFound = YES;
            break;
          }
        }
        else if ((bytes[cnt + 1] == '\n') && (bytes[cnt + 3] == '-')) {
-         if (strncmp(boundary, bytes + cnt + 4, length) == 0) { // CRLF--
+         if (strncmp((char*)boundary, (char *)(bytes+cnt+4), length)==0) { // CRLF--
            wasFound = YES;
            break;
          }
index bd3015e4ea217e2a01fff9c0687f946c57d4d5f7..ed61eef49566ccd146e06e6dbf5d6037b9a3ff42 100644 (file)
@@ -155,7 +155,7 @@ static BOOL       debugOn = NO;
   BOOL     isMultiValue, isFirst;
   
   /* get field name and strip leading spaces */
-  fcname = [_field cString];
+  fcname = (const unsigned char *)[_field cString];
   for (len = [_field cStringLength]; len > 0; fcname++, len--) {
     if (*fcname != ' ')
       break;
index 5240e0e86bf6e9646f9fd6686825f16ff040a410..82a602548fa7fc09850adec2108286c4874f616d 100644 (file)
@@ -672,10 +672,12 @@ static NSString *fieldNameForCString(id self, char *_cstring, int _len) {
         if (len > 0) { // len==0 means the value was a string of LWSP
           [self->contentTransferEncoding release];
           self->contentTransferEncoding =
-            [[StringClass alloc] initWithCString:cstr length:len];
+            [[StringClass alloc] initWithCString:(char *)cstr length:len];
         }
-        else
-          ASSIGN(self->contentTransferEncoding, (id)nil);
+        else {
+          [self->contentTransferEncoding release];
+         self->contentTransferEncoding = nil;
+       }
       }
       /*
         take a look on content-length headers, since the parser
@@ -702,7 +704,7 @@ static NSString *fieldNameForCString(id self, char *_cstring, int _len) {
               cstr++;
             }
             buf[i] = '\0'; // stop string after last digit (ignore the rest)
-            self->contentLength = atoi(buf);
+            self->contentLength = atoi((char *)buf);
           }
           else {
             /* header value are only spaces */
index 2029b5672152a957a602cc6b96d84819e1e759a4..2ddab9ee296ae236847436da0741b724f4c176fb 100644 (file)
@@ -152,9 +152,9 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
              (value='Tue, 13 Jul 2004 21:39:28 +0530')
     TODO: this is because libFoundation doesn't accept 'GMT+0530' as input.
   */
-  unsigned char *p = s;
-  NSTimeZone    *tz;
-  NSString      *ts;
+  char       *p = (char *)s;
+  NSTimeZone *tz;
+  NSString   *ts;
   
   if (len == 0) 
     return nil;
@@ -214,7 +214,7 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
       }
       
       /* special case for GMT+0530 */
-      if (strncmp(s, "+0530", 5) == 0)
+      if (strncmp((char *)s, "+0530", 5) == 0)
        return gmt0530;
     }
     else if (len == 7) {
@@ -228,7 +228,7 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
       if (isdigit(p[1]) && isdigit(p[2]) && (p[3] == '-'||p[3] == '+')) {
         unsigned char tmp[8];
         
-        strncpy(tmp, p, 3);
+        strncpy((char *)tmp, p, 3);
         tmp[3] = '0';
         tmp[4] = '0';
         tmp[5] = '\0';
@@ -251,23 +251,23 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
     }
   }
   else if (len == 3) {
-    if (strcasecmp(s, "GMT") == 0) return gmt;
-    if (strcasecmp(s, "MET") == 0) return met;
+    if (strcasecmp((char *)s, "GMT") == 0) return gmt;
+    if (strcasecmp((char *)s, "MET") == 0) return met;
   }
   
   if (isalpha(*s)) {
-    ts = [[NSString alloc] initWithCString:s length:len];
+    ts = [[NSString alloc] initWithCString:(char *)s length:len];
   }
   else {
     char buf[len + 5];
     
     buf[0] = 'G'; buf[1] = 'M'; buf[2] = 'T';
     if (*s == '+' || *s == '-') {
-      strcpy(&(buf[3]), s);
+      strcpy(&(buf[3]), (char *)s);
     }
     else {
       buf[3] = '+';
-      strcpy(&(buf[4]), s);
+      strcpy(&(buf[4]), (char *)s);
     }
     ts = [[NSString alloc] initWithCString:buf];
   }
@@ -279,7 +279,7 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
   return tz;
 }
 
-- (id)parseValue:(NSString *)_data ofHeaderField:(id)_field {
+- (id)parseValue:(id)_data ofHeaderField:(NSString *)_field {
   // TODO: use UNICODE
   NSCalendarDate *date       = nil;
   unsigned char  buf[256];
@@ -297,7 +297,7 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
     length = 254;
   }
   
-  [_data getCString:buf maxLength:length];
+  [_data getCString:(char *)buf maxLength:length];
   buf[length] = '\0';
   
   /* remove leading chars (skip to first digit, the day of the month) */
@@ -329,7 +329,7 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
     ;
   if (*pe == 0) goto failed;
   *pe = '\0';
-  dayOfMonth = atoi(bytes);
+  dayOfMonth = atoi((char *)bytes);
   bytes = pe + 1;
   
   /* parse month-abbrev (should be English, could be other langs) */
@@ -358,7 +358,7 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
     ;
   if (*pe == 0) goto failed;
   *pe = '\0';
-  year = atoi(bytes);
+  year = atoi((char *)bytes);
   bytes = pe + 1;
   if (year >= 70 && year < 135) // Y2K
     year += 1900;
@@ -383,7 +383,7 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
     ;
   flag = (*pe == 0);
   *pe = '\0';
-  hour = bytes != pe ? atoi(bytes) : 0;
+  hour = bytes != pe ? atoi((char *)bytes) : 0;
   if (flag) goto finished; // this is: '12\0'
   bytes = pe + 1;
   
@@ -397,7 +397,7 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
     ;
   flag = (*pe == 0);
   *pe = '\0';
-  minute = bytes != pe ? atoi(bytes) : 0;
+  minute = bytes != pe ? atoi((char *)bytes) : 0;
   if (flag) goto finished; // this is: '12:23\0'
   bytes = pe + 1;
   
@@ -417,7 +417,7 @@ static NSTimeZone *parseTimeZone(unsigned char *s, unsigned int len) {
       ;
     flag = (*pe == 0);
     *pe = '\0';
-    second = bytes != pe ? atoi(bytes) : 0;
+    second = bytes != pe ? atoi((char *)bytes) : 0;
     if (flag) goto finished; // this is: '12:23:12\0'
     bytes = pe + 1;
   }
index 60807c14505f5890312325ca7bb241f1bb898054..ee23c46475aa824cef001afeff9bd3c73456329d 100644 (file)
@@ -47,7 +47,7 @@ static BOOL StripLeadingSpaces = NO;
 
 /* operation */
 
-- (id)parseValue:(NSString *)_value ofHeaderField:(NSString *)_field {
+- (id)parseValue:(id)_value ofHeaderField:(NSString *)_field {
   // TODO: fixup
   unsigned len = [_value length];
   unsigned cnt;
index d3e931ff8a34a973f52ae671bf32c8ab6fb13e2d..d941dd624684399943c236341650ba5d496c1d72 100644 (file)
@@ -644,12 +644,12 @@ static BOOL _parseMimeType(id self, NSString *_str, NSString **type,
   if (len == 0) return NO; // no type was read
 
   {
-    unsigned char     buf[len + 1];
+    unsigned char     buf[len + 3];
     register unsigned i;
     
     buf[len] = '\0';
     for (i = 0; i < len; i++) buf[i] = tolower(tmp[i]);
-    *type = _stringForType(buf, len);
+    *type = _stringForType((char *)buf, len);
   }
 
   if (*cstr == '/') { // subtype name
@@ -671,7 +671,7 @@ static BOOL _parseMimeType(id self, NSString *_str, NSString **type,
       
       buf[len] = '\0';
       for (i = 0; i < len; i++) buf[i] = tolower(tmp[i]);
-      *subType = _stringForSubType(buf, len);
+      *subType = _stringForSubType((char *)buf, len);
     }
   }
   else {
index 9c772ce9935188977eaaccda0f52cce0d48fbe40..376398c116d95a5d8329c6af7548d8607308b935 100644 (file)
@@ -116,7 +116,7 @@ NSDictionary *parseParameters(id self, NSString *_str, unichar *cstr) {
         buf[len] = '\0';
         for (i = 0; i < len; i++) buf[i] = tolower(tmp[i]);
 
-        attrName = _stringForParameterName(buf, len);
+        attrName = _stringForParameterName((char *)buf, len);
       }
       // skip spaces
       while ((*cstr != '\0') && (isRfc822_LWSP(*cstr))) {
index 6f8c65aae8019ee02d70f712c202cc8b22f0d256..02b9ee5d4e4791086dad67d4a7ec135bf8ae3111 100644 (file)
@@ -2,7 +2,7 @@
 
 MAJOR_VERSION:=4
 MINOR_VERSION:=5
-SUBMINOR_VERSION:=219
+SUBMINOR_VERSION:=220
 
 # v4.5.214 requires libNGExtensions v4.5.146
 # v4.2.149 requires libNGStreams    v4.2.34