git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@20939 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2005-03-21 19:16:15 +00:00
parent a339be4200
commit fed4566357
3 changed files with 75 additions and 60 deletions

View file

@ -9,6 +9,8 @@
gnustep/unix/windows. In the default gnustep mode we try to
handle paths in any format and just do the right thing.
Also updated handling of path extensions to match MacOSX behavior.
* Source/Additions/GSMime.h: Remove deprecated method.
Optimise a little by avoiding class lookups.
2005-03-18 Richard Frith-Macdonald <rfm@gnu.org>

View file

@ -202,7 +202,6 @@
- (NSString*) scanToken: (NSScanner*)scanner;
- (void) setBuggyQuotes: (BOOL)flag;
- (void) setDefaultCharset: (NSString*)aName;
- (void) setDefaultEncoding: (NSStringEncoding)encoding;
- (void) setIsHttp;
@end

View file

@ -61,6 +61,7 @@ static NSCharacterSet *whitespace = nil;
static NSCharacterSet *rfc822Specials = nil;
static NSCharacterSet *rfc2045Specials = nil;
static NSMapTable *charsets = 0;
static NSMapTable *encodings = 0;
static Class NSArrayClass = 0;
static Class documentClass = 0;
@ -318,7 +319,7 @@ wordData(NSString *word)
[charset getCString: buf];
md = [NSMutableData dataWithCapacity: [d length]*4/3 + len + 8];
d = [GSMimeDocument encodeBase64: d];
d = [documentClass encodeBase64: d];
[md appendBytes: "=?" length: 2];
[md appendBytes: buf length: len];
[md appendBytes: "?b?" length: 3];
@ -1956,15 +1957,6 @@ NSDebugMLLog(@"GSMime", @"Header parsed - %@", info);
_defaultEncoding = [documentClass encodingFromCharset: aName];
}
- (void) setDefaultEncoding: (NSStringEncoding)encoding
{
NSString *charset;
GSOnceMLog(@"Deprecated method ... use setDefaultCharset: instead.");
charset = [documentClass charsetFromEncoding: encoding];
[self setDefaultCharset: charset];
}
/**
* Method to inform the parser that the data it is parsing is an HTTP
@ -2664,6 +2656,10 @@ static NSCharacterSet *tokenSet = nil;
{
NSArrayClass = [NSArray class];
}
if (documentClass == 0)
{
documentClass = [GSMimeDocument class];
}
}
}
@ -3097,49 +3093,13 @@ static NSCharacterSet *tokenSet = nil;
*/
+ (NSString*) charsetFromEncoding: (NSStringEncoding)enc
{
if (enc == NSASCIIStringEncoding)
return @"us-ascii"; // Default character set.
if (enc == NSISOLatin1StringEncoding)
return @"iso-8859-1";
if (enc == NSISOLatin2StringEncoding)
return @"iso-8859-2";
if (enc == NSISOLatin3StringEncoding)
return @"iso-8859-3";
if (enc == NSISOLatin4StringEncoding)
return @"iso-8859-4";
if (enc == NSISOCyrillicStringEncoding)
return @"iso-8859-5";
if (enc == NSISOArabicStringEncoding)
return @"iso-8859-6";
if (enc == NSISOGreekStringEncoding)
return @"iso-8859-7";
if (enc == NSISOHebrewStringEncoding)
return @"iso-8859-8";
if (enc == NSISOLatin5StringEncoding)
return @"iso-8859-9";
if (enc == NSISOLatin6StringEncoding)
return @"iso-8859-10";
if (enc == NSISOLatin7StringEncoding)
return @"iso-8859-13";
if (enc == NSISOLatin8StringEncoding)
return @"iso-8859-14";
if (enc == NSISOLatin9StringEncoding)
return @"iso-8859-15";
if (enc == NSWindowsCP1250StringEncoding)
return @"windows-1250";
if (enc == NSWindowsCP1251StringEncoding)
return @"windows-1251";
if (enc == NSWindowsCP1252StringEncoding)
return @"windows-1252";
if (enc == NSWindowsCP1253StringEncoding)
return @"windows-1253";
if (enc == NSWindowsCP1254StringEncoding)
return @"windows-1254";
if (enc == NSBIG5StringEncoding)
return @"big5";
if (enc == NSShiftJISStringEncoding)
return @"shift_JIS";
return @"utf-8";
NSString *charset = (NSString*)NSMapGet(encodings, (void*)enc);
if (charset == nil)
{
charset = @"utf-8";
}
return charset;
}
/**
@ -3354,6 +3314,10 @@ static NSCharacterSet *tokenSet = nil;
{
NSMutableCharacterSet *m = [[NSMutableCharacterSet alloc] init];
if (documentClass == 0)
{
documentClass = [GSMimeDocument class];
}
[m formUnionWithCharacterSet:
[NSCharacterSet characterSetWithCharactersInString:
@".()<>@,;:[]\"\\"]];
@ -3423,6 +3387,55 @@ static NSCharacterSet *tokenSet = nil;
NSMapInsert(charsets, (void*)@"shift_JIS",
(void*)NSShiftJISStringEncoding);
}
if (encodings == 0)
{
encodings = NSCreateMapTable (NSIntMapKeyCallBacks,
NSObjectMapValueCallBacks, 0);
NSMapInsert(encodings, (void*)NSASCIIStringEncoding,
(void*)@"ascii");
NSMapInsert(encodings, (void*)NSISOLatin2StringEncoding,
(void*)@"iso-8859-2");
NSMapInsert(encodings, (void*)NSISOLatin3StringEncoding,
(void*)@"iso-8859-3");
NSMapInsert(encodings, (void*)NSISOLatin4StringEncoding,
(void*)@"iso-8859-4");
NSMapInsert(encodings, (void*)NSISOCyrillicStringEncoding,
(void*)@"iso-8859-5");
NSMapInsert(encodings, (void*)NSISOArabicStringEncoding,
(void*)@"iso-8859-6");
NSMapInsert(encodings, (void*)NSISOGreekStringEncoding,
(void*)@"iso-8859-7");
NSMapInsert(encodings, (void*)NSISOHebrewStringEncoding,
(void*)@"iso-8859-8");
NSMapInsert(encodings, (void*)NSISOLatin5StringEncoding,
(void*)@"iso-8859-9");
NSMapInsert(encodings, (void*)NSISOLatin6StringEncoding,
(void*)@"iso-8859-10");
NSMapInsert(encodings, (void*)NSISOLatin7StringEncoding,
(void*)@"iso-8859-13");
NSMapInsert(encodings, (void*)NSISOLatin8StringEncoding,
(void*)@"iso-8859-14");
NSMapInsert(encodings, (void*)NSISOLatin9StringEncoding,
(void*)@"iso-8859-15");
NSMapInsert(encodings, (void*)NSWindowsCP1250StringEncoding,
(void*)@"windows-1250");
NSMapInsert(encodings, (void*)NSWindowsCP1251StringEncoding,
(void*)@"windows-1251");
NSMapInsert(encodings, (void*)NSWindowsCP1252StringEncoding,
(void*)@"windows-1252");
NSMapInsert(encodings, (void*)NSWindowsCP1253StringEncoding,
(void*)@"windows-1253");
NSMapInsert(encodings, (void*)NSWindowsCP1254StringEncoding,
(void*)@"windows-1254");
NSMapInsert(encodings, (void*)NSUnicodeStringEncoding,
(void*)@"iso-10646-ucs-2");
NSMapInsert(encodings, (void*)NSUnicodeStringEncoding,
(void*)@"iso-10646");
NSMapInsert(encodings, (void*)NSBIG5StringEncoding,
(void*)@"big5");
NSMapInsert(encodings, (void*)NSShiftJISStringEncoding,
(void*)@"shift_JIS");
}
}
}
@ -3431,7 +3444,7 @@ static NSCharacterSet *tokenSet = nil;
*/
- (void) addContent: (id)newContent
{
if ([newContent isKindOfClass: [GSMimeDocument class]] == NO)
if ([newContent isKindOfClass: documentClass] == NO)
{
[NSException raise: NSInvalidArgumentException
format: @"Content to add is not a GSMimeDocument"];
@ -3849,7 +3862,7 @@ static NSCharacterSet *tokenSet = nil;
NSString *charset = [hdr parameterForKey: @"charset"];
NSStringEncoding enc;
enc = [GSMimeDocument encodingFromCharset: charset];
enc = [documentClass encodingFromCharset: charset];
d = [content dataUsingEncoding: enc];
if (d == nil)
{
@ -3882,7 +3895,7 @@ static NSCharacterSet *tokenSet = nil;
NSString *charset = [hdr parameterForKey: @"charset"];
NSStringEncoding enc;
enc = [GSMimeDocument encodingFromCharset: charset];
enc = [documentClass encodingFromCharset: charset];
s = [[NSString alloc] initWithData: content encoding: enc];
AUTORELEASE(s);
}
@ -3894,7 +3907,7 @@ static NSCharacterSet *tokenSet = nil;
*/
- (id) copyWithZone: (NSZone*)z
{
GSMimeDocument *c = [GSMimeDocument allocWithZone: z];
GSMimeDocument *c = [documentClass allocWithZone: z];
c->headers = [[NSMutableArray allocWithZone: z] initWithArray: headers
copyItems: YES];
@ -4066,6 +4079,7 @@ static NSCharacterSet *tokenSet = nil;
source = [[[NSProcessInfo processInfo] globallyUniqueString]
dataUsingEncoding: NSUTF8StringEncoding];
digest = [source md5Digest];
memcpy(output, [digest bytes], 16);
output[16] = (sequence >> 24) & 0xff;
@ -4572,7 +4586,7 @@ static NSCharacterSet *tokenSet = nil;
unsigned len;
unsigned pos = 0;
d = [GSMimeDocument encodeBase64: d];
d = [documentClass encodeBase64: d];
ptr = [d bytes];
len = [d length];
@ -4637,7 +4651,7 @@ static NSCharacterSet *tokenSet = nil;
{
id o = [newContent objectAtIndex: c];
if ([o isKindOfClass: [GSMimeDocument class]] == NO)
if ([o isKindOfClass: documentClass] == NO)
{
[NSException raise: NSInvalidArgumentException
format: @"Content contains non-GSMimeDocument"];