]> git.sur5r.net Git - cc65/commitdiff
Fix FindInputFormat.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 5 Mar 2012 19:28:22 +0000 (19:28 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 5 Mar 2012 19:28:22 +0000 (19:28 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@5577 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/sp65/input.c
src/sp65/main.c

index 735e4920c163dfe14489c2c1f5dd947f8c4f57f0..a34e527e7977cfe536d12671bdac63d0dad05b15 100644 (file)
@@ -33,6 +33,8 @@
 
 
 
+#include <stdlib.h>
+
 /* common */
 #include "fileid.h"
 
@@ -78,14 +80,27 @@ static const FileId FormatTable[] = {
 
 
 
+static int Compare (const void* Key, const void* Id)
+/* Compare function for bsearch */
+{
+    return strcmp (Key, ((const FileId*) Id)->Ext);
+}
+
+
+
 int FindInputFormat (const char* Name)
 /* Find an input format by name. The function returns a value less than zero
  * if Name is not a known input format.
  */
 {
-    /* Search for the entry in the table */
-    const FileId* F = GetFileId (Name, FormatTable,
-                                 sizeof (FormatTable) / sizeof (FormatTable[0]));
+    /* Search for the entry in the table. */
+    const FileId* F = bsearch (Name,
+                               FormatTable,
+                               sizeof (FormatTable) / sizeof (FormatTable[0]),
+                               sizeof (FormatTable[0]),
+                               Compare);
+
+    /* Return the id or an error code */
     return (F == 0)? -1 : F->Id;
 }
 
index cd159a1b36dd356dc3ade3fee458bc6193ce8cbb..a49b69fbebe5b789a1f86033d10e3088e613c8dc 100644 (file)
@@ -118,7 +118,7 @@ static void OptRead (const char* Opt, const char* Arg)
     const char* Format = GetAttrVal (C, "format");
     if (Format != 0) {
         IF = FindInputFormat (Format);
-        if (IF <= 0) {
+        if (IF < 0) {
             Error ("Unknown input format `%s'", Format);
         }
     }