[PATCH] cmd: part: number: remove inconsistent 0x from returned value

Stefan Herbrechtsmeier stefan.herbrechtsmeier-oss at weidmueller.com
Fri Mar 5 15:33:05 CET 2021


Hi Eugeniu,

Am 05.03.2021 um 12:52 schrieb Eugeniu Rosca:
> Hello Stefan,
> 
> On Fri, Mar 05, 2021 at 07:39:04AM +0000, Stefan Herbrechtsmeier wrote:
>> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier at weidmueller.com>
>>
>> The part number sub-command returns the hexadecimal value with a leading
>> 0x.
> 
> That's to make sure that:
>     - users have clear and unequivocal feedback that '10'
>       returned by the command is really HEX 10, not DEC 10.
>     - other U-Boot commands which need to take '0x10' as input
>       will interpret it correctly, regardless of the way these
>       other commands implement ascii-to-integer conversion.

'Almost all U-Boot commands expect numbers to be entered in hexadecimal 
input format.' [1]

The filesystem commands use `simple_strtoul(.., 16)` and interpret the 
value as hexadecimal value.

The 0x suggests that a 10 will be interpreted as decimal value and this 
isn't true.

>> This is inconsistent with other values in the command
> 
> It could be, but it is then better to fix the inconsistency in those
> commands/sub-commands which add the ambiguity.

Normally you are right but U-Boot by design use hexadecimal values 
without 0x. The env_set_hex functions doesn't use 0x.

>> and U-Boot uses hexadecimal values generally.
> 
> The key word is "generally", but not always. Some U-Boot commands will
> process '10' as HEX 10 and some will process 10 as DEC 10. So, in order
> to avoid these games, I vote for leaving the 0x in place.

You can avoid it only if you could mark decimal numbers and that is 
impossible.

@Tom: Does U-Boot still expect numbers to be hexadecimal values?

[1] https://www.denx.de/wiki/DULG/UBootCommandLineInterface

>>
>> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier at weidmueller.com>
>>
>> ---
>>
>>   cmd/part.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/cmd/part.c b/cmd/part.c
>> index 3395c17b89..56e1852c66 100644
>> --- a/cmd/part.c
>> +++ b/cmd/part.c
>> @@ -152,7 +152,7 @@ static int do_part_info(int argc, char *const argv[], enum cmd_part_info param)
>>   		snprintf(buf, sizeof(buf), LBAF, info.size);
>>   		break;
>>   	case CMD_PART_INFO_NUMBER:
>> -		snprintf(buf, sizeof(buf), "0x%x", part);
>> +		snprintf(buf, sizeof(buf), "%x", part);
> 


More information about the U-Boot mailing list