/*
- Copyright (C) 2000-2006 SKYRIX Software AG
- Copyright (C) 2006 Helge Hess
+ Copyright (C) 2000-2008 SKYRIX Software AG
+ Copyright (C) 2006-2008 Helge Hess
This file is part of SOPE.
@implementation NSString(QuotedPrintableCoding)
- (NSString *)stringByDecodingQuotedPrintable {
- NSData *data;
- unsigned len;
+ NSData *data;
- if ((len = [self cStringLength]) > 0) {
- void *buf;
- buf = malloc(len + 10);
- [self getCString:buf];
- data = [NSData dataWithBytes:buf length:len];
- if (buf != NULL) free(buf);
- }
- else
- data = [NSData data];
+ data = ([self length] > 0)
+ ? [self dataUsingEncoding:NSASCIIStringEncoding]
+ : [NSData data];
data = [data dataByDecodingQuotedPrintable];
-
+
// TODO: should we default to some specific charset instead? (either
// Latin1 or UTF-8
+ // or the charset of the receiver?
return [NSString stringWithCString:[data bytes] length:[data length]];
}
- (NSString *)stringByEncodingQuotedPrintable {
NSData *data;
- unsigned len;
- if ((len = [self cStringLength])) {
- void *buf;
- buf = malloc(len + 10);
- [self getCString:buf];
- data = [NSData dataWithBytes:buf length:len];
- free(buf);
- }
- else
- data = [NSData data];
+ // TBD: which encoding to use?
+ data = ([self length] > 0)
+ ? [self dataUsingEncoding:[NSString defaultCStringEncoding]]
+ : [NSData data];
data = [data dataByEncodingQuotedPrintable];
- return [NSString stringWithCString:[data bytes] length:[data length]];
+ return [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]
+ autorelease];
}
@end /* NSString(QuotedPrintableCoding) */