diff --git a/sys/sparc64/include/ansi.h b/sys/sparc64/include/ansi.h index 0157d56048f2..30b6e7d24a96 100644 --- a/sys/sparc64/include/ansi.h +++ b/sys/sparc64/include/ansi.h @@ -10,6 +10,13 @@ * 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. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 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 @@ -24,6 +31,7 @@ * SUCH DAMAGE. * * @(#)ansi.h 8.2 (Berkeley) 1/4/94 + * From: NetBSD: ansi.h,v 1.9 1997/11/23 20:20:53 kleink Exp * $FreeBSD$ */ @@ -35,18 +43,22 @@ * more than one standard header are defined here. Standard headers * then use: * #ifdef _BSD_SIZE_T_ - * typedef _BSD_SIZE_T_ size_t; + * typedef _BSD_SIZE_T_ size_t; * #undef _BSD_SIZE_T_ * #endif */ -#define _BSD_CLOCK_T_ int /* clock() */ -#define _BSD_CLOCKID_T_ int /* clockid_t */ -#define _BSD_PTRDIFF_T_ long /* ptr1 - ptr2 */ -#define _BSD_SIZE_T_ unsigned long /* sizeof() */ -#define _BSD_SOCKLEN_T_ __uint32_t -#define _BSD_SSIZE_T_ long /* byte count or error */ -#define _BSD_TIME_T_ int /* time() */ -#define _BSD_TIMER_T_ int /* timer_t */ +#define _BSD_CLOCK_T_ int /* clock() */ +#define _BSD_CLOCKID_T_ int /* clock_gettime()... */ +#define _BSD_MBSTATE_T_ __mbstate_t /* mbstate_t */ +#define _BSD_PTRDIFF_T_ long /* ptr1 - ptr2 */ +#define _BSD_RUNE_T_ _BSD_CT_RUNE_T_ /* rune_t (see below) */ +#define _BSD_SIZE_T_ unsigned long /* sizeof() */ +#define _BSD_SOCKLEN_T_ __uint32_t /* socklen_t (duh) */ +#define _BSD_SSIZE_T_ long /* byte count or error */ +#define _BSD_TIME_T_ int /* time()... */ +#define _BSD_TIMER_T_ int /* timer_gettime()... */ +#define _BSD_WCHAR_T_ _BSD_CT_RUNE_T_ /* wchar_t (see below) */ +#define _BSD_WINT_T_ _BSD_CT_RUNE_T_ /* wint_t (see below) */ /* * Types which are fundamental to the implementation and must be used @@ -57,25 +69,30 @@ #define _BSD_CT_RUNE_T_ int /* arg type for ctype funcs */ #define _BSD_OFF_T_ long /* file offset */ #define _BSD_PID_T_ int /* process [group] */ + +#if defined __GNUC__ && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ > 95) +#define _BSD_VA_LIST_ __builtin_va_list /* internally known to gcc */ +#else #define _BSD_VA_LIST_ char * /* va_list */ +#endif /*__GNUC__*/ /* - * Runes (wchar_t) is declared to be an ``int'' instead of the more natural + * The rune type above is declared to be an ``int'' instead of the more natural * ``unsigned long'' or ``long''. Two things are happening here. It is not * unsigned so that EOF (-1) can be naturally assigned to it and used. Also, * it looks like 10646 will be a 31 bit standard. This means that if your * ints cannot hold 32 bits, you will be in trouble. The reason an int was * chosen over a long is that the is*() and to*() routines take ints (says - * ANSI C), but they use _RUNE_T_ instead of int. By changing it here, you - * lose a bit of ANSI conformance, but your programs will still work. - * - * Note that _WCHAR_T_ and _RUNE_T_ must be of the same type. When wchar_t - * and rune_t are typedef'd, _WCHAR_T_ will be undef'd, but _RUNE_T remains - * defined for ctype.h. + * ANSI C), but they use _BSD_CT_RUNE_T_ instead of int. By changing it + * here, you lose a bit of ANSI conformance, but your programs will still + * work. + * + * NOTE: rune_t is not covered by ANSI nor other standards, and should not + * be instantiated outside of lib/libc/locale. Use wchar_t. wchar_t and + * rune_t must be the same type. Also wint_t must be no narrower than + * wchar_t, and should also be able to hold all members of the largest + * character set plus one extra value (WEOF). wint_t must be at least 16 bits. */ -#define _BSD_WCHAR_T_ int /* wchar_t */ -#define _BSD_WINT_T_ int /* wint_t */ -#define _BSD_RUNE_T_ int /* rune_t */ /* * Frequencies of the clock ticks reported by clock() and times(). They @@ -111,4 +128,13 @@ typedef unsigned long __uint64_t; typedef long __intptr_t; typedef unsigned long __uintptr_t; -#endif /* _MACHINE_ANSI_H_ */ +/* + * mbstate_t is an opaque object to keep conversion state, during multibyte + * stream conversions. The content must not be referenced by user programs. + */ +typedef union { + char __mbstate8[128]; + __int64_t _mbstateL; /* for alignment */ +} __mbstate_t; + +#endif /* !_MACHINE_ANSI_H_ */