]> xenbits.xensource.com Git - seabios.git/commitdiff
add romfile_loadbool()
authorGerd Hoffmann <kraxel@redhat.com>
Fri, 22 Nov 2024 14:16:32 +0000 (15:16 +0100)
committerGerd Hoffmann <kraxel@redhat.com>
Thu, 16 Jan 2025 08:48:27 +0000 (09:48 +0100)
Translates strings in fw_cfg files into boolean values.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
src/romfile.c
src/romfile.h

index b598274edc0925526708c36eabd518d5aab30ce2..8072a9150685aede49f13af21391a0b55d0e2f27 100644 (file)
@@ -99,6 +99,29 @@ romfile_loadint(const char *name, u64 defval)
     return val;
 }
 
+u32
+romfile_loadbool(const char *name, u32 defval)
+{
+    static const char *true_strings[] = { "1", "on", "yes" };
+    static const char *false_strings[] = { "0", "off", "no" };
+    char *str = romfile_loadfile(name, NULL);
+    int i;
+
+    if (!str)
+        return defval;
+
+    for (i = 0; i < ARRAY_SIZE(true_strings); i++)
+        if (0 == strcmp(str, true_strings[i]))
+            return 1;
+
+    for (i = 0; i < ARRAY_SIZE(false_strings); i++)
+        if (0 == strcmp(str, false_strings[i]))
+            return 0;
+
+    dprintf(1, "%s: unknown bool string: %s\n", __func__, str);
+    return defval;
+}
+
 struct const_romfile_s {
     struct romfile_s file;
     void *data;
index 3e0f820047dd7b9acd60a0ad64e46c741e3c81b1..ae2f4ac7e718e79017d73f9a53b474a8c992dfb4 100644 (file)
@@ -15,6 +15,7 @@ struct romfile_s *romfile_findprefix(const char *prefix, struct romfile_s *prev)
 struct romfile_s *romfile_find(const char *name);
 void *romfile_loadfile(const char *name, int *psize);
 u64 romfile_loadint(const char *name, u64 defval);
+u32 romfile_loadbool(const char *name, u32 defval);
 
 void const_romfile_add_int(char *name, u32 value);