diff options
| -rw-r--r-- | README | 1 | ||||
| -rw-r--r-- | common/cmd_nvedit.c | 40 | ||||
| -rw-r--r-- | include/config_cmd_all.h | 1 | ||||
| -rw-r--r-- | include/config_cmd_default.h | 1 | 
4 files changed, 43 insertions, 0 deletions
| @@ -620,6 +620,7 @@ The following options need to be configured:  		CONFIG_CMD_DS4510_RST	* ds4510 I2C rst command  		CONFIG_CMD_DTT		* Digital Therm and Thermostat  		CONFIG_CMD_ECHO		  echo arguments +		CONFIG_CMD_EDITENV	  edit env variable  		CONFIG_CMD_EEPROM	* EEPROM read/write support  		CONFIG_CMD_ELF		* bootelf, bootvx  		CONFIG_CMD_SAVEENV	  saveenv 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", diff --git a/include/config_cmd_all.h b/include/config_cmd_all.h index c747b4baa..058fdf14f 100644 --- a/include/config_cmd_all.h +++ b/include/config_cmd_all.h @@ -30,6 +30,7 @@  #define CONFIG_CMD_DOC		/* Disk-On-Chip Support		*/  #define CONFIG_CMD_DTT		/* Digital Therm and Thermostat */  #define CONFIG_CMD_ECHO		/* echo arguments		*/ +#define CONFIG_CMD_EDITENV	/* editenv			*/  #define CONFIG_CMD_EEPROM	/* EEPROM read/write support	*/  #define CONFIG_CMD_ELF		/* ELF (VxWorks) load/boot cmd	*/  #define CONFIG_CMD_SAVEENV	/* saveenv			*/ diff --git a/include/config_cmd_default.h b/include/config_cmd_default.h index a5d87a68e..6e3903c4d 100644 --- a/include/config_cmd_default.h +++ b/include/config_cmd_default.h @@ -20,6 +20,7 @@  #define CONFIG_CMD_BOOTD	/* bootd			*/  #define CONFIG_CMD_CONSOLE	/* coninfo			*/  #define CONFIG_CMD_ECHO		/* echo arguments		*/ +#define CONFIG_CMD_EDITENV	/* editenv			*/  #define CONFIG_CMD_FPGA		/* FPGA configuration Support	*/  #define CONFIG_CMD_IMI		/* iminfo			*/  #define CONFIG_CMD_ITEST	/* Integer (and string) test	*/ |