 b6cbf7203b
			
		
	
	
		b6cbf7203b
		
	
	
	
	
		
			
			This patch imports the unmodified current version of NetBSD libc. The NetBSD includes are in /nbsd_include, while the libc code itself is split between lib/nbsd_libc and common/lib/libc.
		
			
				
	
	
		
			175 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\" $NetBSD: err.3,v 1.20 2010/03/22 19:30:53 joerg 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 March 21, 2001
 | |
| .Dt ERR 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm err ,
 | |
| .Nm verr ,
 | |
| .Nm errx ,
 | |
| .Nm verrx ,
 | |
| .Nm warn ,
 | |
| .Nm vwarn ,
 | |
| .Nm warnx ,
 | |
| .Nm vwarnx
 | |
| .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 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"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Fn err
 | |
| and
 | |
| .Fn warn
 | |
| family of functions display a formatted error message on the standard
 | |
| error output.
 | |
| In all cases, the last component of the program name, a colon character,
 | |
| and a space are output.
 | |
| If the
 | |
| .Fa fmt
 | |
| argument is not
 | |
| .Dv NULL ,
 | |
| the formatted error message is output.
 | |
| In the case of the
 | |
| .Fn err ,
 | |
| .Fn verr ,
 | |
| .Fn warn ,
 | |
| and
 | |
| .Fn vwarn
 | |
| functions, the 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 .
 | |
| In all cases, the output is followed by a newline character.
 | |
| The
 | |
| .Fn errx ,
 | |
| .Fn verrx ,
 | |
| .Fn warnx ,
 | |
| and
 | |
| .Fn vwarnx
 | |
| functions will not output this error message string.
 | |
| .Pp
 | |
| The
 | |
| .Fn err ,
 | |
| .Fn verr ,
 | |
| .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 \*[Lt] 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 strerror 3
 | |
| .Sh HISTORY
 | |
| The
 | |
| .Fn err
 | |
| and
 | |
| .Fn warn
 | |
| functions first appeared in
 | |
| .Bx 4.4 .
 | |
| .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
 |