[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bug#65659: RFC: changing printf(1) behavior on %b
From: |
Stephane Chazelas |
Subject: |
Re: bug#65659: RFC: changing printf(1) behavior on %b |
Date: |
Sat, 2 Sep 2023 09:49:12 +0100 |
2023-09-01 23:28:50 +0200, Steffen Nurpmeso via austin-group-l at The Open
Group:
[...]
> |FWIW, a "printf %b" github shell code search returns ~ 29k
> |entries
> |(https://github.com/search?q=printf+%25b+language%3AShell&type=code&l=Sh\
> |ell)
> |
> |That likely returns only a small subset of the code that uses
> |printf with %b inside the format and probably a few false
> |positives, but that gives many examples of how printf %b is used
> |in practice.
>
> Actually this returns a huge amount of false positives where
> printf(1) and %b are not on the same line, let alone the same
> command, if you just scroll down a bit it starts like neovim match
[...]
You're right, I only looked at the first few results and saw
that already gave interesting ones.
Apparently, we can also search with regexps and searching for
printf.*%b
(https://github.com/search?q=%2Fprintf.*%25b%2F+language%3AShell&type=code)
It's probably a lot more accurate. It returns ~ 19k.
(still FWIW, that's still just a sample of random code on the
internet)
[...]
> Furthermore it shows a huge amount of false use cases like
>
> printf >&2 "%b\n" "The following warnings and non-fatal errors were
> encountered during the installation process:"
[...]
Yes, I also see a lot of echo -e stuff that should have been
echo -E stuff (or echo alone in those (many) implementations
that don't expand by default or use the more reliable printf
with %s (not %b)).
> It seems people think you need this to get colours mostly, which
> then, it has to be said, is also practically mislead. (To the
> best of *my* knowledge that is.)
[...]
Incidentally, ANSI terminal colour escape sequences are somewhat
connecting those two %b's as they are RGB (well BGR) in binary
(white is 7 = 0b111, red 0b001, green 0b010, blue 0b100), with:
R=0 G=1 B=1
printf '%bcyan%b\n' "\033[3$(( 2#$B$G$R ))m" '\033[m'
(with Korn-like shells, also $(( 0b$B$G$R )) in zsh though zsh
has builtin colour output support including RGB-based).
Speaking of stackexchange, on the June data dump of
unix.stackexchange.com:
stackexchange/unix.stackexchange.com$ xml2 < Posts.xml | grep -c 'printf.*%b'
494
(FWIW)
Compared with %d (though that will have entries for printf(3) as well):
stackexchange/unix.stackexchange.com$ xml2 < Posts.xml | grep -c 'printf.*%d'
3444
--
Stephane
Re: RFC: changing printf(1) behavior on %b, Oğuz, 2023/09/01