Improve debug output

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@38935 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2015-08-27 13:35:45 +00:00
parent 19ab49d97a
commit 488aae9e67

View file

@ -117,6 +117,7 @@ static NSMapTable *charsets = 0;
static NSMapTable *encodings = 0; static NSMapTable *encodings = 0;
static Class NSArrayClass = 0; static Class NSArrayClass = 0;
static Class NSStringClass = 0; static Class NSStringClass = 0;
static Class NSDataClass = 0;
static Class documentClass = 0; static Class documentClass = 0;
typedef BOOL (*boolIMP)(id, SEL, id); typedef BOOL (*boolIMP)(id, SEL, id);
@ -458,48 +459,6 @@ selectCharacterSet(NSString *str, NSData **d)
return @"us-ascii"; // Default character set. return @"us-ascii"; // Default character set.
if ((*d = [str dataUsingEncoding: NSISOLatin1StringEncoding]) != nil) if ((*d = [str dataUsingEncoding: NSISOLatin1StringEncoding]) != nil)
return @"iso-8859-1"; return @"iso-8859-1";
/*
* What's the point of trying loads of charactersets ... utf-8 is
* well-known nowadays, so if we can't use ascii or latin1 we may
* as well go straight to utf-8
*/
#if 0
if ((*d = [str dataUsingEncoding: NSISOLatin2StringEncoding]) != nil)
return @"iso-8859-2";
if ((*d = [str dataUsingEncoding: NSISOLatin3StringEncoding]) != nil)
return @"iso-8859-3";
if ((*d = [str dataUsingEncoding: NSISOLatin4StringEncoding]) != nil)
return @"iso-8859-4";
if ((*d = [str dataUsingEncoding: NSISOCyrillicStringEncoding]) != nil)
return @"iso-8859-5";
if ((*d = [str dataUsingEncoding: NSISOArabicStringEncoding]) != nil)
return @"iso-8859-6";
if ((*d = [str dataUsingEncoding: NSISOGreekStringEncoding]) != nil)
return @"iso-8859-7";
if ((*d = [str dataUsingEncoding: NSISOHebrewStringEncoding]) != nil)
return @"iso-8859-8";
if ((*d = [str dataUsingEncoding: NSISOLatin5StringEncoding]) != nil)
return @"iso-8859-9";
if ((*d = [str dataUsingEncoding: NSISOLatin6StringEncoding]) != nil)
return @"iso-8859-10";
if ((*d = [str dataUsingEncoding: NSISOLatin7StringEncoding]) != nil)
return @"iso-8859-13";
if ((*d = [str dataUsingEncoding: NSISOLatin8StringEncoding]) != nil)
return @"iso-8859-14";
if ((*d = [str dataUsingEncoding: NSISOLatin9StringEncoding]) != nil)
return @"iso-8859-15";
if ((*d = [str dataUsingEncoding: NSWindowsCP1250StringEncoding]) != nil)
return @"windows-1250";
if ((*d = [str dataUsingEncoding: NSWindowsCP1251StringEncoding]) != nil)
return @"windows-1251";
if ((*d = [str dataUsingEncoding: NSWindowsCP1252StringEncoding]) != nil)
return @"windows-1252";
if ((*d = [str dataUsingEncoding: NSWindowsCP1253StringEncoding]) != nil)
return @"windows-1253";
if ((*d = [str dataUsingEncoding: NSWindowsCP1254StringEncoding]) != nil)
return @"windows-1254";
#endif
*d = [str dataUsingEncoding: NSUTF8StringEncoding]; *d = [str dataUsingEncoding: NSUTF8StringEncoding];
return @"utf-8"; // Catch-all character set. return @"utf-8"; // Catch-all character set.
} }
@ -912,6 +871,10 @@ wordData(NSString *word, BOOL *encoded)
{ {
NSArrayClass = [NSArray class]; NSArrayClass = [NSArray class];
} }
if (NSDataClass == 0)
{
NSDataClass = [NSData class];
}
if (NSStringClass == 0) if (NSStringClass == 0)
{ {
NSStringClass = [NSString class]; NSStringClass = [NSString class];
@ -2507,8 +2470,12 @@ NSDebugMLLog(@"GSMime", @"Header parsed - %@", info);
} }
} }
/* We assume any text data is best treated as a string
* unless it's some format we will probably be parsing.
*/
if ([type isEqualToString: @"text"] == YES if ([type isEqualToString: @"text"] == YES
&& [subtype isEqualToString: @"xml"] == NO) && [subtype isEqualToString: @"xml"] == NO
&& [subtype isEqualToString: @"json"] == NO)
{ {
NSStringEncoding stringEncoding = _defaultEncoding; NSStringEncoding stringEncoding = _defaultEncoding;
NSString *string; NSString *string;
@ -5416,7 +5383,7 @@ appendString(NSMutableData *m, NSUInteger offset, NSUInteger fold,
[hdr setParameter: charset forKey: @"charset"]; [hdr setParameter: charset forKey: @"charset"];
} }
} }
else if ([content isKindOfClass: [NSData class]] == YES) else if ([content isKindOfClass: NSDataClass] == YES)
{ {
d = content; d = content;
} }
@ -5435,26 +5402,27 @@ appendString(NSMutableData *m, NSUInteger offset, NSUInteger fold,
{ {
s = content; s = content;
} }
else if ([content isKindOfClass: [NSData class]] == YES) else if ([content isKindOfClass: NSDataClass] == YES)
{ {
GSMimeHeader *hdr = [self headerNamed: @"content-type"]; GSMimeHeader *hdr = [self headerNamed: @"content-type"];
NSString *charset = [hdr parameterForKey: @"charset"]; NSString *charset = [hdr parameterForKey: @"charset"];
NSString *s = [hdr objectForKey: @"Subtype"];
NSStringEncoding enc; NSStringEncoding enc;
/* if (charset == nil)
* Treat text/xml as a special case ... if we have no charset {
* specified then we can get the charset from the xml header /* Treat xml as a special case ... if we have no charset
* or, if that is not present, xml is utf-8 * specified then we can get the charset from the xml header
*/ */
if (charset == nil if ([s isEqualToString: @"xml"] == YES)
&& [[hdr objectForKey: @"Subtype"] isEqualToString: @"xml"] == YES) {
{ charset = [documentClass charsetForXml: content];
charset = [documentClass charsetForXml: content]; }
if (charset == nil) if (charset == nil)
{ {
charset = @"utf-8"; charset = @"utf-8";
} }
} }
enc = [documentClass encodingFromCharset: charset]; enc = [documentClass encodingFromCharset: charset];
s = [NSStringClass allocWithZone: NSDefaultMallocZone()]; s = [NSStringClass allocWithZone: NSDefaultMallocZone()];
s = [s initWithData: content encoding: enc]; s = [s initWithData: content encoding: enc];
@ -5570,7 +5538,26 @@ appendString(NSMutableData *m, NSUInteger offset, NSUInteger fold,
(NSUInteger)self]; (NSUInteger)self];
locale = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; locale = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
[desc appendString: [headers descriptionWithLocale: locale]]; [desc appendString: [headers descriptionWithLocale: locale]];
[desc appendFormat: @"\nDocument content -\n%@", content]; if ([content isKindOfClass: NSDataClass])
{
NSString *t = [content convertToText];
if (nil != t)
{
[desc appendFormat:
@"\nDocument content %lu chars:\n%@\n%lu bytes: %@",
[t length], t, [content length], content];
}
else
{
[desc appendFormat: @"\nDocument content %lu bytes: %@",
[content length], content];
}
}
else
{
[desc appendFormat: @"\nDocument content -\n%@", content];
}
return desc; return desc;
} }
@ -5919,7 +5906,7 @@ appendString(NSMutableData *m, NSUInteger offset, NSUInteger fold,
{ {
[self setContent: content type: @"text/plain" name: nil]; [self setContent: content type: @"text/plain" name: nil];
} }
else if ([content isKindOfClass: [NSData class]] == YES) else if ([content isKindOfClass: NSDataClass] == YES)
{ {
[self setContent: content [self setContent: content
type: @"application/octet-stream" type: @"application/octet-stream"
@ -6296,7 +6283,7 @@ appendString(NSMutableData *m, NSUInteger offset, NSUInteger fold,
ASSIGNCOPY(content, newContent); ASSIGNCOPY(content, newContent);
} }
} }
else if ([newContent isKindOfClass: [NSData class]] == YES) else if ([newContent isKindOfClass: NSDataClass] == YES)
{ {
if (newContent != content) if (newContent != content)
{ {