3 #endif /* HAVE_CONFIG_H */
11 #include <atalk/unicode.h>
13 #define MACCHARSET "MAC_ROMAN"
15 #define flag(x) {x, #x}
22 struct flag_map flag_map[] = {
24 flag(CONV_ALLOW_COLON),
25 flag(CONV_UNESCAPEHEX),
26 flag(CONV_ESCAPEDOTS),
32 flag(CONV_PRECOMPOSE),
36 char buffer[MAXPATHLEN +2];
38 int main(int argc, char **argv)
42 char *string, *macName = MACCHARSET;
43 char *f = NULL, *t = NULL;
44 charset_t from, to, mac;
46 while ((opt = getopt(argc, argv, "m:o:f:t:")) != -1) {
49 macName = strdup(optarg);
52 for (int i = 0; i < sizeof(flag_map)/sizeof(struct flag_map) - 1; i++)
53 if ((strcmp(flag_map[i].flagname, optarg)) == 0)
54 flags |= flag_map[i].flag;
65 if ((optind + 1) != argc) {
66 printf("Usage: test [-o <conversion option> [...]] [-f <from charset>] [-t <to charset>] [-m legacy Mac charset] <string>\n");
67 printf("Defaults: -f: UTF8-MAC, -t: UTF8, -m MAC_ROMAN\n");
68 printf("Available conversion options:\n");
69 for (int i = 0; i < (sizeof(flag_map)/sizeof(struct flag_map) - 1); i++) {
70 printf("%s\n", flag_map[i].flagname);
74 string = argv[optind];
76 set_charset_name(CH_UNIX, "UTF8");
77 set_charset_name(CH_MAC, macName);
79 if ( (charset_t) -1 == (from = add_charset(f ? f : "UTF8-MAC")) ) {
80 fprintf( stderr, "Setting codepage %s as from codepage failed\n", f ? f : "UTF8-MAC");
84 if ( (charset_t) -1 == (to = add_charset(t ? t : "UTF8")) ) {
85 fprintf( stderr, "Setting codepage %s as to codepage failed\n", t ? t : "UTF8");
89 if ( (charset_t) -1 == (mac = add_charset(macName)) ) {
90 fprintf( stderr, "Setting codepage %s as Mac codepage failed\n", MACCHARSET);
95 if ((size_t)-1 == (convert_charset(from, to, mac,
96 string, strlen(string),
99 perror("Conversion error");
103 printf("from: %s\nto: %s\n", string, buffer);