History log of /src/usr.bin/printf/printf.1
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
# 1.41 24-Nov-2024 kre

Random minor wording and markup cleanups.


# 1.40 06-Aug-2024 uwe

printf(1): misc tweaks

Move the advise about getopt's "--" to where the format is disussed.
Use .Vt for types.


# 1.39 06-Aug-2024 uwe

printf(1): move \e description to its lexicographic place


# 1.38 06-Aug-2024 kre

Add %C format conversion and -L option to printf(1)

%C does what everyone always thought %c should do, but doesn't,
and operates rather like the %c conversion in printf(3) (to be
more precise, like %lc). It takes a code point integer value
in the current locale's LC_CTYPE and prints the character designated.

-L (this printf's first, and only, option) makes the floating conversions
use long double instead of double.

In the manual (printf.1) document both of those, and also be more
precise as to when things are affecting bytes, and when they're
manipulating characters (which makes no difference if LC_ALL=C).


Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base
# 1.37 13-Feb-2023 andvar

branches: 1.37.2;
s/chracter/character/ in documentation.


Revision tags: netbsd-10-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1
# 1.36 19-May-2021 kre

branches: 1.36.4;

Don't describe "%%: in the format as a format conversion, it isn't,
it is an escaped literal '%' character. None of what applies to
format conversions applies to this.


Revision tags: cjep_staticlib_x-base
# 1.35 29-Jun-2020 uwe

branches: 1.35.2;
Add quotes around command substitution in the example
so that it works regardless of IFS and buts.
Requested by kre@


# 1.34 26-Jun-2020 uwe

Drop redundant quoting in the nested printf example.


# 1.33 26-Jun-2020 uwe

Use ASCII single quote.


# 1.32 26-Jun-2020 uwe

Try to improve markup to get a nicer PostScript output.

While here edit slightly for consistency: get the octal character
ranges in order, use \num to refer to octal everywhere, etc.


Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
# 1.31 31-Aug-2018 kre

PR standards/53563

POSIX requires that signed numbers (strings preceded by '+' or '-')
be allowed as inputs to all of the integer format conversions, including
those which treat the data as unsigned.

Hence we do not need a variant function whose only difference from its
companion is to reject strings starting with '-' - instead we use
the primary function (getintmax()) for everything and remove getuintmax().

Minor update to the man page to indicate that the arg to all of the
integer conversions (diouxX) must be an integer constant (with an
optional sign) and to make it blatantly clear that %o is octal and
%u is unsigned decimal (for some reason those weren't explicitly stated
unlike d i x and X). Delete "respectively", it is not needed (and does
not really apply).

XXX pullup -8


Revision tags: pgoyette-compat-0728
# 1.30 24-Jul-2018 kre

Add the new formats to the list of format cracters (oops...)


# 1.29 24-Jul-2018 kre

Add support for F a and A formats (which go with the eEfgG formats
already supported.)


# 1.28 24-Jul-2018 kre

Correct a typo (off by one (key)) ...
There is no 'w' format, but there is an 'e'


Revision tags: phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.27 12-Mar-2018 wiz

branches: 1.27.2;
Remove Tn.


# 1.26 12-Mar-2018 dholland

Explicitly mention use of -- for format strings beginning with -,
per PR 21970.


Revision tags: netbsd-7-2-RELEASE netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base tls-maxphys-base
# 1.25 13-Apr-2014 snj

branches: 1.25.16; 1.25.22;
Change some standard exit status text to ".Ex -std"
From Eitan Adler in PR bin/47790.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base matt-mips64-premerge-20101231
# 1.24 05-Apr-2010 joerg

branches: 1.24.6; 1.24.12; 1.24.22;
\\*(Pm -> \*(Pm


Revision tags: matt-premerge-20091211 jym-xensuspend-nbase jym-xensuspend-base
# 1.23 11-Mar-2009 joerg

Use semantic markup


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.22 01-Sep-2008 dholland

branches: 1.22.6;
Fix description of %b format. PR 39111 from Paul Goyette.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 wrstuden-revivesa-base
# 1.21 06-May-2008 apb

branches: 1.21.2;
Add a note about the stupid behaviour of "%c" format.


Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase yamt-pf42-baseX yamt-pf42-base keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base hpcarm-cleanup-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-4-base chap-midi-nbase netbsd-3-0-1-RELEASE chap-midi-base netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-3-base netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.20 07-Aug-2003 agc

branches: 1.20.32;
Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22365, verified by myself.


# 1.19 28-Apr-2003 wiz

Use .Aq instead of \*[Lt]...\*[Gt]; sort SEE ALSO; add some more commas;
new sentence, new line; fix some mdoc nits.


# 1.18 28-Apr-2003 augustss

Add missing comma.


Revision tags: fvdl_fs64_base
# 1.17 24-Nov-2002 christos

Fixes from David Laight:
- ansification
- format of output of jobs command (etc)
- job identiers %+, %- etc
- $? and $(...)
- correct quoting of output of set, export -p and readonly -p
- differentiation between nornal and 'posix special' builtins
- correct behaviour (posix) for errors on builtins and special builtins
- builtin printf and kill
- set -o debug (if compiled with DEBUG)
- cd src obj (as ksh - too useful to do without)
- unset -e name, remove non-readonly variable from export list.
(so I could unset -e PS1 before running the test shell...)


# 1.16 30-Sep-2002 grant

New sentence, new line.


Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.15 08-Feb-2002 ross

Generate <>& symbolically. I'm avoiding .../dist/... directories for now.


# 1.14 08-Dec-2001 wiz

Punctuation nits.


# 1.13 01-Dec-2001 wiz

Whitespace cleanup.


# 1.12 03-Apr-2001 jhawk

Xr printf(9)


# 1.11 04-Sep-2000 kleink

For commands and utilities, use EXIT STATUS rather than RETURN VALUES or
DIAGNOSTICS as appropriate (and documented in mdoc(7)).


Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-4-PATCH003 netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base netbsd-1-4-PATCH002 wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.10 22-Aug-1998 garbled

\e generates an escape character but is not listed in the manpage. Fixed.


# 1.9 08-Nov-1997 lukem

remove WARNS?=1, cleanup .Nm usage


Revision tags: netbsd-1-3-PATCH003 netbsd-1-3-PATCH003-CANDIDATE2 netbsd-1-3-PATCH003-CANDIDATE1 netbsd-1-3-PATCH003-CANDIDATE0 netbsd-1-3-PATCH002 netbsd-1-3-PATCH001 netbsd-1-3-RELEASE netbsd-1-3-BETA netbsd-1-3-base
# 1.8 18-Oct-1997 mrg

"merge" lite-2. our printf is already kinda different...minor changes only.


# 1.7 08-Mar-1997 mouse

alternate -> alternative, per PR 2643


# 1.6 09-Jan-1997 tls

RCS ID police


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.5 07-Jul-1995 jtc

Changed floating point output format to be exactly the same (use same
text and macros) as those in the printf(3) manpage.
This fixes PR #1194, albeit differently.


# 1.4 15-Feb-1995 jtc

The descriptions of the o and u formatting options were reversed (PR #785).


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.3 05-Nov-1993 jtc

Changes required to make printf utility POSIX.2 compliant:
* Escape characters in the string needed to be processed as they were
encountered, otherwise a "\000" octal constant would prematurely
terminate the formatting string.
* Implemented the %b, SysV echo(1) compatibility, formatting directive.


# 1.2 01-Aug-1993 mycroft

Add RCS indentifiers.


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision