summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/printf.9
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 16:08:12 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 16:08:12 -0400
commitb9cde963555b6519c5dbd34a39dee3418f593437 (patch)
tree453accad3c3286e3416d4160de4a87223aff684c /static/freebsd/man9/printf.9
parent5cb84ec742fd33f78c8022863fadaa8d0d93e176 (diff)
feat: Added FreeBSD man pages
Diffstat (limited to 'static/freebsd/man9/printf.9')
-rw-r--r--static/freebsd/man9/printf.9197
1 files changed, 197 insertions, 0 deletions
diff --git a/static/freebsd/man9/printf.9 b/static/freebsd/man9/printf.9
new file mode 100644
index 00000000..5c819acb
--- /dev/null
+++ b/static/freebsd/man9/printf.9
@@ -0,0 +1,197 @@
+.\"
+.\" Copyright (c) 2001 Andrew R. Reiter
+.\" Copyright (c) 2004 Joerg Wunsch
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd December 19, 2025
+.Dt PRINTF 9
+.Os
+.Sh NAME
+.Nm printf ,
+.Nm uprintf ,
+.Nm tprintf ,
+.Nm log
+.Nd formatted output conversion
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.Ft int
+.Fn printf "const char *fmt" ...
+.Ft void
+.Fn tprintf "struct proc *p" "int pri" "const char *fmt" ...
+.Ft int
+.Fn uprintf "const char *fmt" ...
+.Ft int
+.Fn vprintf "const char *fmt" "va_list ap"
+.In sys/syslog.h
+.Ft void
+.Fn log "int pri" "const char *fmt" ...
+.Ft void
+.Fn vlog "int pri" "const char *fmt" "va_list ap"
+.Sh DESCRIPTION
+The
+.Nm
+family of functions are similar to the
+.Xr printf 3
+family of functions.
+The different functions each use a different output stream.
+The
+.Fn uprintf
+function outputs to the current process' controlling tty, while
+.Fn printf
+writes to the console as well as to the logging facility.
+The
+.Fn tprintf
+function outputs to the tty associated with the process
+.Fa p
+and the logging facility if
+.Fa pri
+is not \-1.
+The
+.Fn log
+function sends the message to the kernel logging facility, using
+the log level as indicated by
+.Fa pri ,
+and to the console if no process is yet reading the log.
+.Pp
+Each of these related functions use the
+.Fa fmt
+parameter in the same manner as
+.Xr printf 3 .
+However,
+.Nm
+adds two other conversion specifiers and omits one.
+.Pp
+The
+.Cm \&%b
+identifier expects two arguments: an
+.Vt int
+and a
+.Vt "char *" .
+These are used as a register value and a print mask for decoding bitmasks.
+The print mask is made up of two parts: the base and the
+arguments.
+The base value is the output base (radix) expressed as an octal value;
+for example, \e10 gives octal and \e20 gives hexadecimal.
+The arguments are made up of a sequence of bit identifiers.
+Each bit identifier begins with a character specifying the number of the bit
+(starting from 1) this identifier describes.
+The characters from \e01 to \e40 can be used to specify bit numbers in the
+range from 1 to 32 and characters from \e200 to \e377 to specify bit numbers
+in the range from 1 to 128.
+The rest of the identifier is a string of characters containing the name of
+the bit.
+The identifier is terminated by either the bit number at the start of the next
+bit identifier or by
+.Dv NUL
+for the last bit identifier.
+.Pp
+The
+.Cm \&%D
+identifier is meant to assist in hexdumps.
+It requires two arguments: a
+.Vt "u_char *"
+pointer and a
+.Vt "char *"
+string.
+The memory pointed to by the pointer is output in hexadecimal one byte at
+a time.
+The string is used as a delimiter between individual bytes.
+If present, a width directive will specify the number of bytes to display.
+By default, 16 bytes of data are output.
+.Pp
+The
+.Cm \&%n
+conversion specifier is not supported.
+.Pp
+The
+.Fn log
+function uses
+.Xr syslog 3
+level values
+.Dv LOG_DEBUG
+through
+.Dv LOG_EMERG
+for its
+.Fa pri
+parameter (mistakenly called
+.Sq priority
+here).
+Alternatively, if a
+.Fa pri
+of \-1 is given, the message will be appended to the last log message
+started by a previous call to
+.Fn log .
+As these messages are generated by the kernel itself, the facility will
+always be
+.Dv LOG_KERN .
+.Sh RETURN VALUES
+The
+.Fn printf
+and the
+.Fn uprintf
+functions return the number of characters displayed.
+.Sh EXAMPLES
+This example demonstrates the use of the
+.Cm \&%b
+and
+.Cm \&%D
+conversion specifiers.
+The function
+.Bd -literal -offset indent
+void
+printf_test(void)
+{
+ printf("reg=%b\en", 3, "\e10\e2BITTWO\e1BITONE");
+ printf("out: %4D\en", "AAZZ", ":");
+}
+.Ed
+.Pp
+will produce the following output:
+.Bd -literal -offset indent
+reg=3<BITTWO,BITONE>
+out: 41:41:5a:5a
+.Ed
+.Pp
+The same output will be generated by the following function:
+.Bd -literal -offset indent
+void
+printf_test(void)
+{
+ printf("reg=%b\en", 3, "\e10\e201BITTWO\e200BITONE");
+ printf("out: %4D\en", "AAZZ", ":");
+}
+.Ed
+.Pp
+The call
+.Bd -literal -offset indent
+log(LOG_DEBUG, "%s%d: been there.\en", sc->sc_name, sc->sc_unit);
+.Ed
+.Pp
+will add the appropriate debug message at priority
+.Dq Li kern.debug
+to the system log.
+.Sh SEE ALSO
+.Xr printf 3 ,
+.Xr syslog 3