[U-Boot] [PATCH] cmd: nvedit: Add filtering during env import

Quentin Schulz quentin.schulz at bootlin.com
Tue Mar 27 09:28:31 UTC 2018


Hi Alex,

On Tue, Mar 27, 2018 at 08:43:26AM +0000, Alex Kiernan wrote:
> When importing variables allow size to be elided using '-' and then
> support a list of variables which restricts what will be picked during
> the import.
> 
> Signed-off-by: Alex Kiernan <alex.kiernan at gmail.com>

I'm pretty sure it's the same goal as this patch[1] I suggested.
Could you answer in the thread telling you need it as well so that we
could get it merged or at least reviewed?

Thanks,
Quentin

[1] http://patchwork.ozlabs.org/patch/855542/

> ---
> 
>  cmd/nvedit.c | 26 +++++++++++++++++++-------
>  1 file changed, 19 insertions(+), 7 deletions(-)
> 
> diff --git a/cmd/nvedit.c b/cmd/nvedit.c
> index 4cb25b8..486bb24 100644
> --- a/cmd/nvedit.c
> +++ b/cmd/nvedit.c
> @@ -972,7 +972,7 @@ sep_err:
>  
>  #ifdef CONFIG_CMD_IMPORTENV
>  /*
> - * env import [-d] [-t [-r] | -b | -c] addr [size]
> + * env import [-d] [-t [-r] | -b | -c] addr [size] [var ...]
>   *	-d:	delete existing environment before importing;
>   *		otherwise overwrite / append to existing definitions
>   *	-t:	assume text format; either "size" must be given or the
> @@ -985,7 +985,10 @@ sep_err:
>   *	-c:	assume checksum protected environment format
>   *	addr:	memory address to read from
>   *	size:	length of input data; if missing, proper '\0'
> - *		termination is mandatory
> + *		termination is mandatory. If not required and passing
> + *		variables to import use '-'
> + *	var...:	List of variable names that get imported. Without arguments,
> + *		all variables are imported
>   */
>  static int do_env_import(cmd_tbl_t *cmdtp, int flag,
>  			 int argc, char * const argv[])
> @@ -1043,11 +1046,20 @@ static int do_env_import(cmd_tbl_t *cmdtp, int flag,
>  		crlf_is_lf = 0;
>  
>  	addr = simple_strtoul(argv[0], NULL, 16);
> +	--argc;
> +	++argv;
>  	ptr = map_sysmem(addr, 0);
>  
> -	if (argc == 2) {
> -		size = simple_strtoul(argv[1], NULL, 16);
> -	} else if (argc == 1 && chk) {
> +	if (argc >= 1 && !strcmp(argv[0], "-")) {
> +		--argc;
> +		++argv;
> +	}
> +
> +	if (argc >= 1) {
> +		size = simple_strtoul(argv[0], NULL, 16);
> +		--argc;
> +		++argv;
> +	} else if (argc == 0 && chk) {
>  		puts("## Error: external checksum format must pass size\n");
>  		return CMD_RET_FAILURE;
>  	} else {
> @@ -1084,7 +1096,7 @@ static int do_env_import(cmd_tbl_t *cmdtp, int flag,
>  	}
>  
>  	if (himport_r(&env_htab, ptr, size, sep, del ? 0 : H_NOCLEAR,
> -			crlf_is_lf, 0, NULL) == 0) {
> +			crlf_is_lf, argc, argc ? argv : NULL) == 0) {
>  		pr_err("Environment import failed: errno = %d\n", errno);
>  		return 1;
>  	}
> @@ -1213,7 +1225,7 @@ static char env_help_text[] =
>  #endif
>  #endif
>  #if defined(CONFIG_CMD_IMPORTENV)
> -	"env import [-d] [-t [-r] | -b | -c] addr [size] - import environment\n"
> +	"env import [-d] [-t [-r] | -b | -c] addr [size] [var ...] - import environment\n"
>  #endif
>  	"env print [-a | name ...] - print environment\n"
>  #if defined(CONFIG_CMD_RUN)
> -- 
> 2.7.4
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180327/71f93638/attachment-0001.sig>


More information about the U-Boot mailing list