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