From: Robbie Harwood Date: Fri, 4 Nov 2022 16:13:35 +0000 (-0400) Subject: kern/env: Add function for retrieving variables as booleans X-Git-Tag: grub-2.12-rc1~230 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b20192f22c0654039488f5d3ec07910fe438227b;p=thirdparty%2Fgrub.git kern/env: Add function for retrieving variables as booleans Signed-off-by: Robbie Harwood Reviewed-by: Daniel Kiper --- 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);