diff mbox

[U-Boot] EXT4: Fix number base handling of "ext4write" command

Message ID 1391156905-21785-1-git-send-email-wd@denx.de
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Wolfgang Denk Jan. 31, 2014, 8:28 a.m. UTC
Unlike other commands (for example, "fatwrite"), ext4write would
interpret the "sizebytes" as decimal number.  This is not only
inconsistend and unexpected to most users, it also breaks usage
like this:

	tftp ${addr} ${name}
	ext4write mmc 0:2 ${addr} ${filename} ${filesize}

Change this to use the standard notation of base 16 input format.
See also commit b770e88

WARNING: this is a change to the user interface!!

Signed-off-by: Wolfgang Denk <wd@denx.de>
Cc: Uma Shankar <uma.shankar@samsung.com>
Cc: Stephen Warren <swarren@nvidia.com>
---
 common/cmd_ext4.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Łukasz Majewski Jan. 31, 2014, 9:27 a.m. UTC | #1
Hi Wolfgang,

> Unlike other commands (for example, "fatwrite"), ext4write would
> interpret the "sizebytes" as decimal number.  This is not only
> inconsistend and unexpected to most users, it also breaks usage
> like this:
> 
> 	tftp ${addr} ${name}
> 	ext4write mmc 0:2 ${addr} ${filename} ${filesize}
> 
> Change this to use the standard notation of base 16 input format.
> See also commit b770e88
> 
> WARNING: this is a change to the user interface!!

In other words you are breaking API :-) - but this change is more than
welcome and you have got enough power to do it :-).

> 
> Signed-off-by: Wolfgang Denk <wd@denx.de>
> Cc: Uma Shankar <uma.shankar@samsung.com>
> Cc: Stephen Warren <swarren@nvidia.com>
> ---
>  common/cmd_ext4.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/common/cmd_ext4.c b/common/cmd_ext4.c
> index 8289d25..68b047b 100644
> --- a/common/cmd_ext4.c
> +++ b/common/cmd_ext4.c
> @@ -79,8 +79,8 @@ int do_ext4_write(cmd_tbl_t *cmdtp, int flag, int
> argc, /* get the address in hexadecimal format (string to int) */
>  	ram_address = simple_strtoul(argv[3], NULL, 16);
>  
> -	/* get the filesize in base 10 format */
> -	file_size = simple_strtoul(argv[5], NULL, 10);
> +	/* get the filesize in hexadecimal format */
> +	file_size = simple_strtoul(argv[5], NULL, 16);
>  
>  	/* set the device as block device */
>  	ext4fs_set_blk_dev(dev_desc, &info);

My only comment is to add proper description to the ext4write commend 
description. Now it only says:

"<interface> <dev[:part]> <addr> <absolute filename path> [sizebytes]\n"

and I think, that we could come up with [sizebytes - HEX] or something
similar.
Wolfgang Denk Jan. 31, 2014, 9:45 a.m. UTC | #2
Dear Lukasz,

In message <20140131102755.63297928@amdc2363> you wrote:
> 
> > 	ext4write mmc 0:2 ${addr} ${filename} ${filesize}
> > 
> > Change this to use the standard notation of base 16 input format.
> > See also commit b770e88
> > 
> > WARNING: this is a change to the user interface!!
> 
> In other words you are breaking API :-) - but this change is more than
> welcome and you have got enough power to do it :-).

Yes, I'm breaking the current (incorrectly implemented) ABI to fix it
and make it consistend with other use (for example, "fatwrite").  As
is, it can only be used from the command line, but not from any
scripts that refer for example to ${filesize}.

> My only comment is to add proper description to the ext4write commend 
> description. Now it only says:
> 
> "<interface> <dev[:part]> <addr> <absolute filename path> [sizebytes]\n"
> 
> and I think, that we could come up with [sizebytes - HEX] or something
> similar.

