diff options
| author | David Schultz <das@FreeBSD.org> | 2008-06-29 21:52:40 +0000 | 
|---|---|---|
| committer | David Schultz <das@FreeBSD.org> | 2008-06-29 21:52:40 +0000 | 
| commit | 2591efccfa656caba3775c91b369330c33fde221 (patch) | |
| tree | 2d4458558cb21698c7958f9066bc758360c4e903 /lib/libc/stdio/printflocal.h | |
| parent | b03825c532b230e7fcc803c4b131633f04fd82a4 (diff) | |
Notes
Diffstat (limited to 'lib/libc/stdio/printflocal.h')
| -rw-r--r-- | lib/libc/stdio/printflocal.h | 94 | 
1 files changed, 94 insertions, 0 deletions
diff --git a/lib/libc/stdio/printflocal.h b/lib/libc/stdio/printflocal.h new file mode 100644 index 000000000000..f643e48b2944 --- /dev/null +++ b/lib/libc/stdio/printflocal.h @@ -0,0 +1,94 @@ +/*- + * Copyright (c) 1990, 1993 + *	The Regents of the University of California.  All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Chris Torek. + * + * 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. + * 4. 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. + * + * $FreeBSD$ + */ + +/* + * Flags used during conversion. + */ +#define	ALT		0x001		/* alternate form */ +#define	LADJUST		0x004		/* left adjustment */ +#define	LONGDBL		0x008		/* long double */ +#define	LONGINT		0x010		/* long integer */ +#define	LLONGINT	0x020		/* long long integer */ +#define	SHORTINT	0x040		/* short integer */ +#define	ZEROPAD		0x080		/* zero (as opposed to blank) pad */ +#define	FPT		0x100		/* Floating point number */ +#define	GROUPING	0x200		/* use grouping ("'" flag) */ +					/* C99 additional size modifiers: */ +#define	SIZET		0x400		/* size_t */ +#define	PTRDIFFT	0x800		/* ptrdiff_t */ +#define	INTMAXT		0x1000		/* intmax_t */ +#define	CHARINT		0x2000		/* print char using int format */ + +/* + * Macros for converting digits to letters and vice versa + */ +#define	to_digit(c)	((c) - '0') +#define is_digit(c)	((unsigned)to_digit(c) <= 9) +#define	to_char(n)	((n) + '0') + +/* Size of the static argument table. */ +#define STATIC_ARG_TBL_SIZE 8 + +union arg { +	int	intarg; +	u_int	uintarg; +	long	longarg; +	u_long	ulongarg; +	long long longlongarg; +	unsigned long long ulonglongarg; +	ptrdiff_t ptrdiffarg; +	size_t	sizearg; +	intmax_t intmaxarg; +	uintmax_t uintmaxarg; +	void	*pvoidarg; +	char	*pchararg; +	signed char *pschararg; +	short	*pshortarg; +	int	*pintarg; +	long	*plongarg; +	long long *plonglongarg; +	ptrdiff_t *pptrdiffarg; +	size_t	*psizearg; +	intmax_t *pintmaxarg; +#ifndef NO_FLOATING_POINT +	double	doublearg; +	long double longdoublearg; +#endif +	wint_t	wintarg; +	wchar_t	*pwchararg; +}; + +/* Handle positional parameters. */ +void	__find_arguments(const char *, va_list, union arg **); +void	__find_warguments(const wchar_t *, va_list, union arg **);  | 
