diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
| commit | 253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch) | |
| tree | adf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man3/err.3 | |
| parent | a9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff) | |
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man3/err.3')
| -rw-r--r-- | static/netbsd/man3/err.3 | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/static/netbsd/man3/err.3 b/static/netbsd/man3/err.3 new file mode 100644 index 00000000..e48d2856 --- /dev/null +++ b/static/netbsd/man3/err.3 @@ -0,0 +1,213 @@ +.\" $NetBSD: err.3,v 1.24 2024/02/02 21:16:41 jkoshy Exp $ +.\" +.\" Copyright (c) 1993 +.\" The Regents of the University of California. 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. +.\" 3. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. +.\" +.\" @(#)err.3 8.1 (Berkeley) 6/9/93 +.\" +.Dd February 2, 2024 +.Dt ERR 3 +.Os +.Sh NAME +.Nm err , +.Nm verr , +.Nm errx , +.Nm verrx , +.Nm errc , +.Nm verrc , +.Nm warn , +.Nm vwarn , +.Nm warnx , +.Nm vwarnx , +.Nm warnc , +.Nm vwarnc +.Nd formatted error messages +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In err.h +.Ft void +.Fn err "int status" "const char *fmt" "..." +.Ft void +.Fn verr "int status" "const char *fmt" "va_list args" +.Ft void +.Fn errx "int status" "const char *fmt" "..." +.Ft void +.Fn verrx "int status" "const char *fmt" "va_list args" +.Ft void +.Fn errc "int status" "int code" "const char *fmt" "..." +.Ft void +.Fn verrc "int status" "int code" "const char *fmt" "va_list args" +.Ft void +.Fn warn "const char *fmt" "..." +.Ft void +.Fn vwarn "const char *fmt" "va_list args" +.Ft void +.Fn warnx "const char *fmt" "..." +.Ft void +.Fn vwarnx "const char *fmt" "va_list args" +.Ft void +.Fn warnc "int code" "const char *fmt" "..." +.Ft void +.Fn vwarnc "int code" "const char *fmt" "va_list args" +.Sh DESCRIPTION +The +.Fn err +and +.Fn warn +family of functions display a formatted error message on the standard +error output. +.Pp +In all cases these functions output the last component of the program name, +a colon character, and a space. +If the +.Fa fmt +argument is not +.Dv NULL , +it is used as a +.Xr printf 3 Ns +-like format specification for the error message. +.Pp +In the case of the +.Fn err , +.Fn verr , +.Fn warn , +and +.Fn vwarn +functions, an additional error message string affiliated with the current +value of the global variable +.Va errno +is output next, preceded by a colon character and a space if +.Fa fmt +is not +.Dv NULL . +The +.Fn errc , +.Fn verrc , +.Fn warnc , +and +.Fn vwarnc +functions take an additional +.Ar code +argument to be used as the error number instead of using the global +.Va errno +variable. +The +.Fn errx , +.Fn verrx , +.Fn warnx , +and +.Fn vwarnx +functions will not output an additional error message string. +.Pp +In all cases, the output is terminated by a newline character. +.Pp +The +.Fn err , +.Fn verr , +.Fn errc , +.Fn verrc , +.Fn errx , +and +.Fn verrx +functions do not return, but instead cause the program to terminate +with the status value given by the argument +.Fa status . +It is often appropriate to use the value +.Dv EXIT_FAILURE , +defined in +.In stdlib.h , +as the +.Fa status +argument given to these functions. +.Sh EXAMPLES +Display the current +.Va errno +information string and terminate with status indicating failure: +.Bd -literal -offset indent +if ((p = malloc(size)) == NULL) + err(EXIT_FAILURE, NULL); +if ((fd = open(file_name, O_RDONLY, 0)) == -1) + err(EXIT_FAILURE, "%s", file_name); +.Ed +.Pp +Display an error message and terminate with status indicating failure: +.Bd -literal -offset indent +if (tm.tm_hour < START_TIME) + errx(EXIT_FAILURE, "too early, wait until %s", + start_time_string); +.Ed +.Pp +Warn of an error: +.Bd -literal -offset indent +if ((fd = open(raw_device, O_RDONLY, 0)) == -1) + warnx("%s: %s: trying the block device", + raw_device, strerror(errno)); +if ((fd = open(block_device, O_RDONLY, 0)) == -1) + warn("%s", block_device); +.Ed +.Sh SEE ALSO +.Xr exit 3 , +.Xr getprogname 3 , +.Xr printf 3 , +.Xr strerror 3 +.Sh HISTORY +The +.Fn err +and +.Fn warn +functions first appeared in +.Bx 4.4 . +The +.Fn errc +and +.Fn warnc +functions first appeared in +.Fx 3.0 +and +.Nx 7.0 . +.Sh CAVEATS +It is important never to pass a string with user-supplied data as a +format without using +.Ql %s . +An attacker can put format specifiers in the string to mangle your stack, +leading to a possible security hole. +This holds true even if you have built the string +.Dq by hand +using a function like +.Fn snprintf , +as the resulting string may still contain user-supplied conversion specifiers +for later interpolation by the +.Fn err +and +.Fn warn +functions. +.Pp +Always be sure to use the proper secure idiom: +.Bd -literal -offset indent +err(1, "%s", string); +.Ed |
