diff --git a/Source/Additions/GSMime.m b/Source/Additions/GSMime.m index dd287e4c3..632ff6dd3 100644 --- a/Source/Additions/GSMime.m +++ b/Source/Additions/GSMime.m @@ -716,164 +716,6 @@ wordData(NSString *word) return AUTORELEASE([[self alloc] init]); } -/* - * Examine xml data to find out the characterset needed to convert from - * binary data to an NSString object. - */ -+ (NSString*) charsetForXml: (NSData*)xml -{ - unsigned int length = [xml length]; - const unsigned char *ptr = (const unsigned char*)[xml bytes]; - const unsigned char *end = ptr + length; - unsigned int offset = 0; - unsigned int size = 1; - unsigned char quote = 0; - unsigned char buffer[30]; - unsigned int buflen = 0; - BOOL found = NO; - - if (length < 4) - { - // Not long enough to determine an encoding - return nil; - } - - /* - * Determine encoding using byte-order-mark if present - */ - if ((ptr[0] == 0xFE && ptr[1] == 0xFF) - || (ptr[0] == 0xFF && ptr[1] == 0xFE)) - { - return @"utf-16"; - } - if (ptr[0] == 0xEF && ptr[1] == 0xBB && ptr[2] == 0xBF) - { - return @"utf-8"; - } - if ((ptr[0] == 0x00 && ptr[1] == 0x00) - && ((ptr[2] == 0xFE && ptr[3] == 0xFF) - || (ptr[2] == 0xFF && ptr[3] == 0xFE))) - { - return @"ucs-4"; - } - - /* - * Look for nul bytes to determine whether this is a four byte - * encoding or a two byte encoding (or the default). - */ - if (ptr[0] == 0 && ptr[1] == 0 && ptr[2] == 0) - { - offset = 3; - size = 4; - } - else if (ptr[0] == 0 && ptr[1] == 0 && ptr[3] == 0) - { - offset = 2; - size = 4; - } - else if (ptr[0] == 0 && ptr[2] == 0 && ptr[3] == 0) - { - offset = 1; - size = 4; - } - else if (ptr[1] == 0 && ptr[2] == 0 && ptr[3] == 0) - { - offset = 0; - size = 4; - } - else if (ptr[0] == 0) - { - offset = 1; - size = 2; - } - else if (ptr[1] == 0) - { - offset = 0; - size = 2; - } - - /* - * Now look for the xml encoding declaration ... - */ - - // Tolerate leading whitespace - while (ptr + size <= end && isspace(ptr[offset])) ptr += size; - - if (ptr + (size * 20) >= end || ptr[offset] != '<' || ptr[offset+size] != '?') - { - if (size == 1) - { - return @"utf-8"; - } - else if (size == 2) - { - return @"utf-16"; - } - else - { - return @"ucs-4"; - } - } - ptr += size * 5; // Step past '= end || ptr[offset] != '<' || ptr[offset+size] != '?') + { + if (size == 1) + { + return @"utf-8"; + } + else if (size == 2) + { + return @"utf-16"; + } + else + { + return @"ucs-4"; + } + } + ptr += size * 5; // Step past '