summaryrefslogtreecommitdiffstats
path: root/share/man/man9/printf.9
diff options
context:
space:
mode:
Diffstat (limited to 'share/man/man9/printf.9')
-rw-r--r--share/man/man9/printf.9175
1 files changed, 175 insertions, 0 deletions
diff --git a/share/man/man9/printf.9 b/share/man/man9/printf.9
new file mode 100644
index 0000000..571e7e6
--- /dev/null
+++ b/share/man/man9/printf.9
@@ -0,0 +1,175 @@
+.\"
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 8, 2006
+.Dt PRINTF 9
+.Os
+.Sh NAME
+.Nm printf , uprintf , tprintf, 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" ...
+.In sys/syslog.h
+.Ft void
+.Fn log "int pri" "const char *fmt" ...
+.Sh DESCRIPTION
+The
+.Xr printf 9
+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 .
+.Pp
+Each of these related functions use the
+.Fa fmt
+parameter in the same manner as
+.Xr printf 3 .
+However,
+.Xr printf 9
+adds two other conversion specifiers.
+.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 expressed as an integer 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 an integer value which is the number of the
+bit (starting from 1) this identifier describes.
+The rest of the identifier is a string of characters containing the name of
+the bit.
+The string is terminated by either the bit number at the start of the next
+bit identifier or
+.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 be 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
+.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\en");
+ printf("out: %4D\en", "AAAA", ":");
+}
+.Ed
+.Pp
+will produce the following output:
+.Bd -literal -offset indent
+reg=3<BITTWO,BITONE>
+out: 41:41:41:41
+.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
OpenPOWER on IntegriCloud