]> err.no Git - sope/blob - sope-core/samples/EncodingTool.m
fixed NGObjWeb for SOPE 3.3
[sope] / sope-core / samples / EncodingTool.m
1 /*
2   Copyright (C) 2000-2003 SKYRIX Software AG
3
4   This file is part of OGo
5
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
9   later version.
10
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.
15
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
19   02111-1307, USA.
20 */
21 // $Id$
22
23 #import "EncodingTool.h"
24 #import "common.h"
25 #import <NGStreams/NGStreams.h>
26 #import <NGMime/NGMime.h>
27 #import <NGMail/NGMail.h>
28
29 @implementation EncodingTool
30
31 - (NSUserDefaults *)userDefaults {
32   return [NSUserDefaults standardUserDefaults];
33 }
34
35
36 - (BOOL)getEncoding:(NSString *)_encodingStr
37   encoding:(NSStringEncoding *)_encoding
38 {
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;
67 #endif
68   else {
69     NSLog(@"%s: could not find encoding: '%@'",
70           __PRETTY_FUNCTION__, _encodingStr);
71     return NO;
72   }
73   return YES;
74 }
75
76 - (void)processEncoding {
77   NSData   *data;
78   NSString *str;
79
80   data = [NSData dataWithContentsOfFile:self->file];
81
82   NSLog(@"%s: got data %s", __PRETTY_FUNCTION__, [data bytes]);
83
84   str = [[[NSString alloc] initWithData:data encoding:self->fromEncoding]
85                     autorelease];
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]);
89   
90 }
91
92 /* tool operation */
93
94 - (int)usage {
95   fprintf(stderr, "usage: encoding <file>\n");
96   fprintf(stderr, "  -from_encoding  <s>\n");
97   fprintf(stderr, "  -to_encoding    <s>\n");
98   return 1;
99 }
100
101 - (int)runWithArguments:(NSArray *)_args {
102   NSUserDefaults *ud = [self userDefaults];
103   NSString *tmp;
104   
105   _args = [_args subarrayWithRange:NSMakeRange(1, [_args count] - 1)];
106   if ([_args count] == 0)
107     return [self usage];
108
109   self->file = [_args lastObject];
110
111   tmp = [ud stringForKey:@"from_encoding"];
112   if ([tmp length]) {
113     if (![self getEncoding:tmp encoding:&self->fromEncoding])
114       self->fromEncoding = [NSString defaultCStringEncoding];
115   }
116   else
117     self->fromEncoding = [NSString defaultCStringEncoding];
118
119   tmp = [ud stringForKey:@"to_encoding"];
120   if ([tmp length]) {
121     if (![self getEncoding:tmp encoding:&self->toEncoding])
122       self->toEncoding = [NSString defaultCStringEncoding];
123   }
124   else
125     self->toEncoding = [NSString defaultCStringEncoding];
126
127   NSLog(@"process file %@ with from-encoding %@ to encoding %@",
128         file, [NSString localizedNameOfStringEncoding:self->fromEncoding],
129         [NSString localizedNameOfStringEncoding:self->toEncoding]);
130
131   [self processEncoding];
132   
133   return 0;
134 }
135
136 @end /* Mime2XmlTool */