uucore: format: Fix hexadecimal default format print #7631
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix 2 more printing issues. For now, we print like GNU coreutils on x86-64 does. I plan to write up a bit more about float precision handling (and how we are different from GNU coreutils, not just in
printf
, but also inseq
), but I think I'll do that as a separate PR.uucore: format: Fix hexadecimal default format print
The default hex format, on x86(-64) prints 15 digits after the
decimal point, but also trims trailing zeros, so it's not just
a simple default precision and a little bit of extra handling is
required.
Also add a bunch of tests.
Fixes #7364.
uucore: format: Use Option for Float precision
The default precision for float actually depends on the format.
It's usually 6, but it's architecture-specific for hexadecimal
floats.
Set the precision as an Option, so that:
6
in callersfloat printing (next change).
uucore: format: Fix hexadecimal uppercase print (again)
When '%A' format is specified, we also need to capitalize the
0x
, i.e.0XEP-3
, not0xEP-3
.