2 Copyright (C) 2000-2003 SKYRIX Software AG
4 This file is part of OGo
6 OGo 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 OGo 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 OGo; see the file COPYING. If not, write to the
18 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
23 #import "EncodingTool.h"
25 #import <NGStreams/NGStreams.h>
26 #import <NGMime/NGMime.h>
27 #import <NGMail/NGMail.h>
29 @implementation EncodingTool
31 - (NSUserDefaults *)userDefaults {
32 return [NSUserDefaults standardUserDefaults];
36 - (BOOL)getEncoding:(NSString *)_encodingStr
37 encoding:(NSStringEncoding *)_encoding
39 NSLog(@"_encoding %@", _encodingStr);
40 if ([_encodingStr isEqualToString:@"NSASCIIStringEncoding"])
41 *_encoding = NSASCIIStringEncoding;
42 else if ([_encodingStr isEqualToString:@"NSNEXTSTEPStringEncoding"])
43 *_encoding = NSNEXTSTEPStringEncoding;
44 else if ([_encodingStr isEqualToString:@"NSJapaneseEUCStringEncoding"])
45 *_encoding = NSJapaneseEUCStringEncoding;
46 else if ([_encodingStr isEqualToString:@"NSUTF8StringEncoding"])
47 *_encoding = NSUTF8StringEncoding;
48 else if ([_encodingStr isEqualToString:@"NSISOLatin1StringEncoding"])
49 *_encoding = NSISOLatin1StringEncoding;
50 else if ([_encodingStr isEqualToString:@"NSSymbolStringEncoding"])
51 *_encoding = NSSymbolStringEncoding;
52 else if ([_encodingStr isEqualToString:@"NSNonLossyASCIIStringEncoding"])
53 *_encoding = NSNonLossyASCIIStringEncoding;
54 else if ([_encodingStr isEqualToString:@"NSShiftJISStringEncoding"])
55 *_encoding = NSShiftJISStringEncoding;
56 else if ([_encodingStr isEqualToString:@"NSISOLatin2StringEncoding"])
57 *_encoding = NSISOLatin2StringEncoding;
58 else if ([_encodingStr isEqualToString:@"NSUnicodeStringEncoding"])
59 *_encoding = NSUnicodeStringEncoding;
60 #if LIB_FOUNDATION_LIBRARY
61 else if ([_encodingStr isEqualToString:@"NSISOLatin9StringEncoding"])
62 *_encoding = NSISOLatin9StringEncoding;
63 else if ([_encodingStr isEqualToString:@"NSAdobeStandardCyrillicStringEncoding"])
64 *_encoding = NSAdobeStandardCyrillicStringEncoding;
65 else if ([_encodingStr isEqualToString:@"NSWinLatin1StringEncoding"])
66 *_encoding = NSWinLatin1StringEncoding;
69 NSLog(@"%s: could not find encoding: '%@'",
70 __PRETTY_FUNCTION__, _encodingStr);
76 - (void)processEncoding {
80 data = [NSData dataWithContentsOfFile:self->file];
82 NSLog(@"%s: got data %s", __PRETTY_FUNCTION__, [data bytes]);
84 str = [[[NSString alloc] initWithData:data encoding:self->fromEncoding]
86 NSLog(@"%s: str length %d str %s ", __PRETTY_FUNCTION__, [str length], [str cString]);
87 data = [str dataUsingEncoding:self->toEncoding];
88 NSLog(@"%s: data length %d str %s ", __PRETTY_FUNCTION__, [data length], [data bytes]);
95 fprintf(stderr, "usage: encoding <file>\n");
96 fprintf(stderr, " -from_encoding <s>\n");
97 fprintf(stderr, " -to_encoding <s>\n");
101 - (int)runWithArguments:(NSArray *)_args {
102 NSUserDefaults *ud = [self userDefaults];
105 _args = [_args subarrayWithRange:NSMakeRange(1, [_args count] - 1)];
106 if ([_args count] == 0)
109 self->file = [_args lastObject];
111 tmp = [ud stringForKey:@"from_encoding"];
113 if (![self getEncoding:tmp encoding:&self->fromEncoding])
114 self->fromEncoding = [NSString defaultCStringEncoding];
117 self->fromEncoding = [NSString defaultCStringEncoding];
119 tmp = [ud stringForKey:@"to_encoding"];
121 if (![self getEncoding:tmp encoding:&self->toEncoding])
122 self->toEncoding = [NSString defaultCStringEncoding];
125 self->toEncoding = [NSString defaultCStringEncoding];
127 NSLog(@"process file %@ with from-encoding %@ to encoding %@",
128 file, [NSString localizedNameOfStringEncoding:self->fromEncoding],
129 [NSString localizedNameOfStringEncoding:self->toEncoding]);
131 [self processEncoding];
136 @end /* Mime2XmlTool */