@command{printf} prints the @var{format} string, interpreting @samp{%}
directives and @samp{\} escapes to format numeric and string arguments
-in a way that is mostly similar to the C @samp{printf} function.
+in a way that is mostly similar to the C @samp{printf} function,
+and C language escape sequence processing.
@xref{Output Conversion Syntax,, @command{printf} format directives,
libc, The GNU C Library Reference Manual}, for details.
-The differences are listed below.
+See also @uref{https://en.cppreference.com/w/c/language/escape,
+C99 string escapes:}. The differences are listed below.
@mayConflictWithShellBuiltIn{printf}
@kindex %b
An additional directive @samp{%b}, prints its
argument string with @samp{\} escapes interpreted in the same way as in
-the @var{format} string, except that octal escapes are of the form
-@samp{\0@var{ooo}} where @var{ooo} is 0 to 3 octal digits. If
-@samp{\@var{ooo}} is nine-bit value, ignore the ninth bit.
+the @var{format} string, except that octal escapes should have a leading
+@samp{0} like @samp{\0@var{nnn}}.
+If @samp{@var{nnn}} is a nine-bit value, ignore the ninth bit.
If a precision is also given, it limits the number of bytes printed
from the converted string.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
-/* Usage: printf format [argument...]
-
- A front end to the printf function that lets it be used from the shell.
-
- Backslash escapes:
-
- \" = double quote
- \\ = backslash
- \a = alert (bell)
- \b = backspace
- \c = produce no further output
- \e = escape
- \f = form feed
- \n = new line
- \r = carriage return
- \t = horizontal tab
- \v = vertical tab
- \ooo = octal number (ooo is 1 to 3 digits)
- \xhh = hexadecimal number (hhh is 1 to 2 digits)
- \uhhhh = 16-bit Unicode character (hhhh is 4 digits)
- \Uhhhhhhhh = 32-bit Unicode character (hhhhhhhh is 8 digits)
-
- Additional directive:
-
- %b = print an argument string, interpreting backslash escapes,
- except that octal escapes are of the form \0 or \0ooo.
-
- %q = print an argument string in a format that can be
- reused as shell input. Escaped characters used the
- POSIX $'' syntax supported by most shells.
-
- The 'format' argument is re-used as many times as necessary
- to convert all of the given arguments.
-
- David MacKenzie <djm@gnu.ai.mit.edu> */
-
#include <config.h>
#include <stdio.h>
#include <sys/types.h>
fputs (_("\
%% a single %\n\
%b ARGUMENT as a string with '\\' escapes interpreted,\n\
- except that octal escapes are of the form \\0 or \\0NNN\n\
+ except that octal escapes should have a leading 0 like \\0NNN\n\
%q ARGUMENT is printed in a format that can be reused as shell input,\n\
- escaping non-printable characters with the POSIX $'' syntax.\
+ escaping non-printable characters with the POSIX $'' syntax\
\n\n\
and all C format specifications ending with one of diouxXfeEgGcs, with\n\
ARGUMENTs converted to proper type first. Variable widths are handled.\n\