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

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(-)
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);

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.

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

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

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

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!
participants (3)
-
Lukasz Majewski
-
Tom Rini
-
Wolfgang Denk