/*
- Copyright (C) 2000-2004 SKYRIX Software AG
+ Copyright (C) 2000-2005 SKYRIX Software AG
- This file is part of OpenGroupware.org.
+ This file is part of SOPE.
- OGo is free software; you can redistribute it and/or modify it under
+ SOPE is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
- OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+ SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with OGo; see the file COPYING. If not, write to the
+ License along with SOPE; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
return @"";
destSize = (len + 2) / 3 * 4; // 3:4 conversion ratio
- destSize += destSize / NSStringMaxLineWidth + 2; // space for newlines and '\0'
+ destSize += destSize / NSStringMaxLineWidth + 2; // space for '\n' and '\0'
destSize += 64;
dest = malloc(destSize + 4);
if (dest == NULL) return nil;
@implementation NSData(Base64Coding)
+// TODO: explain that size (which RFC specifies that?)
static int NSDataMaxLineWidth = 72;
-- (NSData *)dataByEncodingBase64 {
+- (NSData *)dataByEncodingBase64WithLineLength:(unsigned)_lineLength {
unsigned len;
size_t destSize;
size_t destLength = -1;
return [NSData data];
destSize = (len + 2) / 3 * 4; // 3:4 conversion ratio
- destSize += destSize / NSDataMaxLineWidth + 2; // space for newlines and '\0'
+ destSize += destSize / _lineLength + 2; // space for newlines and '\0'
destSize += 64;
dest = malloc(destSize + 4);
NSAssert(dest, @"invalid buffer ..");
if (encode_base64([self bytes], len,
- dest, destSize, &destLength, NSDataMaxLineWidth) == 0) {
+ dest, destSize, &destLength, _lineLength) == 0) {
return [NSData dataWithBytesNoCopy:dest length:destLength];
}
- else {
- if (dest) free((void *)dest);
- return nil;
- }
+
+ if (dest != NULL) free((void *)dest);
+ return nil;
+}
+- (NSData *)dataByEncodingBase64 {
+ return [self dataByEncodingBase64WithLineLength:NSDataMaxLineWidth];
}
- (NSData *)dataByDecodingBase64 {