diff options
Diffstat (limited to 'common/cmd_nvedit.c')
| -rw-r--r-- | common/cmd_nvedit.c | 40 | 
1 files changed, 40 insertions, 0 deletions
| diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c index 725e573dd..eb89e9e60 100644 --- a/common/cmd_nvedit.c +++ b/common/cmd_nvedit.c @@ -42,6 +42,9 @@  #include <common.h>  #include <command.h>  #include <environment.h> +#if defined(CONFIG_CMD_EDITENV) +#include <malloc.h> +#endif  #include <watchdog.h>  #include <serial.h>  #include <linux/stddef.h> @@ -503,6 +506,34 @@ int do_askenv ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  #endif  /************************************************************************ + * Interactively edit an environment variable + */ +#if defined(CONFIG_CMD_EDITENV) +int do_editenv(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ +	char buffer[CONFIG_SYS_CBSIZE]; +	char *init_val; +	int len; + +	if (argc < 2) { +		cmd_usage(cmdtp); +		return 1; +	} + +	/* Set read buffer to initial value or empty sting */ +	init_val = getenv(argv[1]); +	if (init_val) +		len = sprintf(buffer, "%s", init_val); +	else +		buffer[0] = '\0'; + +	readline_into_buffer("edit: ", buffer); + +	return setenv(argv[1], buffer); +} +#endif /* CONFIG_CMD_EDITENV */ + +/************************************************************************   * Look up variable from environment,   * return address of storage for that variable,   * or NULL if not found @@ -597,6 +628,15 @@ int envmatch (uchar *s1, int i2)  /**************************************************/ +#if defined(CONFIG_CMD_EDITENV) +U_BOOT_CMD( +	editenv, 2, 0,	do_editenv, +	"edit environment variable", +	"name\n" +	"    - edit environment variable 'name'" +); +#endif +  U_BOOT_CMD(  	printenv, CONFIG_SYS_MAXARGS, 1,	do_printenv,  	"print environment variables", |