@ -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 " ,