summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2011-04-01 15:06:49 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2011-04-11 15:57:51 +0200
commit71a4899e18295995e0ea13438b4efe9b8ac16d5a (patch)
treef6a35e0c8431a2ed927baf53c1a83f0734cd56a6
parent64cc568eda4c72d5e1fc05b5fc3a3792a8f7c22e (diff)
downloadbarebox-71a4899e18295995e0ea13438b4efe9b8ac16d5a.tar.gz
barebox-71a4899e18295995e0ea13438b4efe9b8ac16d5a.tar.xz
env: Make environment variable support optional
Environment variables are only useful in interactive environments. Make it optional on our way to support a noninteractive barebox. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--commands/Kconfig2
-rw-r--r--common/Kconfig5
-rw-r--r--common/Makefile2
-rw-r--r--include/environment.h12
4 files changed, 20 insertions, 1 deletions
diff --git a/commands/Kconfig b/commands/Kconfig
index 9d0c72d83f..a443501f33 100644
--- a/commands/Kconfig
+++ b/commands/Kconfig
@@ -29,11 +29,13 @@ config CMD_LOADENV
prompt "loadenv"
config CMD_EXPORT
+ depends on ENVIRONMENT_VARIABLES
tristate
prompt "export"
config CMD_PRINTENV
tristate
+ depends on ENVIRONMENT_VARIABLES
prompt "printenv"
config CMD_READLINE
diff --git a/common/Kconfig b/common/Kconfig
index ac8323132d..b493a31a4e 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -62,6 +62,9 @@ config LOCALVERSION_AUTO
config BOARDINFO
string
+config ENVIRONMENT_VARIABLES
+ bool "environment variables support"
+
menu "memory layout "
config HAVE_MMU
@@ -219,12 +222,14 @@ choice
config SHELL_HUSH
bool "hush parser"
+ select ENVIRONMENT_VARIABLES
help
Enable hush support. This is the most advanced shell available
for barebox.
config SHELL_SIMPLE
bool "Simple parser"
+ select ENVIRONMENT_VARIABLES
help
simple shell. No if/then, no return values from commands, no loops
endchoice
diff --git a/common/Makefile b/common/Makefile
index 3fc66f45e7..c8a4332139 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -15,7 +15,7 @@ obj-y += command.o
obj-$(CONFIG_CONSOLE_FULL) += console.o
obj-$(CONFIG_CONSOLE_SIMPLE) += console_simple.o
obj-$(CONFIG_DIGEST) += digest.o
-obj-y += env.o
+obj-$(CONFIG_ENVIRONMENT_VARIABLES) += env.o
obj-$(CONFIG_CMD_BOOTM) += image.o
obj-y += startup.o
obj-y += misc.o
diff --git a/include/environment.h b/include/environment.h
index 21a7ffa0e2..1f22fcb812 100644
--- a/include/environment.h
+++ b/include/environment.h
@@ -44,8 +44,20 @@ struct env_context *get_current_context(void);
char *var_val(struct variable_d *);
char *var_name(struct variable_d *);
+#ifdef CONFIG_ENVIRONMENT_VARIABLES
const char *getenv(const char *);
int setenv(const char *, const char *);
+#else
+static inline char *getenv(const char *var)
+{
+ return NULL;
+}
+
+static inline int setenv(const char *var, const char *val)
+{
+ return 0;
+}
+#endif
int env_pop_context(void);
int env_push_context(void);