Print this page
2964 need POSIX 2008 locale object support
Reviewed by: Robert Mustacchi <rm@joyent.com>
*** 25,42 ****
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _CTYPE_H
#define _CTYPE_H
- #pragma ident "%Z%%M% %I% %E% SMI"
-
#include <iso/ctype_iso.h>
- #include <iso/ctype_c99.h>
/*
* Allow global visibility for symbols defined in
* C++ "std" namespace in <iso/ctype_iso.h>.
*/
--- 25,42 ----
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
+ /*
+ * Copyright 2014 Garrett D'Amore <garrett@damore.org>
+ */
#ifndef _CTYPE_H
#define _CTYPE_H
#include <iso/ctype_iso.h>
/*
* Allow global visibility for symbols defined in
* C++ "std" namespace in <iso/ctype_iso.h>.
*/
*** 52,62 ****
--- 52,65 ----
using std::isspace;
using std::isupper;
using std::isxdigit;
using std::tolower;
using std::toupper;
+ #if _cplusplus >= 201103L
+ using std::isblank;
#endif
+ #endif
#ifdef __cplusplus
extern "C" {
#endif
*** 78,106 ****
#if defined(__EXTENSIONS__) || \
((!defined(_STRICT_STDC) && !defined(_POSIX_C_SOURCE)) || \
defined(_XOPEN_SOURCE)) || defined(__XPG4_CHAR_CLASS__)
#define isascii(c) (!(((int)(c)) & ~0177))
#define toascii(c) (((int)(c)) & 0177)
! #if defined(__XPG4_CHAR_CLASS__) || defined(_XPG4)
! #define _toupper(c) (__trans_upper[(int)(c)])
! #define _tolower(c) (__trans_lower[(int)(c)])
! #else
! #define _toupper(c) ((__ctype + 258)[(int)(c)])
! #define _tolower(c) ((__ctype + 258)[(int)(c)])
! #endif /* defined(__XPG4_CHAR_CLASS__) || defined(_XPG4) */
#endif /* defined(__EXTENSIONS__) || ((!defined(_STRICT_STDC) ... */
#endif /* !defined(__lint) */
#else /* defined(__STDC__) */
#if !defined(__lint)
#define isascii(c) (!(((int)(c)) & ~0177))
! #define _toupper(c) ((_ctype + 258)[(int)(c)])
! #define _tolower(c) ((_ctype + 258)[(int)(c)])
#define toascii(c) (((int)(c)) & 0177)
#endif /* !defined(__lint) */
#endif /* defined(__STDC__) */
--- 81,126 ----
#if defined(__EXTENSIONS__) || \
((!defined(_STRICT_STDC) && !defined(_POSIX_C_SOURCE)) || \
defined(_XOPEN_SOURCE)) || defined(__XPG4_CHAR_CLASS__)
#define isascii(c) (!(((int)(c)) & ~0177))
#define toascii(c) (((int)(c)) & 0177)
! #define _toupper(c) (toupper(c))
! #define _tolower(c) (tolower(c))
#endif /* defined(__EXTENSIONS__) || ((!defined(_STRICT_STDC) ... */
#endif /* !defined(__lint) */
+ #if defined(_XPG7) || !defined(_STRICT_SYMBOLS)
+
+ #ifndef _LOCALE_T
+ #define _LOCALE_T
+ typedef struct locale *locale_t;
+ #endif
+
+ extern int isalnum_l(int, locale_t);
+ extern int isalpha_l(int, locale_t);
+ extern int isblank_l(int, locale_t);
+ extern int iscntrl_l(int, locale_t);
+ extern int isdigit_l(int, locale_t);
+ extern int isgraph_l(int, locale_t);
+ extern int islower_l(int, locale_t);
+ extern int isprint_l(int, locale_t);
+ extern int ispunct_l(int, locale_t);
+ extern int isspace_l(int, locale_t);
+ extern int isupper_l(int, locale_t);
+ extern int isxdigit_l(int, locale_t);
+
+ #endif /* defined(_XPG7) || !defined(_STRICT_SYMBOLS) */
+
#else /* defined(__STDC__) */
#if !defined(__lint)
#define isascii(c) (!(((int)(c)) & ~0177))
! #define _toupper(c) (isascii(c) ? __trans_upper[(int)(c)] : toupper(c))
! #define _tolower(c) (isascii(c) ? __trans_lower[(int)(c)] : tolower(c))
#define toascii(c) (((int)(c)) & 0177)
#endif /* !defined(__lint) */
#endif /* defined(__STDC__) */