From fcd58ba83962ceb8bfede0bad55df6f10ceb9b8c Mon Sep 17 00:00:00 2001 From: Frank Lahm Date: Wed, 2 Jan 2013 11:53:32 +0100 Subject: [PATCH] strdup optarg and add -m option for specifying the Mac charset --- bin/misc/netacnv.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/bin/misc/netacnv.c b/bin/misc/netacnv.c index d82d0073..e9721cea 100644 --- a/bin/misc/netacnv.c +++ b/bin/misc/netacnv.c @@ -39,29 +39,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 [...]] [-f ] [-t ] \n"); - printf("Defaults: -f: UTF8-MAC , -t: UTF8 \n"); + printf("Usage: test [-o [...]] [-f ] [-t ] [-m legacy Mac charset] \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); @@ -71,7 +74,7 @@ int main(int argc, char **argv) string = argv[optind]; set_charset_name(CH_UNIX, "UTF8"); - set_charset_name(CH_MAC, "MAC_ROMAN"); + 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"); @@ -83,7 +86,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); } -- 2.39.2