xref: /illumos-gate/usr/src/uts/common/sys/int_fmtio.h (revision 66c260c2)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
57c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
67c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
77c478bd9Sstevel@tonic-gate  * with the License.
87c478bd9Sstevel@tonic-gate  *
97c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
117c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
127c478bd9Sstevel@tonic-gate  * and limitations under the License.
137c478bd9Sstevel@tonic-gate  *
147c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
157c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
177c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
187c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bd9Sstevel@tonic-gate  *
207c478bd9Sstevel@tonic-gate  * CDDL HEADER END
217c478bd9Sstevel@tonic-gate  */
227c478bd9Sstevel@tonic-gate /*
23ba3594baSGarrett D'Amore  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
24ba3594baSGarrett D'Amore  *
257c478bd9Sstevel@tonic-gate  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
267c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
277c478bd9Sstevel@tonic-gate  */
287c478bd9Sstevel@tonic-gate 
297c478bd9Sstevel@tonic-gate #ifndef _SYS_INT_FMTIO_H
307c478bd9Sstevel@tonic-gate #define	_SYS_INT_FMTIO_H
317c478bd9Sstevel@tonic-gate 
327c478bd9Sstevel@tonic-gate /*
337c478bd9Sstevel@tonic-gate  * This file, <sys/int_fmtio.h>, is part of the Sun Microsystems implementation
347c478bd9Sstevel@tonic-gate  * of <inttypes.h> as defined by the ISO C Standard, ISO/IEC 9899:1999
357c478bd9Sstevel@tonic-gate  * Programming language - C.
367c478bd9Sstevel@tonic-gate  *
377c478bd9Sstevel@tonic-gate  * ISO  International Organization for Standardization.
387c478bd9Sstevel@tonic-gate  *
397c478bd9Sstevel@tonic-gate  * Programs/Modules should not directly include this file.  Access to the
407c478bd9Sstevel@tonic-gate  * types defined in this file should be through the inclusion of one of the
417c478bd9Sstevel@tonic-gate  * following files:
427c478bd9Sstevel@tonic-gate  *
437c478bd9Sstevel@tonic-gate  *	<sys/inttypes.h>	Provides the Kernel and Driver appropriate
447c478bd9Sstevel@tonic-gate  *				components of <inttypes.h>.
457c478bd9Sstevel@tonic-gate  *
467c478bd9Sstevel@tonic-gate  *	<inttypes.h>		For use by applications.
477c478bd9Sstevel@tonic-gate  *
487c478bd9Sstevel@tonic-gate  * See these files for more details.
497c478bd9Sstevel@tonic-gate  */
507c478bd9Sstevel@tonic-gate 
517c478bd9Sstevel@tonic-gate #include <sys/feature_tests.h>
527c478bd9Sstevel@tonic-gate 
537c478bd9Sstevel@tonic-gate #ifdef __cplusplus
547c478bd9Sstevel@tonic-gate extern "C" {
557c478bd9Sstevel@tonic-gate #endif
567c478bd9Sstevel@tonic-gate 
577c478bd9Sstevel@tonic-gate /*
587c478bd9Sstevel@tonic-gate  * Formatted I/O
597c478bd9Sstevel@tonic-gate  *
607c478bd9Sstevel@tonic-gate  * The following macros can be used even when an implementation has not
617c478bd9Sstevel@tonic-gate  * extended the printf/scanf family of functions.
627c478bd9Sstevel@tonic-gate  *
637c478bd9Sstevel@tonic-gate  * The form of the names of the macros is either "PRI" for printf specifiers
647c478bd9Sstevel@tonic-gate  * or "SCN" for scanf specifiers, followed by the conversion specifier letter
657c478bd9Sstevel@tonic-gate  * followed by the datatype size. For example, PRId32 is the macro for
667c478bd9Sstevel@tonic-gate  * the printf d conversion specifier with the flags for 32 bit datatype.
677c478bd9Sstevel@tonic-gate  *
687c478bd9Sstevel@tonic-gate  * An example using one of these macros:
697c478bd9Sstevel@tonic-gate  *
707c478bd9Sstevel@tonic-gate  *	uint64_t u;
717c478bd9Sstevel@tonic-gate  *	printf("u = %016" PRIx64 "\n", u);
727c478bd9Sstevel@tonic-gate  *
737c478bd9Sstevel@tonic-gate  * For the purpose of example, the definitions of the printf/scanf macros
747c478bd9Sstevel@tonic-gate  * below have the values appropriate for a machine with 8 bit shorts, 16
757c478bd9Sstevel@tonic-gate  * bit shorts, 32 bit ints, 32 or 64 bit longs depending on compilation
767c478bd9Sstevel@tonic-gate  * mode, and 64 bit long longs.
777c478bd9Sstevel@tonic-gate  */
787c478bd9Sstevel@tonic-gate 
797c478bd9Sstevel@tonic-gate /*
807c478bd9Sstevel@tonic-gate  * fprintf macros for signed integers
817c478bd9Sstevel@tonic-gate  */
827c478bd9Sstevel@tonic-gate #if defined(_KERNEL)
837c478bd9Sstevel@tonic-gate #define	_MODF8	""
847c478bd9Sstevel@tonic-gate #define	_MODF16	""
857c478bd9Sstevel@tonic-gate #else
867c478bd9Sstevel@tonic-gate #define	_MODF8	"hh"
877c478bd9Sstevel@tonic-gate #define	_MODF16	"h"
887c478bd9Sstevel@tonic-gate #endif
897c478bd9Sstevel@tonic-gate 
907c478bd9Sstevel@tonic-gate #define	_PRId	"d"
917c478bd9Sstevel@tonic-gate #define	_PRIi	"i"
927c478bd9Sstevel@tonic-gate #define	_PRIo	"o"
937c478bd9Sstevel@tonic-gate #define	_PRIu	"u"
947c478bd9Sstevel@tonic-gate #define	_PRIx	"x"
957c478bd9Sstevel@tonic-gate #define	_PRIX	"X"
967c478bd9Sstevel@tonic-gate 
977c478bd9Sstevel@tonic-gate #define	PRId8			_MODF8 _PRId
987c478bd9Sstevel@tonic-gate #define	PRIdLEAST8		PRId8
997c478bd9Sstevel@tonic-gate #define	PRIdFAST8		PRId8
1007c478bd9Sstevel@tonic-gate #define	PRId16			_MODF16 _PRId
1017c478bd9Sstevel@tonic-gate #define	PRIdLEAST16		PRId16
1027c478bd9Sstevel@tonic-gate #define	PRId32			"d"
1037c478bd9Sstevel@tonic-gate #define	PRIdFAST16		PRId32
1047c478bd9Sstevel@tonic-gate #define	PRIdLEAST32		PRId32
1057c478bd9Sstevel@tonic-gate #define	PRIdFAST32		PRId32
1067c478bd9Sstevel@tonic-gate #ifdef  _LP64
1077c478bd9Sstevel@tonic-gate #define	PRId64			"ld"
1087c478bd9Sstevel@tonic-gate #else   /* _ILP32 */
1097c478bd9Sstevel@tonic-gate #if defined(_LONGLONG_TYPE)
1107c478bd9Sstevel@tonic-gate #define	PRId64			"lld"
1117c478bd9Sstevel@tonic-gate #endif
1127c478bd9Sstevel@tonic-gate #endif
1137c478bd9Sstevel@tonic-gate #ifdef PRId64
1147c478bd9Sstevel@tonic-gate #define	PRIdLEAST64		PRId64
1157c478bd9Sstevel@tonic-gate #define	PRIdFAST64		PRId64
1167c478bd9Sstevel@tonic-gate #endif
1177c478bd9Sstevel@tonic-gate 
1187c478bd9Sstevel@tonic-gate #define	PRIi8			_MODF8 _PRIi
1197c478bd9Sstevel@tonic-gate #define	PRIiLEAST8		PRIi8
1207c478bd9Sstevel@tonic-gate #define	PRIiFAST8		PRIi8
1217c478bd9Sstevel@tonic-gate #define	PRIi16			_MODF16 _PRIi
1227c478bd9Sstevel@tonic-gate #define	PRIiLEAST16		PRIi16
1237c478bd9Sstevel@tonic-gate #define	PRIi32			"i"
1247c478bd9Sstevel@tonic-gate #define	PRIiFAST16		PRIi32
1257c478bd9Sstevel@tonic-gate #define	PRIiLEAST32		PRIi32
1267c478bd9Sstevel@tonic-gate #define	PRIiFAST32		PRIi32
1277c478bd9Sstevel@tonic-gate #ifdef  _LP64
1287c478bd9Sstevel@tonic-gate #define	PRIi64			"li"
1297c478bd9Sstevel@tonic-gate #else   /* _ILP32 */
1307c478bd9Sstevel@tonic-gate #if defined(_LONGLONG_TYPE)
1317c478bd9Sstevel@tonic-gate #define	PRIi64			"lli"
1327c478bd9Sstevel@tonic-gate #endif
1337c478bd9Sstevel@tonic-gate #endif
1347c478bd9Sstevel@tonic-gate #ifdef PRIi64
1357c478bd9Sstevel@tonic-gate #define	PRIiLEAST64		PRIi64
1367c478bd9Sstevel@tonic-gate #define	PRIiFAST64		PRIi64
1377c478bd9Sstevel@tonic-gate #endif
1387c478bd9Sstevel@tonic-gate 
1397c478bd9Sstevel@tonic-gate /*
1407c478bd9Sstevel@tonic-gate  * fprintf macros for unsigned integers
1417c478bd9Sstevel@tonic-gate  */
1427c478bd9Sstevel@tonic-gate 
1437c478bd9Sstevel@tonic-gate #define	PRIo8			_MODF8 _PRIo
1447c478bd9Sstevel@tonic-gate #define	PRIoLEAST8		PRIo8
1457c478bd9Sstevel@tonic-gate #define	PRIoFAST8		PRIo8
1467c478bd9Sstevel@tonic-gate #define	PRIo16			_MODF16 _PRIo
1477c478bd9Sstevel@tonic-gate #define	PRIoLEAST16		PRIo16
1487c478bd9Sstevel@tonic-gate #define	PRIo32			"o"
1497c478bd9Sstevel@tonic-gate #define	PRIoFAST16		PRIo32
1507c478bd9Sstevel@tonic-gate #define	PRIoLEAST32		PRIo32
1517c478bd9Sstevel@tonic-gate #define	PRIoFAST32		PRIo32
1527c478bd9Sstevel@tonic-gate #ifdef  _LP64
1537c478bd9Sstevel@tonic-gate #define	PRIo64			"lo"
1547c478bd9Sstevel@tonic-gate #else	/* _ILP32 */
1557c478bd9Sstevel@tonic-gate #if defined(_LONGLONG_TYPE)
1567c478bd9Sstevel@tonic-gate #define	PRIo64			"llo"
1577c478bd9Sstevel@tonic-gate #endif
1587c478bd9Sstevel@tonic-gate #endif
1597c478bd9Sstevel@tonic-gate #ifdef PRIo64
1607c478bd9Sstevel@tonic-gate #define	PRIoLEAST64		PRIo64
1617c478bd9Sstevel@tonic-gate #define	PRIoFAST64		PRIo64
1627c478bd9Sstevel@tonic-gate #endif
1637c478bd9Sstevel@tonic-gate 
1647c478bd9Sstevel@tonic-gate #define	PRIu8			_MODF8 _PRIu
1657c478bd9Sstevel@tonic-gate #define	PRIuLEAST8		PRIu8
1667c478bd9Sstevel@tonic-gate #define	PRIuFAST8		PRIu8
1677c478bd9Sstevel@tonic-gate #define	PRIu16			_MODF16 _PRIu
1687c478bd9Sstevel@tonic-gate #define	PRIuLEAST16		PRIu16
1697c478bd9Sstevel@tonic-gate #define	PRIu32			"u"
1707c478bd9Sstevel@tonic-gate #define	PRIuFAST16		PRIu32
1717c478bd9Sstevel@tonic-gate #define	PRIuLEAST32		PRIu32
1727c478bd9Sstevel@tonic-gate #define	PRIuFAST32		PRIu32
1737c478bd9Sstevel@tonic-gate #ifdef  _LP64
1747c478bd9Sstevel@tonic-gate #define	PRIu64			"lu"
1757c478bd9Sstevel@tonic-gate #else   /* _ILP32 */
1767c478bd9Sstevel@tonic-gate #if defined(_LONGLONG_TYPE)
1777c478bd9Sstevel@tonic-gate #define	PRIu64			"llu"
1787c478bd9Sstevel@tonic-gate #endif
1797c478bd9Sstevel@tonic-gate #endif
1807c478bd9Sstevel@tonic-gate #ifdef PRIu64
1817c478bd9Sstevel@tonic-gate #define	PRIuLEAST64		PRIu64
1827c478bd9Sstevel@tonic-gate #define	PRIuFAST64		PRIu64
1837c478bd9Sstevel@tonic-gate #endif
1847c478bd9Sstevel@tonic-gate 
1857c478bd9Sstevel@tonic-gate #define	PRIx8			_MODF8 _PRIx
1867c478bd9Sstevel@tonic-gate #define	PRIxLEAST8		PRIx8
1877c478bd9Sstevel@tonic-gate #define	PRIxFAST8		PRIx8
1887c478bd9Sstevel@tonic-gate #define	PRIx16			_MODF16 _PRIx
1897c478bd9Sstevel@tonic-gate #define	PRIxLEAST16		PRIx16
1907c478bd9Sstevel@tonic-gate #define	PRIx32			"x"
1917c478bd9Sstevel@tonic-gate #define	PRIxFAST16		PRIx32
1927c478bd9Sstevel@tonic-gate #define	PRIxLEAST32		PRIx32
1937c478bd9Sstevel@tonic-gate #define	PRIxFAST32		PRIx32
1947c478bd9Sstevel@tonic-gate #ifdef  _LP64
1957c478bd9Sstevel@tonic-gate #define	PRIx64			"lx"
1967c478bd9Sstevel@tonic-gate #else   /* _ILP32 */
1977c478bd9Sstevel@tonic-gate #if defined(_LONGLONG_TYPE)
1987c478bd9Sstevel@tonic-gate #define	PRIx64			"llx"
1997c478bd9Sstevel@tonic-gate #endif
2007c478bd9Sstevel@tonic-gate #endif
2017c478bd9Sstevel@tonic-gate #ifdef PRIx64
2027c478bd9Sstevel@tonic-gate #define	PRIxLEAST64		PRIx64
2037c478bd9Sstevel@tonic-gate #define	PRIxFAST64		PRIx64
2047c478bd9Sstevel@tonic-gate #endif
2057c478bd9Sstevel@tonic-gate 
2067c478bd9Sstevel@tonic-gate #define	PRIX8			_MODF8 _PRIX
2077c478bd9Sstevel@tonic-gate #define	PRIXLEAST8		PRIX8
2087c478bd9Sstevel@tonic-gate #define	PRIXFAST8		PRIX8
2097c478bd9Sstevel@tonic-gate #define	PRIX16			_MODF16 _PRIX
2107c478bd9Sstevel@tonic-gate #define	PRIXLEAST16		PRIX16
2117c478bd9Sstevel@tonic-gate #define	PRIX32			"X"
2127c478bd9Sstevel@tonic-gate #define	PRIXFAST16		PRIX32
2137c478bd9Sstevel@tonic-gate #define	PRIXLEAST32		PRIX32
2147c478bd9Sstevel@tonic-gate #define	PRIXFAST32		PRIX32
2157c478bd9Sstevel@tonic-gate #ifdef  _LP64
2167c478bd9Sstevel@tonic-gate #define	PRIX64			"lX"
2177c478bd9Sstevel@tonic-gate #else   /* _ILP32 */
2187c478bd9Sstevel@tonic-gate #if defined(_LONGLONG_TYPE)
2197c478bd9Sstevel@tonic-gate #define	PRIX64			"llX"
2207c478bd9Sstevel@tonic-gate #endif
2217c478bd9Sstevel@tonic-gate #endif
2227c478bd9Sstevel@tonic-gate #ifdef PRIX64
2237c478bd9Sstevel@tonic-gate #define	PRIXLEAST64		PRIX64
2247c478bd9Sstevel@tonic-gate #define	PRIXFAST64		PRIX64
2257c478bd9Sstevel@tonic-gate #endif
2267c478bd9Sstevel@tonic-gate 
2277c478bd9Sstevel@tonic-gate /*
2287c478bd9Sstevel@tonic-gate  * fprintf macros for pointers
2297c478bd9Sstevel@tonic-gate  */
2307c478bd9Sstevel@tonic-gate 
2317c478bd9Sstevel@tonic-gate #if defined(_LP64) || defined(_I32LPx)
2327c478bd9Sstevel@tonic-gate #define	PRIdPTR			"ld"
2337c478bd9Sstevel@tonic-gate #define	PRIiPTR			"li"
2347c478bd9Sstevel@tonic-gate #define	PRIoPTR			"lo"
2357c478bd9Sstevel@tonic-gate #define	PRIuPTR			"lu"
2367c478bd9Sstevel@tonic-gate #define	PRIxPTR			"lx"
2377c478bd9Sstevel@tonic-gate #define	PRIXPTR			"lX"
2387c478bd9Sstevel@tonic-gate #else
2397c478bd9Sstevel@tonic-gate #define	PRIdPTR			"d"
2407c478bd9Sstevel@tonic-gate #define	PRIiPTR			"i"
2417c478bd9Sstevel@tonic-gate #define	PRIoPTR			"o"
2427c478bd9Sstevel@tonic-gate #define	PRIuPTR			"u"
2437c478bd9Sstevel@tonic-gate #define	PRIxPTR			"x"
2447c478bd9Sstevel@tonic-gate #define	PRIXPTR			"X"
2457c478bd9Sstevel@tonic-gate #endif /* defined(_LP64) || defined(_I32LPx) */
2467c478bd9Sstevel@tonic-gate 
2477c478bd9Sstevel@tonic-gate /*
2487c478bd9Sstevel@tonic-gate  * fscanf macros for signed integers
2497c478bd9Sstevel@tonic-gate  */
2507c478bd9Sstevel@tonic-gate #define	SCNd8			"hhd"
2517c478bd9Sstevel@tonic-gate #define	SCNdLEAST8		SCNd8
2527c478bd9Sstevel@tonic-gate #define	SCNdFAST8		SCNd8
2537c478bd9Sstevel@tonic-gate #define	SCNd16			"hd"
2547c478bd9Sstevel@tonic-gate #define	SCNdLEAST16		SCNd16
2557c478bd9Sstevel@tonic-gate #define	SCNd32			"d"
2567c478bd9Sstevel@tonic-gate #define	SCNdFAST16		SCNd32
2577c478bd9Sstevel@tonic-gate #define	SCNdLEAST32		SCNd32
2587c478bd9Sstevel@tonic-gate #define	SCNdFAST32		SCNd32
2597c478bd9Sstevel@tonic-gate #ifdef PRId64
2607c478bd9Sstevel@tonic-gate #define	SCNd64			PRId64
2617c478bd9Sstevel@tonic-gate #define	SCNdLEAST64		PRId64
2627c478bd9Sstevel@tonic-gate #define	SCNdFAST64		PRId64
2637c478bd9Sstevel@tonic-gate #endif
2647c478bd9Sstevel@tonic-gate #define	SCNdPTR			PRIdPTR
2657c478bd9Sstevel@tonic-gate 
2667c478bd9Sstevel@tonic-gate #define	SCNi8			"hhi"
2677c478bd9Sstevel@tonic-gate #define	SCNiLEAST8		SCNi8
2687c478bd9Sstevel@tonic-gate #define	SCNiFAST8		SCNi8
2697c478bd9Sstevel@tonic-gate #define	SCNi16			"hi"
2707c478bd9Sstevel@tonic-gate #define	SCNiLEAST16		SCNi16
2717c478bd9Sstevel@tonic-gate #define	SCNi32			"i"
2727c478bd9Sstevel@tonic-gate #define	SCNiFAST16		SCNi32
2737c478bd9Sstevel@tonic-gate #define	SCNiLEAST32		SCNi32
2747c478bd9Sstevel@tonic-gate #define	SCNiFAST32		SCNi32
2757c478bd9Sstevel@tonic-gate #ifdef PRIi64
2767c478bd9Sstevel@tonic-gate #define	SCNi64			PRIi64
2777c478bd9Sstevel@tonic-gate #define	SCNiLEAST64		PRIi64
2787c478bd9Sstevel@tonic-gate #define	SCNiFAST64		PRIi64
2797c478bd9Sstevel@tonic-gate #endif
2807c478bd9Sstevel@tonic-gate #define	SCNiPTR			PRIiPTR
2817c478bd9Sstevel@tonic-gate 
2827c478bd9Sstevel@tonic-gate /*
2837c478bd9Sstevel@tonic-gate  * fscanf macros for unsigned integers
2847c478bd9Sstevel@tonic-gate  */
2857c478bd9Sstevel@tonic-gate #define	SCNo8			"hho"
2867c478bd9Sstevel@tonic-gate #define	SCNoLEAST8		SCNo8
2877c478bd9Sstevel@tonic-gate #define	SCNoFAST8		SCNo8
2887c478bd9Sstevel@tonic-gate #define	SCNo16			"ho"
2897c478bd9Sstevel@tonic-gate #define	SCNoLEAST16		SCNo16
2907c478bd9Sstevel@tonic-gate #define	SCNo32			"o"
2917c478bd9Sstevel@tonic-gate #define	SCNoFAST16		SCNo32
2927c478bd9Sstevel@tonic-gate #define	SCNoLEAST32		SCNo32
2937c478bd9Sstevel@tonic-gate #define	SCNoFAST32		SCNo32
2947c478bd9Sstevel@tonic-gate #ifdef PRIo64
2957c478bd9Sstevel@tonic-gate #define	SCNo64			PRIo64
2967c478bd9Sstevel@tonic-gate #define	SCNoLEAST64		PRIo64
2977c478bd9Sstevel@tonic-gate #define	SCNoFAST64		PRIo64
2987c478bd9Sstevel@tonic-gate #endif
2997c478bd9Sstevel@tonic-gate #define	SCNoPTR			PRIoPTR
3007c478bd9Sstevel@tonic-gate 
3017c478bd9Sstevel@tonic-gate #define	SCNu8			"hhu"
3027c478bd9Sstevel@tonic-gate #define	SCNuLEAST8		SCNu8
3037c478bd9Sstevel@tonic-gate #define	SCNuFAST8		SCNu8
3047c478bd9Sstevel@tonic-gate #define	SCNu16			"hu"
3057c478bd9Sstevel@tonic-gate #define	SCNuLEAST16		SCNu16
3067c478bd9Sstevel@tonic-gate #define	SCNu32			"u"
3077c478bd9Sstevel@tonic-gate #define	SCNuFAST16		SCNu32
3087c478bd9Sstevel@tonic-gate #define	SCNuLEAST32		SCNu32
3097c478bd9Sstevel@tonic-gate #define	SCNuFAST32		SCNu32
3107c478bd9Sstevel@tonic-gate #ifdef PRIu64
3117c478bd9Sstevel@tonic-gate #define	SCNu64			PRIu64
3127c478bd9Sstevel@tonic-gate #define	SCNuLEAST64		PRIu64
3137c478bd9Sstevel@tonic-gate #define	SCNuFAST64		PRIu64
3147c478bd9Sstevel@tonic-gate #endif
3157c478bd9Sstevel@tonic-gate #define	SCNuPTR			PRIuPTR
3167c478bd9Sstevel@tonic-gate 
3177c478bd9Sstevel@tonic-gate #define	SCNx8			"hhx"
3187c478bd9Sstevel@tonic-gate #define	SCNxLEAST8		SCNx8
3197c478bd9Sstevel@tonic-gate #define	SCNxFAST8		SCNx8
3207c478bd9Sstevel@tonic-gate #define	SCNx16			"hx"
3217c478bd9Sstevel@tonic-gate #define	SCNxLEAST16		SCNx16
3227c478bd9Sstevel@tonic-gate #define	SCNx32			"x"
3237c478bd9Sstevel@tonic-gate #define	SCNxFAST16		SCNx32
3247c478bd9Sstevel@tonic-gate #define	SCNxLEAST32		SCNx32
3257c478bd9Sstevel@tonic-gate #define	SCNxFAST32		SCNx32
3267c478bd9Sstevel@tonic-gate #ifdef PRIx64
3277c478bd9Sstevel@tonic-gate #define	SCNx64			PRIx64
3287c478bd9Sstevel@tonic-gate #define	SCNxLEAST64		PRIx64
3297c478bd9Sstevel@tonic-gate #define	SCNxFAST64		PRIx64
3307c478bd9Sstevel@tonic-gate #endif
3317c478bd9Sstevel@tonic-gate #define	SCNxPTR			PRIxPTR
3327c478bd9Sstevel@tonic-gate 
3337c478bd9Sstevel@tonic-gate #define	SCNX8			"hhX"
3347c478bd9Sstevel@tonic-gate #define	SCNXLEAST8		SCNX8
3357c478bd9Sstevel@tonic-gate #define	SCNXFAST8		SCNX8
3367c478bd9Sstevel@tonic-gate #define	SCNX16			"hX"
3377c478bd9Sstevel@tonic-gate #define	SCNXLEAST16		SCNX16
3387c478bd9Sstevel@tonic-gate #define	SCNX32			"X"
3397c478bd9Sstevel@tonic-gate #define	SCNXFAST16		SCNX32
3407c478bd9Sstevel@tonic-gate #define	SCNXLEAST32		SCNX32
3417c478bd9Sstevel@tonic-gate #define	SCNXFAST32		SCNX32
3427c478bd9Sstevel@tonic-gate #ifdef PRIX64
3437c478bd9Sstevel@tonic-gate #define	SCNX64			PRIX64
3447c478bd9Sstevel@tonic-gate #define	SCNXLEAST64		PRIX64
3457c478bd9Sstevel@tonic-gate #define	SCNXFAST64		PRIX64
3467c478bd9Sstevel@tonic-gate #endif
3477c478bd9Sstevel@tonic-gate #define	SCNXPTR			PRIXPTR
3487c478bd9Sstevel@tonic-gate 
3497c478bd9Sstevel@tonic-gate /*
3507c478bd9Sstevel@tonic-gate  * The following macros define I/O formats for intmax_t and uintmax_t.
3517c478bd9Sstevel@tonic-gate  */
3527c478bd9Sstevel@tonic-gate #if !defined(_LP64) && defined(_LONGLONG_TYPE)
3537c478bd9Sstevel@tonic-gate #define	PRIdMAX			"lld"
3547c478bd9Sstevel@tonic-gate #define	PRIiMAX			"lli"
3557c478bd9Sstevel@tonic-gate #define	PRIoMAX			"llo"
3567c478bd9Sstevel@tonic-gate #define	PRIxMAX			"llx"
3577c478bd9Sstevel@tonic-gate #define	PRIuMAX			"llu"
3587c478bd9Sstevel@tonic-gate #define	PRIXMAX			"llX"
3597c478bd9Sstevel@tonic-gate #else
3607c478bd9Sstevel@tonic-gate #define	PRIdMAX			"ld"
3617c478bd9Sstevel@tonic-gate #define	PRIiMAX			"li"
3627c478bd9Sstevel@tonic-gate #define	PRIoMAX			"lo"
3637c478bd9Sstevel@tonic-gate #define	PRIxMAX			"lx"
3647c478bd9Sstevel@tonic-gate #define	PRIuMAX			"lu"
3657c478bd9Sstevel@tonic-gate #define	PRIXMAX			"lX"
3667c478bd9Sstevel@tonic-gate #endif	/* !defined(_LP64) && defined(_LONGLONG_TYPE) */
3677c478bd9Sstevel@tonic-gate 
3687c478bd9Sstevel@tonic-gate #define	SCNdMAX			PRIdMAX
3697c478bd9Sstevel@tonic-gate #define	SCNiMAX			PRIiMAX
3707c478bd9Sstevel@tonic-gate #define	SCNoMAX			PRIoMAX
3717c478bd9Sstevel@tonic-gate #define	SCNxMAX			PRIxMAX
3727c478bd9Sstevel@tonic-gate #define	SCNuMAX			PRIuMAX
3737c478bd9Sstevel@tonic-gate #define	SCNXMAX			PRIXMAX
3747c478bd9Sstevel@tonic-gate 
37587cd64a1SRichard Lowe /*
37687cd64a1SRichard Lowe  * Non-standard formatters and scanners, which are protected namespace-wise
37787cd64a1SRichard Lowe  * lest they become standard.  There are few good reasons to add to these,
37887cd64a1SRichard Lowe  * luckily.
37987cd64a1SRichard Lowe  *
38087cd64a1SRichard Lowe  * We define the full suite of formats per type, even in cases where that's
38187cd64a1SRichard Lowe  * not exactly useful.
38287cd64a1SRichard Lowe  */
38387cd64a1SRichard Lowe #if !defined(_STRICT_SYMBOLS)
38487cd64a1SRichard Lowe 
38587cd64a1SRichard Lowe /*
38687cd64a1SRichard Lowe  * The following macros define I/O formats for id_t, which is always 32bit but
38787cd64a1SRichard Lowe  * for historical reasons a real pain to format.
38887cd64a1SRichard Lowe  */
38987cd64a1SRichard Lowe #if !defined(_LP64)
39087cd64a1SRichard Lowe #define	_PRIdID			"ld"
39187cd64a1SRichard Lowe #define	_PRIiID			"li"
39287cd64a1SRichard Lowe #define	_PRIoID			"lo"
39387cd64a1SRichard Lowe #define	_PRIxID			"lx"
39487cd64a1SRichard Lowe #define	_PRIuID			"lu"
39587cd64a1SRichard Lowe #define	_PRIXID			"lX"
39687cd64a1SRichard Lowe #else
39787cd64a1SRichard Lowe #define	_PRIdID			"d"
39887cd64a1SRichard Lowe #define	_PRIiID			"i"
39987cd64a1SRichard Lowe #define	_PRIoID			"o"
40087cd64a1SRichard Lowe #define	_PRIxID			"x"
40187cd64a1SRichard Lowe #define	_PRIuID			"u"
40287cd64a1SRichard Lowe #define	_PRIXID			"X"
40387cd64a1SRichard Lowe #endif
40487cd64a1SRichard Lowe 
40587cd64a1SRichard Lowe #define	_SCNdID			_PRIdID
40687cd64a1SRichard Lowe #define	_SCNiID			_PRIiID
40787cd64a1SRichard Lowe #define	_SCNoID			_PRIoID
40887cd64a1SRichard Lowe #define	_SCNxID			_PRIxID
40987cd64a1SRichard Lowe #define	_SCNuID			_PRIuID
41087cd64a1SRichard Lowe #define	_SCNXID			_PRIXID
41187cd64a1SRichard Lowe 
412*66c260c2SRobert Mustacchi /*
413*66c260c2SRobert Mustacchi  * The following are set up for the wint_t and wchar_t which have the same
414*66c260c2SRobert Mustacchi  * general problem. They have the same types as above, but we use unique macros
415*66c260c2SRobert Mustacchi  * to help readers.
416*66c260c2SRobert Mustacchi  */
417*66c260c2SRobert Mustacchi #define	_PRIdWC			_PRIdID
418*66c260c2SRobert Mustacchi #define	_PRIiWC			_PRIiID
419*66c260c2SRobert Mustacchi #define	_PRIoWC			_PRIoID
420*66c260c2SRobert Mustacchi #define	_PRIxWC			_PRIxID
421*66c260c2SRobert Mustacchi #define	_PRIuWC			_PRIuID
422*66c260c2SRobert Mustacchi #define	_PRIXWC			_PRIXID
423*66c260c2SRobert Mustacchi #define	_SCNdWC			_PRIdID
424*66c260c2SRobert Mustacchi #define	_SCNiWC			_PRIiID
425*66c260c2SRobert Mustacchi #define	_SCNoWC			_PRIoID
426*66c260c2SRobert Mustacchi #define	_SCNxWC			_PRIxID
427*66c260c2SRobert Mustacchi #define	_SCNuWC			_PRIuID
428*66c260c2SRobert Mustacchi #define	_SCNXWC			_PRIXID
429*66c260c2SRobert Mustacchi 
430*66c260c2SRobert Mustacchi 
43187cd64a1SRichard Lowe #endif	/* _STRICT_SYMBOLS */
43287cd64a1SRichard Lowe 
4337c478bd9Sstevel@tonic-gate #ifdef __cplusplus
4347c478bd9Sstevel@tonic-gate }
4357c478bd9Sstevel@tonic-gate #endif
4367c478bd9Sstevel@tonic-gate 
4377c478bd9Sstevel@tonic-gate #endif /* _SYS_INT_FMTIO_H */
438