uutils / coreutils

Cross-platform Rust rewrite of the GNU coreutils
https://uutils.github.io/
MIT License
17.54k stars 1.26k forks source link

printf: floating point conversion flags not supported or incorrect #2774

Open jfinkels opened 2 years ago

jfinkels commented 2 years ago

Floating point conversion flags are defined here: https://www.gnu.org/software/libc/manual/html_node/Floating_002dPoint-Conversions.html

Here are a few failing test cases:

Flag to always include a plus or minus sign:

$ printf "%+3.0f\n" 0
 +0
$ ./target/debug/coreutils printf "%+3.0f\n" 0
printf: %+: invalid conversion specification

Flag to pad the field with spaces:

$ printf "% 3.0f\n" 1
  1
$ ./target/debug/coreutils printf "% 3.0f\n" 1
printf: % : invalid conversion specification

Flag to pad the field with zeros instead of spaces:

$ printf "%03.0f\n" 0
000
$ ./target/debug/coreutils printf "%03.0f\n" 0
  0

Combining the + and 0 flags:

$ printf "%0+3.0f\n" 0
+00
$ ./target/debug/coreutils printf "%0+3.0f\n" 0
printf: %0+: invalid conversion specification

Combining the ` and-` flags:

$ printf "% -3.0f\n" 1
 1
$ ./target/debug/coreutils printf "% -3.0f\n" 1
printf: % : invalid conversion specification

Discovered this while investigating #2616.

stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.