From b20192f22c0654039488f5d3ec07910fe438227b Mon Sep 17 00:00:00 2001 From: Robbie Harwood Date: Fri, 4 Nov 2022 12:13:35 -0400 Subject: [PATCH] kern/env: Add function for retrieving variables as booleans Signed-off-by: Robbie Harwood Reviewed-by: Daniel Kiper --- grub-core/kern/env.c | 13 +++++++++++++ include/grub/env.h | 1 + 2 files changed, 14 insertions(+) diff --git a/grub-core/kern/env.c b/grub-core/kern/env.c index 10e08ad76..764068896 100644 --- a/grub-core/kern/env.c +++ b/grub-core/kern/env.c @@ -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) { diff --git a/include/grub/env.h b/include/grub/env.h index 76f832eb9..6b9379a30 100644 --- a/include/grub/env.h +++ b/include/grub/env.h @@ -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); -- 2.47.3