Mercurial > hg > dmlib
changeset 1863:b2287ace1f0d
Make input format -i option saner and more uniform with output format option -f
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 24 Jun 2018 17:03:41 +0300 |
parents | 4e1de3546890 |
children | 897250732bfd |
files | tools/gfxconv.c |
diffstat | 1 files changed, 18 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/tools/gfxconv.c Sun Jun 24 17:02:32 2018 +0300 +++ b/tools/gfxconv.c Sun Jun 24 17:03:41 2018 +0300 @@ -120,8 +120,8 @@ { 0, '?', "help", "Show this help", OPT_NONE }, { 15, 'v', "verbose", "Increase verbosity", OPT_NONE }, { 3, 'o', "output", "Output filename", OPT_ARGREQ }, - { 1, 'i', "informat", "Set input format (sprite[:mc:sc], char[:mc|sc], bitmap[:<bformat>], image)", OPT_ARGREQ }, { 2, 'm', "multicolor", "Input is multicolor / output in multicolor", OPT_NONE }, + { 1, 'i', "informat", "Set input format (spr[:mc:sc], chr[:mc|sc] or any supported image or C64 bitmap format)", OPT_ARGREQ }, { 4, 's', "skip", "Skip N bytes in input from start", OPT_ARGREQ }, { 5, 'f', "format", "Output format (see --formats)", OPT_ARGREQ }, { 17, 'F', "formats", "List supported input/output formats", OPT_NONE }, @@ -487,46 +487,40 @@ case 1: { - switch (tolower(optArg[0])) + char *flags = strchr(optArg, ':'); + if (flags != NULL) + *flags++ = 0; + + if (!dmGetFormatByExt(optArg, &optInFormat, &optInSubFormat) && + !dmGetC64FormatByExt(optArg, &optInFormat, &optInSubFormat)) { - case 's': optInFormat = FFMT_SPRITE; break; - case 'c': optInFormat = FFMT_CHAR; break; - case 'b': optInFormat = FFMT_BITMAP; break; - case 'i': optInFormat = FFMT_IMAGE; break; - default: - dmErrorMsg("Invalid input format '%s'.\n", optArg); - return FALSE; + dmErrorMsg("Invalid input format '%s', see -F / --formats for format list.\n", optArg); + return FALSE; } - char *tmp = strchr(optArg, ':'); - if (tmp != NULL) + if (flags != NULL) { - tmp++; switch (optInFormat) { case FFMT_SPRITE: case FFMT_CHAR: - if (strcasecmp(tmp, "mc") == 0) + if (strcasecmp(flags, "mc") == 0) optInMulticolor = TRUE; else - if (strcasecmp(tmp, "sc") == 0) + if (strcasecmp(flags, "sc") == 0) optInMulticolor = FALSE; else { - dmErrorMsg("Invalid input subformat for sprite/char: '%s', should be 'mc' or 'sc'.\n", - tmp); + dmErrorMsg("Invalid input format flags for sprite/char '%s', should be 'mc' or 'sc'.\n", + flags); return FALSE; } break; - case FFMT_BITMAP: - if (!dmGetC64FormatByExt(tmp, &optInFormat, &optInSubFormat)) - { - dmErrorMsg("Invalid bitmap subformat '%s', see format list for valid bformats.\n", - tmp); - return FALSE; - } - break; + default: + dmErrorMsg("Input format '%s' does not support any flags ('%s').\n", + optArg, flags); + return FALSE; } } }