@ -125,7 +125,7 @@ static int env_print(char *name)
}
/* print whole list */
len = hexport_r ( & env_htab , ' \n ' , & res , 0 ) ;
len = hexport_r ( & env_htab , ' \n ' , & res , 0 , 0 , NULL ) ;
if ( len > 0 ) {
puts ( res ) ;
@ -647,7 +647,7 @@ static int do_env_delete(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
# ifdef CONFIG_CMD_EXPORTENV
/*
* env export [ - t | - b | - c ] addr [ size ]
* env export [ - t | - b | - c ] [ - s size ] addr [ var . . . ]
* - t : export as text format ; if size is given , data will be
* padded with ' \0 ' bytes ; if not , one terminating ' \0 '
* will be added ( which is included in the " filesize "
@ -657,8 +657,12 @@ static int do_env_delete(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
* ' \0 ' , list end marked by double " \0 \0 " )
* - c : export as checksum protected environment format as
* used for example by " saveenv " command
* - s size :
* size of output buffer
* addr : memory address where environment gets stored
* size : size of output buffer
* var . . . List of variable names that get included into the
* export . Without arguments , the whole environment gets
* exported .
*
* With " -c " and size is NOT given , then the export command will
* format the data as currently used for the persistent storage ,
@ -691,7 +695,7 @@ static int do_env_export(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
{
char buf [ 32 ] ;
char * addr , * cmd , * res ;
size_t size ;
size_t size = 0 ;
ssize_t len ;
env_t * envp ;
char sep = ' \n ' ;
@ -715,6 +719,11 @@ static int do_env_export(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
sep = ' \0 ' ;
chk = 1 ;
break ;
case ' s ' : /* size given */
if ( - - argc < = 0 )
return cmd_usage ( cmdtp ) ;
size = simple_strtoul ( * + + argv , NULL , 16 ) ;
goto NXTARG ;
case ' t ' : /* text format */
if ( fmt + + )
goto sep_err ;
@ -724,6 +733,7 @@ static int do_env_export(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
return cmd_usage ( cmdtp ) ;
}
}
NXTARG : ;
}
if ( argc < 1 )
@ -731,15 +741,14 @@ static int do_env_export(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
addr = ( char * ) simple_strtoul ( argv [ 0 ] , NULL , 16 ) ;
if ( argc = = 2 ) {
size = simple_strtoul ( argv [ 1 ] , NULL , 16 ) ;
if ( size )
memset ( addr , ' \0 ' , size ) ;
} else {
size = 0 ;
}
argc - - ;
argv + + ;
if ( sep ) { /* export as text file */
len = hexport_r ( & env_htab , sep , & addr , size ) ;
len = hexport_r ( & env_htab , sep , & addr , size , argc , argv ) ;
if ( len < 0 ) {
error ( " Cannot export environment: errno = %d \n " ,
errno ) ;
@ -758,7 +767,7 @@ static int do_env_export(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
else /* export as raw binary data */
res = addr ;
len = hexport_r ( & env_htab , ' \0 ' , & res , ENV_SIZE ) ;
len = hexport_r ( & env_htab , ' \0 ' , & res , ENV_SIZE , argc , argv ) ;
if ( len < 0 ) {
error ( " Cannot export environment: errno = %d \n " ,
errno ) ;
@ -965,7 +974,7 @@ U_BOOT_CMD(
# if defined(CONFIG_CMD_EDITENV)
" env edit name - edit environment variable \n "
# endif
" env export [-t | -b | -c] addr [size ] - export environment \n "
" env export [-t | -b | -c] [-s size] addr [var ... ] - export environment \n "
# if defined(CONFIG_CMD_GREPENV)
" env grep string [...] - search environment \n "
# endif