]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
kern/env: Add function for retrieving variables as booleans
authorRobbie Harwood <rharwood@redhat.com>
Fri, 4 Nov 2022 16:13:35 +0000 (12:13 -0400)
committerDaniel Kiper <daniel.kiper@oracle.com>
Mon, 14 Nov 2022 16:21:53 +0000 (17:21 +0100)
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/kern/env.c
include/grub/env.h

index 10e08ad76c092cfdd6a41c05873cb028b88b340d..764068896309b10b38c5111eccfc551744e3df97 100644 (file)
@@ -144,6 +144,19 @@ grub_env_get (const char *name)
   return var->value;
 }
 
+bool
+grub_env_get_bool (const char *name, bool if_unset)
+{
+  const char *val = grub_env_get (name);
+
+  if (val == NULL || grub_strlen (val) < 1)
+    return if_unset;
+  if (grub_strcmp (val, "0") == 0 || grub_strcmp (val, "false") == 0 ||
+      grub_strcmp (val, "disable") == 0 || grub_strcmp (val, "no") == 0)
+    return false;
+  return true;
+}
+
 void
 grub_env_unset (const char *name)
 {
index 76f832eb94b225b1da39f11ab4883d263c3ecc31..6b9379a300f8bb14623a63d25b62b3a368548f02 100644 (file)
@@ -45,6 +45,7 @@ struct grub_env_var
 
 grub_err_t EXPORT_FUNC(grub_env_set) (const char *name, const char *val);
 const char *EXPORT_FUNC(grub_env_get) (const char *name);
+bool EXPORT_FUNC(grub_env_get_bool) (const char *name, bool if_unset);
 void EXPORT_FUNC(grub_env_unset) (const char *name);
 struct grub_env_var *EXPORT_FUNC(grub_env_update_get_sorted) (void);