2 Copyright (C) 2000-2005 SKYRIX Software AG
4 This file is part of SOPE.
6 SOPE is free software; you can redistribute it and/or modify it under
7 the terms of the GNU Lesser General Public License as published by the
8 Free Software Foundation; either version 2, or (at your option) any
11 SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with SOPE; see the file COPYING. If not, write to the
18 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
22 #import "EncodingTool.h"
24 #import <NGStreams/NGStreams.h>
25 #import <NGMime/NGMime.h>
26 #import <NGMail/NGMail.h>
28 @implementation EncodingTool
30 - (NSUserDefaults *)userDefaults {
31 return [NSUserDefaults standardUserDefaults];
35 - (BOOL)getEncoding:(NSString *)_encodingStr
36 encoding:(NSStringEncoding *)_encoding
38 NSLog(@"_encoding %@", _encodingStr);
39 if ([_encodingStr isEqualToString:@"NSASCIIStringEncoding"])
40 *_encoding = NSASCIIStringEncoding;
41 else if ([_encodingStr isEqualToString:@"NSNEXTSTEPStringEncoding"])
42 *_encoding = NSNEXTSTEPStringEncoding;
43 else if ([_encodingStr isEqualToString:@"NSJapaneseEUCStringEncoding"])
44 *_encoding = NSJapaneseEUCStringEncoding;
45 else if ([_encodingStr isEqualToString:@"NSUTF8StringEncoding"])
46 *_encoding = NSUTF8StringEncoding;
47 else if ([_encodingStr isEqualToString:@"NSISOLatin1StringEncoding"])
48 *_encoding = NSISOLatin1StringEncoding;
49 else if ([_encodingStr isEqualToString:@"NSSymbolStringEncoding"])
50 *_encoding = NSSymbolStringEncoding;
51 else if ([_encodingStr isEqualToString:@"NSNonLossyASCIIStringEncoding"])
52 *_encoding = NSNonLossyASCIIStringEncoding;
53 else if ([_encodingStr isEqualToString:@"NSShiftJISStringEncoding"])
54 *_encoding = NSShiftJISStringEncoding;
55 else if ([_encodingStr isEqualToString:@"NSISOLatin2StringEncoding"])
56 *_encoding = NSISOLatin2StringEncoding;
57 else if ([_encodingStr isEqualToString:@"NSUnicodeStringEncoding"])
58 *_encoding = NSUnicodeStringEncoding;
59 #if LIB_FOUNDATION_LIBRARY
60 else if ([_encodingStr isEqualToString:@"NSISOLatin9StringEncoding"])
61 *_encoding = NSISOLatin9StringEncoding;
62 else if ([_encodingStr isEqualToString:@"NSAdobeStandardCyrillicStringEncoding"])
63 *_encoding = NSAdobeStandardCyrillicStringEncoding;
64 else if ([_encodingStr isEqualToString:@"NSWinLatin1StringEncoding"])
65 *_encoding = NSWinLatin1StringEncoding;
68 NSLog(@"%s: could not find encoding: '%@'",
69 __PRETTY_FUNCTION__, _encodingStr);
75 - (void)processEncoding {
79 data = [NSData dataWithContentsOfFile:self->file];
81 NSLog(@"%s: got data %s", __PRETTY_FUNCTION__, [data bytes]);
83 str = [[[NSString alloc] initWithData:data encoding:self->fromEncoding]
85 NSLog(@"%s: str length %d str %s ", __PRETTY_FUNCTION__, [str length], [str cString]);
86 data = [str dataUsingEncoding:self->toEncoding];
87 NSLog(@"%s: data length %d str %s ", __PRETTY_FUNCTION__, [data length], [data bytes]);
94 fprintf(stderr, "usage: encoding <file>\n");
95 fprintf(stderr, " -from_encoding <s>\n");
96 fprintf(stderr, " -to_encoding <s>\n");
100 - (int)runWithArguments:(NSArray *)_args {
101 NSUserDefaults *ud = [self userDefaults];
104 _args = [_args subarrayWithRange:NSMakeRange(1, [_args count] - 1)];
105 if ([_args count] == 0)
108 self->file = [_args lastObject];
110 tmp = [ud stringForKey:@"from_encoding"];
112 if (![self getEncoding:tmp encoding:&self->fromEncoding])
113 self->fromEncoding = [NSString defaultCStringEncoding];
116 self->fromEncoding = [NSString defaultCStringEncoding];
118 tmp = [ud stringForKey:@"to_encoding"];
120 if (![self getEncoding:tmp encoding:&self->toEncoding])
121 self->toEncoding = [NSString defaultCStringEncoding];
124 self->toEncoding = [NSString defaultCStringEncoding];
126 NSLog(@"process file %@ with from-encoding %@ to encoding %@",
127 file, [NSString localizedNameOfStringEncoding:self->fromEncoding],
128 [NSString localizedNameOfStringEncoding:self->toEncoding]);
130 [self processEncoding];
135 @end /* Mime2XmlTool */