From c380057b28f19cfa15ac46338358b29326827cb4 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 26 Aug 2010 20:45:23 +0000 Subject: [PATCH] Monotone-Parent: 7a136da813c9771632c72c06589d2cb6383ef052 Monotone-Revision: 748bc1fd6d5c867c7b2b4da7574602b322a35fa5 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2010-08-26T20:45:23 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ SoObjects/SOGo/NSString+Utilities.m | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index af0e05b8b..b3e2aaca9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2010-08-26 Wolfgang Sourdeau + * SoObjects/SOGo/NSString+Utilities.m (-asQPSubjectString:): we + use "NGEncodeQuotedPrintableMime" instead of + "dataByEncodingQuotedPrintable" (NGQuotedPrintableCoding), as it's + more suited for email header fields. + * SoObjects/Mailer/SOGoDraftObject.m (_quoteSpecials:): now work on single strings. (_quoteSpecialsInArray:): new method that offers the same diff --git a/SoObjects/SOGo/NSString+Utilities.m b/SoObjects/SOGo/NSString+Utilities.m index 108bc508f..b59b58291 100644 --- a/SoObjects/SOGo/NSString+Utilities.m +++ b/SoObjects/SOGo/NSString+Utilities.m @@ -22,14 +22,15 @@ #import #import +#import #import #import #import #import -#import +#import #import "NSArray+Utilities.h" #import "NSDictionary+BSJSONAdditions.h" #import "NSDictionary+URL.h" @@ -392,10 +393,21 @@ static int cssEscapingCount; { NSString *qpString, *subjectString; NSData *subjectData, *destSubjectData; + NSUInteger length, destLength; + unsigned char *destString; +#warning "encoding" parameter is not useful subjectData = [self dataUsingEncoding: NSUTF8StringEncoding]; - destSubjectData = [subjectData dataByEncodingQuotedPrintable]; + length = [subjectData length]; + destLength = length * 3; + destString = calloc (destLength, sizeof (char)); + NGEncodeQuotedPrintableMime ([subjectData bytes], length, + destString, destLength); + + destSubjectData = [NSData dataWithBytesNoCopy: destString + length: strlen ((char *) destString) + freeWhenDone: YES]; qpString = [[NSString alloc] initWithData: destSubjectData encoding: NSASCIIStringEncoding]; [qpString autorelease];