Print this page
2964 need POSIX 2008 locale object support
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Approved by: TBD
*** 22,36 ****
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _LOCALE_H
#define _LOCALE_H
- #pragma ident "%Z%%M% %I% %E% SMI"
-
#include <iso/locale_iso.h>
#if (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \
defined(__EXTENSIONS__)
#include <libintl.h>
--- 22,45 ----
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
+ /*
+ * Copyright 2013 Garrett D'Amore <garrett@damore.org>
+ *
+ * Portions of this file developed by Garrett D'Amore are licensed
+ * under the terms of the Common Development and Distribution License (CDDL)
+ * version 1.0 only. The use of subsequent versions of the License are
+ * is specifically prohibited unless those terms are not in conflict with
+ * version 1.0 of the License. You can find this license on-line at
+ * http://www.illumos.org/license/CDDL
+ */
+
#ifndef _LOCALE_H
#define _LOCALE_H
#include <iso/locale_iso.h>
#if (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \
defined(__EXTENSIONS__)
#include <libintl.h>
*** 54,63 ****
--- 63,108 ----
#define _ValidCategory(c) \
(((int)(c) >= LC_CTYPE) && ((int)(c) <= _LastCategory) || \
((int)c == LC_ALL))
+
+ #if defined(_XPG7) || !defined(_STRICT_SYMBOLS)
+
+ /*
+ * These were added in POSIX 2008 as part of the newlocale() specification.
+ */
+ #define LC_CTYPE_MASK (1 << LC_CTYPE)
+ #define LC_NUMERIC_MASK (1 << LC_NUMERIC)
+ #define LC_TIME_MASK (1 << LC_TIME)
+ #define LC_COLLATE_MASK (1 << LC_COLLATE)
+ #define LC_MONETARY_MASK (1 << LC_MONETARY)
+ #define LC_MESSAGES_MASK (1 << LC_MESSAGES)
+ #define LC_ALL_MASK (0x3f)
+
+ #ifndef _LOCALE_T
+ #define _LOCALE_T
+ typedef struct locale *locale_t;
+ #endif
+
+ #if defined(__STDC__)
+ extern locale_t duplocale(locale_t);
+ extern void freelocale(locale_t);
+ extern locale_t newlocale(int, const char *, locale_t);
+ extern locale_t uselocale(locale_t);
+ #else /* __STDC__ */
+ extern locale_t duplocale();
+ extern void freelocale();
+ extern locale_t newlocale();
+ extern locale_t uselocale();
+ #endif /* __STDC__ */
+
+ #define LC_GLOBAL_LOCALE (__global_locale())
+ extern locale_t __global_locale(void);
+
+ #endif /* defined(_XPG7) || !defined(_STRICT_SYMBOLS) */
+
#ifdef __cplusplus
}
#endif
#endif /* _LOCALE_H */