xref: /openbsd-src/gnu/llvm/libcxx/src/support/solaris/xlocale.cpp (revision 76d0caaeb19ae0808d90af1d0b3b7b50b3e5383f)
146035553Spatrick //===----------------------------------------------------------------------===//
246035553Spatrick //
346035553Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
446035553Spatrick // See https://llvm.org/LICENSE.txt for license information.
546035553Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
646035553Spatrick //
746035553Spatrick //===----------------------------------------------------------------------===//
846035553Spatrick 
946035553Spatrick #ifdef __sun__
1046035553Spatrick 
11*76d0caaeSpatrick #include "__support/solaris/xlocale.h"
1246035553Spatrick #include <stdarg.h>
1346035553Spatrick #include <stdio.h>
1446035553Spatrick #include <sys/localedef.h>
1546035553Spatrick 
1646035553Spatrick extern "C" {
1746035553Spatrick 
isxdigit_l(int __c,locale_t __l)1846035553Spatrick int isxdigit_l(int __c, locale_t __l) {
1946035553Spatrick     return isxdigit(__c);
2046035553Spatrick }
2146035553Spatrick 
iswxdigit_l(wint_t __c,locale_t __l)2246035553Spatrick int iswxdigit_l(wint_t __c, locale_t __l) {
2346035553Spatrick     return isxdigit(__c);
2446035553Spatrick }
2546035553Spatrick 
2646035553Spatrick // FIXME: This disregards the locale, which is Very Wrong
2746035553Spatrick #define vsnprintf_l(__s, __n, __l, __format, __va)  \
2846035553Spatrick     vsnprintf(__s, __n, __format, __va)
2946035553Spatrick 
snprintf_l(char * __s,size_t __n,locale_t __l,const char * __format,...)3046035553Spatrick int snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...)
3146035553Spatrick {
3246035553Spatrick   va_list __va;
3346035553Spatrick   va_start(__va, __format);
3446035553Spatrick   int __res = vsnprintf_l(__s, __n , __l, __format, __va);
3546035553Spatrick   va_end(__va);
3646035553Spatrick   return __res;
3746035553Spatrick }
3846035553Spatrick 
asprintf_l(char ** __s,locale_t __l,const char * __format,...)3946035553Spatrick int asprintf_l(char **__s, locale_t __l, const char *__format, ...) {
4046035553Spatrick   va_list __va;
4146035553Spatrick   va_start(__va, __format);
4246035553Spatrick   // FIXME:
4346035553Spatrick   int __res = vasprintf(__s, __format, __va);
4446035553Spatrick   va_end(__va);
4546035553Spatrick   return __res;
4646035553Spatrick }
4746035553Spatrick 
sscanf_l(const char * __s,locale_t __l,const char * __format,...)4846035553Spatrick int sscanf_l(const char *__s, locale_t __l, const char *__format, ...) {
4946035553Spatrick   va_list __va;
5046035553Spatrick   va_start(__va, __format);
5146035553Spatrick   // FIXME:
5246035553Spatrick   int __res = vsscanf(__s, __format, __va);
5346035553Spatrick   va_end(__va);
5446035553Spatrick   return __res;
5546035553Spatrick }
5646035553Spatrick 
mbrtowc_l(wchar_t * __pwc,const char * __pmb,size_t __max,mbstate_t * __ps,locale_t __loc)5746035553Spatrick size_t mbrtowc_l(wchar_t *__pwc, const char *__pmb,
5846035553Spatrick                  size_t __max, mbstate_t *__ps, locale_t __loc) {
5946035553Spatrick   return mbrtowc(__pwc, __pmb, __max, __ps);
6046035553Spatrick }
6146035553Spatrick 
localeconv_l(locale_t __l)6246035553Spatrick struct lconv *localeconv_l(locale_t __l) {
6346035553Spatrick   return localeconv();
6446035553Spatrick }
6546035553Spatrick 
6646035553Spatrick };
6746035553Spatrick 
6846035553Spatrick #endif // __sun__
69