]> err.no Git - sope/blobdiff - sope-core/NGExtensions/NGQuotedPrintableCoding.m
rewrote a few things to use unicode methods
[sope] / sope-core / NGExtensions / NGQuotedPrintableCoding.m
index d1c2efb7d90d96bb00803384b826eed5ad25b86c..b169c8daeb97159767cbab9634cd1266110744de 100644 (file)
@@ -1,6 +1,6 @@
 /*
-  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) */