Author: rfm
Date: Thu Aug 27 15:35:45 2015
New Revision: 38935
URL: http://svn.gna.org/viewcvs/gnustep?rev=38935&view=rev
Log:
Improve debug output
Modified:
libs/base/trunk/Source/Additions/GSMime.m
Modified: libs/base/trunk/Source/Additions/GSMime.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/Additions/GSMime.m?rev=38935&r1=38934&r2=38935&view=diff
==============================================================================
--- libs/base/trunk/Source/Additions/GSMime.m (original)
+++ libs/base/trunk/Source/Additions/GSMime.m Thu Aug 27 15:35:45 2015
@@ -117,6 +117,7 @@
static NSMapTable *encodings = 0;
static Class NSArrayClass = 0;
static Class NSStringClass = 0;
+static Class NSDataClass = 0;
static Class documentClass = 0;
typedef BOOL (*boolIMP)(id, SEL, id);
@@ -458,48 +459,6 @@
return @"us-ascii"; // Default character set.
if ((*d = [str dataUsingEncoding: NSISOLatin1StringEncoding]) != nil)
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];
return @"utf-8"; // Catch-all character set.
}
@@ -911,6 +870,10 @@
if (NSArrayClass == 0)
{
NSArrayClass = [NSArray class];
+ }
+ if (NSDataClass == 0)
+ {
+ NSDataClass = [NSData class];
}
if (NSStringClass == 0)
{
@@ -2507,8 +2470,12 @@
}
}
+ /* 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
- && [subtype isEqualToString: @"xml"] == NO)
+ && [subtype isEqualToString: @"xml"] == NO
+ && [subtype isEqualToString: @"json"] == NO)
{
NSStringEncoding stringEncoding = _defaultEncoding;
NSString *string;
@@ -5416,7 +5383,7 @@
[hdr setParameter: charset forKey: @"charset"];
}
}
- else if ([content isKindOfClass: [NSData class]] == YES)
+ else if ([content isKindOfClass: NSDataClass] == YES)
{
d = content;
}
@@ -5435,26 +5402,27 @@
{
s = content;
}
- else if ([content isKindOfClass: [NSData class]] == YES)
+ else if ([content isKindOfClass: NSDataClass] == YES)
{
GSMimeHeader *hdr = [self headerNamed: @"content-type"];
NSString *charset = [hdr parameterForKey: @"charset"];
+ NSString *s = [hdr objectForKey: @"Subtype"];
NSStringEncoding enc;
- /*
- * Treat text/xml as a special case ... if we have no charset
- * specified then we can get the charset from the xml header
- * or, if that is not present, xml is utf-8
- */
- if (charset == nil
- && [[hdr objectForKey: @"Subtype"] isEqualToString: @"xml"] == YES)
- {
- charset = [documentClass charsetForXml: content];
- if (charset == nil)
- {
- charset = @"utf-8";
- }
- }
+ if (charset == nil)
+ {
+ /* Treat xml as a special case ... if we have no charset
+ * specified then we can get the charset from the xml header
+ */
+ if ([s isEqualToString: @"xml"] == YES)
+ {
+ charset = [documentClass charsetForXml: content];
+ }
+ if (charset == nil)
+ {
+ charset = @"utf-8";
+ }
+ }
enc = [documentClass encodingFromCharset: charset];
s = [NSStringClass allocWithZone: NSDefaultMallocZone()];
s = [s initWithData: content encoding: enc];
@@ -5570,7 +5538,26 @@
(NSUInteger)self];
locale = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
[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;
}
@@ -5919,7 +5906,7 @@
{
[self setContent: content type: @"text/plain" name: nil];
}
- else if ([content isKindOfClass: [NSData class]] == YES)
+ else if ([content isKindOfClass: NSDataClass] == YES)
{
[self setContent: content
type: @"application/octet-stream"
@@ -6296,7 +6283,7 @@
ASSIGNCOPY(content, newContent);
}
}
- else if ([newContent isKindOfClass: [NSData class]] == YES)
+ else if ([newContent isKindOfClass: NSDataClass] == YES)
{
if (newContent != content)
{
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs