]> arthur.barton.de Git - netatalk.git/blobdiff - bin/misc/netacnv.c
Merge 3.0.2 release branch
[netatalk.git] / bin / misc / netacnv.c
index e42c76b526b36013ace3c53f993ee2be8efb90f9..70c822d80419e97d342cc9ee6e0ae57719de8bf2 100644 (file)
@@ -21,7 +21,6 @@ struct flag_map {
 
 struct flag_map flag_map[] = {
     flag(CONV_ESCAPEHEX),
-    flag(CONV_ALLOW_COLON),
     flag(CONV_UNESCAPEHEX),    
     flag(CONV_ESCAPEDOTS),
     flag(CONV_IGNORE),
@@ -39,29 +38,32 @@ int main(int argc, char **argv)
 {
     int opt;
     uint16_t flags = 0;
-    char *string;
+    char *string, *macName = MACCHARSET;
     char *f = NULL, *t = NULL;
     charset_t from, to, mac;
 
-    while ((opt = getopt(argc, argv, ":o:f:t:")) != -1) {
+    while ((opt = getopt(argc, argv, "m:o:f:t:")) != -1) {
         switch(opt) {
+        case 'm':
+            macName = strdup(optarg);
+            break;
         case 'o':
             for (int i = 0; i < sizeof(flag_map)/sizeof(struct flag_map) - 1; i++)
                 if ((strcmp(flag_map[i].flagname, optarg)) == 0)
                     flags |= flag_map[i].flag;
             break;
         case 'f':
-            f = optarg;
+            f = strdup(optarg);
             break;
         case 't':
-            t = optarg;
+            t = strdup(optarg);
             break;
         }
     }
 
     if ((optind + 1) != argc) {
-        printf("Usage: test [-o <conversion option> [...]] [-f <from charset>] [-t <to charset>] <string>\n");
-        printf("Defaults: -f: UTF8-MAC , -t: UTF8 \n");
+        printf("Usage: test [-o <conversion option> [...]] [-f <from charset>] [-t <to charset>] [-m legacy Mac charset] <string>\n");
+        printf("Defaults: -f: UTF8-MAC, -t: UTF8, -m MAC_ROMAN\n");
         printf("Available conversion options:\n");
         for (int i = 0; i < (sizeof(flag_map)/sizeof(struct flag_map) - 1); i++) {
             printf("%s\n", flag_map[i].flagname);
@@ -70,6 +72,9 @@ int main(int argc, char **argv)
     }
     string = argv[optind];
 
+    set_charset_name(CH_UNIX, "UTF8");
+    set_charset_name(CH_MAC, macName);
+
     if ( (charset_t) -1 == (from = add_charset(f ? f : "UTF8-MAC")) ) {
         fprintf( stderr, "Setting codepage %s as from codepage failed\n", f ? f : "UTF8-MAC");
         return (-1);
@@ -80,7 +85,7 @@ int main(int argc, char **argv)
         return (-1);
     }
 
-    if ( (charset_t) -1 == (mac = add_charset(MACCHARSET)) ) {
+    if ( (charset_t) -1 == (mac = add_charset(macName)) ) {
         fprintf( stderr, "Setting codepage %s as Mac codepage failed\n", MACCHARSET);
         return (-1);
     }