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
*** 18,27 ****
--- 18,28 ----
*
* CDDL HEADER END
*/
/*
+ * Copyright 2014 Garrett D'Amore <garrett@damore.org>
* Copyright (c) 1993, 2010, Oracle and/or its affiliates. All rights reserved.
*/
#ifndef _WCHAR_H
#define _WCHAR_H
*** 165,186 ****
using std::wcwidth;
using std::wctype;
#endif
#endif /* !defined(_STRICT_STDC) || defined(_XOPEN_SOURCE)... */
! #if defined(__EXTENSIONS__) || \
! (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX))
! /* || defined(_XPG7) */
! extern wchar_t *wcsdup(const wchar_t *);
extern size_t wcsnlen(const wchar_t *, size_t);
extern wchar_t *wcpcpy(wchar_t *_RESTRICT_KYWD, const wchar_t *_RESTRICT_KYWD);
extern wchar_t *wcpncpy(wchar_t *_RESTRICT_KYWD, const wchar_t *_RESTRICT_KYWD,
size_t);
extern int wcscasecmp(const wchar_t *, const wchar_t *);
extern int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
! #endif
#else /* __STDC__ */
#if !defined(_STRICT_STDC) || defined(_XOPEN_SOURCE) || defined(__EXTENSIONS__)
extern int iswalpha();
extern int iswupper();
--- 166,199 ----
using std::wcwidth;
using std::wctype;
#endif
#endif /* !defined(_STRICT_STDC) || defined(_XOPEN_SOURCE)... */
! #if defined(_XPG7) || !defined(_STRICT_SYMBOLS)
!
! #ifndef _LOCALE_T
! #define _LOCALE_T
! typedef struct locale *locale_t;
! #endif
!
extern size_t wcsnlen(const wchar_t *, size_t);
extern wchar_t *wcpcpy(wchar_t *_RESTRICT_KYWD, const wchar_t *_RESTRICT_KYWD);
extern wchar_t *wcpncpy(wchar_t *_RESTRICT_KYWD, const wchar_t *_RESTRICT_KYWD,
size_t);
+ extern size_t wcsxfrm_l(wchar_t *_RESTRICT_KYWD, const wchar_t *_RESTRICT_KYWD,
+ size_t, locale_t);
+ extern int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
+ extern wchar_t *wcsdup(const wchar_t *);
extern int wcscasecmp(const wchar_t *, const wchar_t *);
+ extern int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
extern int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
! extern int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
! extern size_t mbsnrtowcs(wchar_t *_RESTRICT_KYWD, const char **_RESTRICT_KYWD,
! size_t, size_t, mbstate_t *_RESTRICT_KYWD);
+ #endif /* defined(_XPG7) || !defined(_STRICT_SYMBOLS) */
+
#else /* __STDC__ */
#if !defined(_STRICT_STDC) || defined(_XOPEN_SOURCE) || defined(__EXTENSIONS__)
extern int iswalpha();
extern int iswupper();
*** 200,218 ****
extern int wcswidth();
extern int wcwidth();
extern wctype_t wctype();
#endif /* !defined(_STRICT_STDC) || defined(_XOPEN_SOURCE)... */
! #if defined(__EXTENSIONS__) || \
! (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX))
! /* || defined(_XPG7) */
! extern wchar_t *wcsdup();
extern size_t wcsnlen();
extern wchar_t *wcpcpy();
extern wchar_t *wcpncpy();
extern int wcscasecmp();
extern int wcsncasecmp();
#endif
#endif /* __STDC__ */
#ifdef __cplusplus
--- 213,234 ----
extern int wcswidth();
extern int wcwidth();
extern wctype_t wctype();
#endif /* !defined(_STRICT_STDC) || defined(_XOPEN_SOURCE)... */
! #if defined(_XGP7) || !defined(_STRICT_SYMBOLS)
extern size_t wcsnlen();
extern wchar_t *wcpcpy();
extern wchar_t *wcpncpy();
+ extern size_t wcsxfrm_l();
+ extern int wcscoll_l();
+ extern wchar_t *wcsdup();
extern int wcscasecmp();
+ extern int wcscasecmp_l();
extern int wcsncasecmp();
+ extern int wcsncasecmp_l();
+ extern size_t mbsnrtowcs();
#endif
#endif /* __STDC__ */
#ifdef __cplusplus