 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.
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: fmtcheck.3,v 1.7 2009/03/09 19:24:26 joerg Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 2000 The NetBSD Foundation, Inc.
 | |
| .\" All rights reserved.
 | |
| .\"
 | |
| .\" This file was contributed to The NetBSD Foundation by Allen Briggs.
 | |
| .\"
 | |
| .\" 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
 | |
| .\"
 | |
| .Dd October 17, 2000
 | |
| .Dt FMTCHECK 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm fmtcheck
 | |
| .Nd sanitizes user-supplied printf(3)-style format string
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In stdio.h
 | |
| .Ft const char *
 | |
| .Fn fmtcheck "const char *fmt_suspect" "const char *fmt_default"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Nm
 | |
| function scans
 | |
| .Fa fmt_suspect
 | |
| and
 | |
| .Fa fmt_default
 | |
| to determine if
 | |
| .Fa fmt_suspect
 | |
| will consume the same argument types as
 | |
| .Fa fmt_default
 | |
| and to ensure that
 | |
| .Fa fmt_suspect
 | |
| is a valid format string.
 | |
| .Pp
 | |
| The
 | |
| .Xr printf 3
 | |
| family of functions can not verify the types of arguments that they are
 | |
| passed at run-time.
 | |
| In some cases, like
 | |
| .Xr catgets 3 ,
 | |
| it is useful or necessary to use a user-supplied format string with no
 | |
| guarantee that the format string matches the specified parameters.
 | |
| .Pp
 | |
| The
 | |
| .Nm
 | |
| function was designed to be used in these cases, as in:
 | |
| .Bd -literal -offset indent
 | |
| printf(fmtcheck(user_format, standard_format), arg1, arg2);
 | |
| .Ed
 | |
| .Pp
 | |
| In the check, field widths, fillers, precisions, etc. are ignored (unless
 | |
| the field width or precision is an asterisk
 | |
| .Ql *
 | |
| instead of a digit string).
 | |
| Also, any text other than the format specifiers is completely ignored.
 | |
| .Pp
 | |
| Note that the formats may be quite different as long as they accept the
 | |
| same parameters.
 | |
| For example, "%p %o %30s %#llx %-10.*e %n" is
 | |
| compatible with "This number %lu %d%% and string %s has %qd numbers
 | |
| and %.*g floats (%n)."
 | |
| However, "%o" is not equivalent to "%lx" because
 | |
| the first requires an integer and the second requires a long.
 | |
| .Sh RETURN VALUES
 | |
| If
 | |
| .Fa fmt_suspect
 | |
| is a valid format and consumes the same argument types as
 | |
| .Fa fmt_default ,
 | |
| then the
 | |
| .Nm
 | |
| function will return
 | |
| .Fa fmt_suspect .
 | |
| Otherwise, it will return
 | |
| .Fa fmt_default .
 | |
| .Sh SEE ALSO
 | |
| .Xr printf 3
 |