Hi, On Fri, Nov 29, 2019 at 9:30 PM Eugeniu Rosca <ero...@de.adit-jv.com> wrote: > > Unlike dtimg, U-Boot commands like part [1], fstype [2] and uuid [3] > accept an _optional_ <varname> parameter, which means that they will > output the result to console whenever <varname> is skipped. This is > extremely useful during development. > > Allow "dtimg" to behave in a similar fashion [4]. In addition: > - replace env_set() by env_set_hex()
Thanks, didn't know that existed. I like it. > - track and report the failures of env_set_hex() "grep -Ir env_set cmd/" shows nobody really cares to check env_set* error codes. Probably it's very unlikely that environment is broken at the point of commands execution? > - amend command's help/usage text > > [1] => part start mmc 0 1 > 800 > => part start mmc 0 1 myvar; print myvar > myvar=800 > [2] => fstype mmc 0:1 > ext4 > => fstype mmc 0:1 myvar; print myvar > myvar=ext4 > [3] => uuid > b3909b50-55df-4173-b83c-b05343d2d5d2 > => uuid myvar; print myvar > myvar=4c04b15f-d0c1-4f98-9aca-ab62a66be864 > [4] => dtimg start 0x48000000 0 > 0x480000e0 > => dtimg start 0x48000000 0 myvar; print myvar > myvar=480000e0 > > Signed-off-by: Eugeniu Rosca <ero...@de.adit-jv.com> > --- > cmd/dtimg.c | 22 +++++++++++++++------- > 1 file changed, 15 insertions(+), 7 deletions(-) > > diff --git a/cmd/dtimg.c b/cmd/dtimg.c > index 5989081b0c14..5348a4ad46e8 100644 > --- a/cmd/dtimg.c > +++ b/cmd/dtimg.c > @@ -55,9 +55,10 @@ static int dtimg_get_fdt(int argc, char * const argv[], > enum cmd_dtimg_info cmd) > char *endp; > ulong fdt_addr; > u32 fdt_size; > - char buf[65]; > + ulong envval; > + int ret; > > - if (argc != 4) > + if (argc < 3) > return CMD_RET_USAGE; > > if (dtimg_get_argv_addr(argv[1], &hdr_addr) != CMD_RET_SUCCESS) > @@ -74,17 +75,24 @@ static int dtimg_get_fdt(int argc, char * const argv[], > enum cmd_dtimg_info cmd) > > switch (cmd) { > case CMD_DTIMG_START: > - snprintf(buf, sizeof(buf), "%lx", fdt_addr); > + envval = fdt_addr; > break; > case CMD_DTIMG_SIZE: > - snprintf(buf, sizeof(buf), "%x", fdt_size); > + envval = fdt_size; > break; > default: > printf("Error: Unknown cmd_dtimg_info value: %d\n", cmd); > return CMD_RET_FAILURE; > } > > - env_set(argv[3], buf); > + if (argv[3]) { > + ret = env_set_hex(argv[3], envval); > + if (ret) > + printf("Error(%d) env-setting '%s=0x%lx'\n", > + ret, argv[3], envval); > + } else { > + printf("0x%lx\n", envval); > + } > > return CMD_RET_SUCCESS; > } > @@ -131,12 +139,12 @@ U_BOOT_CMD( > "dump <addr>\n" > " - parse specified image and print its structure info\n" > " <addr>: image address in RAM, in hex\n" > - "dtimg start <addr> <index> <varname>\n" > + "dtimg start <addr> <index> [<varname>]\n" Bikeshedding: maybe use just [varname]? > " - get address (hex) of FDT in the image, by index\n" > " <addr>: image address in RAM, in hex\n" > " <index>: index of desired FDT in the image\n" > " <varname>: name of variable where to store address of FDT\n" > - "dtimg size <addr> <index> <varname>\n" > + "dtimg size <addr> <index> [<varname>]\n" > " - get size (hex, bytes) of FDT in the image, by index\n" > " <addr>: image address in RAM, in hex\n" > " <index>: index of desired FDT in the image\n" > -- > 2.24.0 > Other than those minor comments: Reviewed-by: Sam Protsenko <semen.protse...@linaro.org>