From 0e18d5ae7ff82a455c0d46291d67a894b86b82a1 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 20 Jan 2013 15:54:08 +0100 Subject: defaultenv loading: rework to use less ifdefs/defines Signed-off-by: Sascha Hauer --- common/startup.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) (limited to 'common/startup.c') diff --git a/common/startup.c b/common/startup.c index ecb56911bd..52a8996cdf 100644 --- a/common/startup.c +++ b/common/startup.c @@ -34,6 +34,7 @@ #include #include #include +#include extern initcall_t __barebox_initcalls_start[], __barebox_early_initcalls_end[], __barebox_initcalls_end[]; @@ -41,32 +42,35 @@ extern initcall_t __barebox_initcalls_start[], __barebox_early_initcalls_end[], #ifdef CONFIG_DEFAULT_ENVIRONMENT #include "barebox_default_env.h" -#ifdef CONFIG_DEFAULT_ENVIRONMENT_COMPRESSED -#include -void *defaultenv; -#else -#define defaultenv default_environment -#endif - static int register_default_env(void) { -#ifdef CONFIG_DEFAULT_ENVIRONMENT_COMPRESSED int ret; - void *tmp; + void *defaultenv; - tmp = xzalloc(default_environment_size); - memcpy(tmp, default_environment, default_environment_size); + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_COMPRESSED)) { + void *tmp = malloc(default_environment_size); - defaultenv = xzalloc(default_environment_uncompress_size); + if (!tmp) + return -ENOMEM; - ret = uncompress(tmp, default_environment_size, NULL, NULL, - defaultenv, NULL, uncompress_err_stdout); + memcpy(tmp, default_environment, default_environment_size); - free(tmp); + defaultenv = xzalloc(default_environment_uncompress_size); + + ret = uncompress(tmp, default_environment_size, + NULL, NULL, + defaultenv, NULL, uncompress_err_stdout); + + free(tmp); + + if (ret) { + free(defaultenv); + return ret; + } + } else { + defaultenv = (void *)default_environment; + } - if (ret) - return ret; -#endif add_mem_device("defaultenv", (unsigned long)defaultenv, default_environment_uncompress_size, -- cgit v1.2.3