diff tools/64vw.c @ 2602:a4f6584edca9

Hopefully improve the use-cases for 64vw "-l" option by also listing files that are not recognized.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 19 Nov 2023 20:02:03 +0200
parents c3c1d3c75f53
children a9aef6911f7b
line wrap: on
line diff
--- a/tools/64vw.c	Sun Nov 19 15:43:31 2023 +0200
+++ b/tools/64vw.c	Sun Nov 19 20:02:03 2023 +0200
@@ -43,7 +43,7 @@
     { 14, 'f', "format"          , "Force input format (see --formats)", OPT_ARGREQ },
     { 16, 'F', "formats"         , "List supported input formats", OPT_NONE },
     { 18, 'i', "info"            , "Print information only (no display)", OPT_NONE },
-    { 20, 'l', "list"            , "List files that were recognized (implies -i)", OPT_NONE },
+    { 20, 'l', "list"            , "One line per file list of detected format", OPT_NONE },
     { 22, 'P', "probe"           , "Probe only (do not attempt to decode the image)", OPT_NONE },
     { 24,   0, "char-rom"        , "Set character ROM file to be used.", OPT_ARGREQ },
     { 26, 'p', "palette"         , "Set C64 palette to be used (see -p list).", OPT_ARGREQ },
@@ -335,24 +335,35 @@
             const DMC64ImageFormat *fmt = NULL;
             DMC64Image *cimage = NULL;
 
-            if ((res = dmReadC64Image(filename, forced, &fmt, &cimage)) != DMERR_OK)
+            res = dmReadC64Image(filename, forced, &fmt, &cimage);
+            if (optListOnly)
             {
-                if (!optListOnly && res != DMERR_NOT_SUPPORTED)
+                fprintf(stdout, "%s | ", filename);
+                if (res == DMERR_OK || res == DMERR_NOT_SUPPORTED)
+                {
+                    fprintf(stdout, "%s [%s]\n",
+                        fmt != NULL ? fmt->name : "UNKNOWN",
+                        fmt != NULL ? fmt->fext : "???");
+                }
+                else
+                {
+                    fprintf(stdout, "ERROR: %s\n",
+                        dmErrorStr(res));
+                }
+            }
+            else
+            {
+                fprintf(stdout, "\n%s\n", filename);
+                if (res == DMERR_OK || res == DMERR_NOT_SUPPORTED)
+                {
+                    dmC64ImageDump(stdout, cimage, fmt, "  ");
+                }
+                else
                 {
                     dmErrorMsg("Could not decode file '%s': %s\n",
                         filename, dmErrorStr(res));
                 }
             }
-            else
-            if (optListOnly)
-            {
-                fprintf(stdout, "%s\n", filename);
-            }
-            else
-            {
-                fprintf(stdout, "\n%s\n", filename);
-                dmC64ImageDump(stdout, cimage, fmt, "  ");
-            }
 
             dmC64ImageFree(cimage);
         }