And for those who have been following this issue, the new text for
the forthcoming POSIX version has removed any mention of obsoleting
%b from printf(1) - instead it will simply note that there is will be
a difference between printf(1) and printf(3) once the latter gets its
version of %b specified (in C23, and in POSIX, in the next major version
that follows the coming one, almost certainly) - and to encourage
implementors to consider possible solutions.

I've considered, and I don't see a problem needing solving, so I'm
intending to do precisely nothing, unless someone actually finds a
need for binary output from printf(1), which seems unlikely to
ever happen to me (I mean a real need, not just to be the same as printf(3)
"just because").

So, we can all go back to sleep now - and Chet, I'd undo $#s before it
appears in a release, there's no need, and having it might eventually
just cause more backward compat issues.

And wrt:
  | I don't know what potential uppercase/lowercase pairs of format specifiers
  | are free from use in any existing POSIX-like shell, but my suggestion would

There are none, printf(3) belongs to the C committee, and they can make
use of anything they like, at any time they like.

The best we can do is use formats that make no sense for printf(1) to
support (like %p, which in printf(3) prints a pointer value, but in
printf(1) there are no (meaningful) pointers that it could ever make
sense to print, so %p is useless for its printf(3) purpose in printf(1).

Similarly all the size modifier chars are meaningless for printf(1), as
all the numeric values it is passed are actually strings - what internal
format they're converted into is unrelated to anything the printf(1) user
can control, so none of those size modifiers mean anything to printf(1)
either (but it seems that many of those have been usurped by various
printf(1) implementations already, so finding something free that everyone
could use, isn't easy).

kre


Reply via email to