I do not see any such need.  Hex input base is the established and
documented default - ext4write is not a special command, so why should
we mention this here when we do not mention it anywhere else?

Best regards,

Wolfgang Denk
Łukasz Majewski Jan. 31, 2014, 10:08 a.m. UTC | #3
Hi Wolfgang,

> Dear Lukasz,
> 
> In message <20140131102755.63297928@amdc2363> you wrote:
> > 
> > > 	ext4write mmc 0:2 ${addr} ${filename} ${filesize}
> > > 
> > > Change this to use the standard notation of base 16 input format.
> > > See also commit b770e88
> > > 
> > > WARNING: this is a change to the user interface!!
> > 
> > In other words you are breaking API :-) - but this change is more
> > than welcome and you have got enough power to do it :-).
> 
> Yes, I'm breaking the current (incorrectly implemented) ABI to fix it
> and make it consistend with other use (for example, "fatwrite").  As
> is, it can only be used from the command line, but not from any
> scripts that refer for example to ${filesize}.

And I'm totally with you with this change.

> 
> > My only comment is to add proper description to the ext4write
> > commend description. Now it only says:
> > 
> > "<interface> <dev[:part]> <addr> <absolute filename path>
> > [sizebytes]\n"
> > 
> > and I think, that we could come up with [sizebytes - HEX] or
> > something similar.
> 
> I do not see any such need.  Hex input base is the established and
> documented default - ext4write is not a special command, so why should
> we mention this here when we do not mention it anywhere else?

If now all <fs>*write and <fs>*load commands accept only hex input,
then I agree, that extra comment is not needed.

> 
> Best regards,
> 
> Wolfgang Denk
>
Wolfgang Denk Jan. 31, 2014, 11:26 a.m. UTC | #4
Dear Lukasz,

In message <20140131110818.07d79eac@amdc2363> you wrote:
> 
> > I do not see any such need.  Hex input base is the established and
> > documented default - ext4write is not a special command, so why should
> > we mention this here when we do not mention it anywhere else?
> 
> If now all <fs>*write and <fs>*load commands accept only hex input,
> then I agree, that extra comment is not needed.

Not only these, but all other commands - with the inglorious exception
of the "sleep" command (but hey - there must be a bad example
somewhere, right? ;-)

Best regards,

Wolfgang Denk
Tom Rini Feb. 19, 2014, 3:49 p.m. UTC | #5
On Fri, Jan 31, 2014 at 09:28:25AM +0100, Wolfgang Denk wrote:

> Unlike other commands (for example, "fatwrite"), ext4write would
> interpret the "sizebytes" as decimal number.  This is not only
> inconsistend and unexpected to most users, it also breaks usage
> like this:
> 
> 	tftp ${addr} ${name}
> 	ext4write mmc 0:2 ${addr} ${filename} ${filesize}
> 
> Change this to use the standard notation of base 16 input format.
> See also commit b770e88
> 
> WARNING: this is a change to the user interface!!
> 
> Signed-off-by: Wolfgang Denk <wd@denx.de>
> Cc: Uma Shankar <uma.shankar@samsung.com>
> Cc: Stephen Warren <swarren@nvidia.com>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/common/cmd_ext4.c b/common/cmd_ext4.c
index 8289d25..68b047b 100644
--- a/common/cmd_ext4.c
+++ b/common/cmd_ext4.c
@@ -79,8 +79,8 @@  int do_ext4_write(cmd_tbl_t *cmdtp, int flag, int argc,
 	/* get the address in hexadecimal format (string to int) */
 	ram_address = simple_strtoul(argv[3], NULL, 16);
 
-	/* get the filesize in base 10 format */
-	file_size = simple_strtoul(argv[5], NULL, 10);
+	/* get the filesize in hexadecimal format */
+	file_size = simple_strtoul(argv[5], NULL, 16);
 
 	/* set the device as block device */
 	ext4fs_set_blk_dev(dev_desc, &info);