[RFC PATCH 02/11] cmd: ini: Use strlower() to normalise case
Simon Glass
sjg at chromium.org
Fri May 15 22:32:53 CEST 2026
ini_handler() lowercases four strings when CONFIG_INI_CASE_INSENSITIVE
is set, each with a hand-rolled loop whose strlen() in the condition
makes it quadratic in the string length.
Replace each loop with strlower() and fold the #ifdef pair into a
runtime IS_ENABLED() check so the body reads linearly.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
cmd/ini.c | 21 ++++++++-------------
1 file changed, 8 insertions(+), 13 deletions(-)
diff --git a/cmd/ini.c b/cmd/ini.c
index 96399017691..cf0a3ce8b3d 100644
--- a/cmd/ini.c
+++ b/cmd/ini.c
@@ -202,22 +202,17 @@ static int ini_parse(char *filestart, size_t filelen,
static int ini_handler(void *user, char *section, char *name, char *value)
{
char *requested_section = (char *)user;
-#ifdef CONFIG_INI_CASE_INSENSITIVE
- int i;
- for (i = 0; i < strlen(requested_section); i++)
- requested_section[i] = tolower(requested_section[i]);
- for (i = 0; i < strlen(section); i++)
- section[i] = tolower(section[i]);
-#endif
+ if (IS_ENABLED(CONFIG_INI_CASE_INSENSITIVE)) {
+ strlower(requested_section);
+ strlower(section);
+ }
if (!strcmp(section, requested_section)) {
-#ifdef CONFIG_INI_CASE_INSENSITIVE
- for (i = 0; i < strlen(name); i++)
- name[i] = tolower(name[i]);
- for (i = 0; i < strlen(value); i++)
- value[i] = tolower(value[i]);
-#endif
+ if (IS_ENABLED(CONFIG_INI_CASE_INSENSITIVE)) {
+ strlower(name);
+ strlower(value);
+ }
env_set(name, value);
printf("ini: Imported %s as %s\n", name, value);
}
--
2.43.0
More information about the U-Boot
mailing list