Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions options/posix/generic/posix_stdlib.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <wchar.h>
#include <sys/ioctl.h>
#include <sys/stat.h>

Expand Down Expand Up @@ -531,6 +532,41 @@ float strtof_l(const char *__restrict__ nptr, char **__restrict__ endptr, locale
return strtof(nptr, endptr);
}

long strtol_l(const char *__restrict__ nptr, char** __restrict__ endptr, int base, locale_t __loc) {
mlibc::infoLogger() << "mlibc: strtol_l ignores locale!" << frg::endlog;
return strtol(nptr, endptr, base);
}

long long strtoll_l(const char *__restrict __string, char **__restrict __end, int __base, locale_t __loc) {
mlibc::infoLogger() << "mlibc: strtoll_l ignores locale!" << frg::endlog;
return strtoll(__string, __end, __base);
}

unsigned long long strtoull_l(const char *__restrict __string, char **__restrict __end, int __base, locale_t __loc) {
mlibc::infoLogger() << "mlibc: strtoull_l ignores locale!" << frg::endlog;
return strtoull(__string, __end, __base);
}

size_t strxfrm_l(char *__restrict __dest, const char *__restrict __src, size_t __max_size, locale_t __loc) {
mlibc::infoLogger() << "mlibc: strxfrm_l ignores locale!" << frg::endlog;
return strxfrm(__dest, __src, __max_size);
}

int wcscoll_l(const wchar_t *__a, const wchar_t *__b, locale_t __loc) {
mlibc::infoLogger() << "mlibc: wcscoll_l ignores locale!" << frg::endlog;
return wcscoll(__a, __b);
}

int wcsxfrm_l(wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __size, locale_t __loc) {
mlibc::infoLogger() << "mlibc: wcsxfrm_l ignores locale!" << frg::endlog;
return wcsxfrm(__dest, __src, __size);
}

size_t strftime_l(char *__restrict __dest, size_t __max_size, const char *__restrict __format, const struct tm *__restrict __ptr, locale_t __loc) {
mlibc::infoLogger() << "mlibc: strftime_l ignores locale!" << frg::endlog;
return strftime(__dest, __max_size, __format, __ptr);
}

int strcoll_l(const char *, const char *, locale_t) {
__ensure(!"Not implemented");
__builtin_unreachable();
Expand Down
7 changes: 7 additions & 0 deletions options/posix/include/bits/posix/posix_stdlib.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@ int ptsname_r(int __fd, char *__buf, size_t __len);
double strtod_l(const char *__restrict__ __nptr, char ** __restrict__ __endptr, locale_t __loc);
long double strtold_l(const char *__restrict__ __nptr, char ** __restrict__ __endptr, locale_t __loc);
float strtof_l(const char *__restrict __string, char **__restrict __end, locale_t __loc);
long strtol_l(const char *__restrict__ nptr, char** __restrict__ endptr, int base, locale_t __loc);
long long strtoll_l(const char *__restrict __string, char **__restrict __end, int __base, locale_t __loc);
unsigned long long strtoull_l(const char *__restrict __string, char **__restrict __end, int __base, locale_t __loc);
size_t strxfrm_l(char *__restrict __dest, const char *__restrict __src, size_t __max_size, locale_t __loc);
int wcscoll_l(const wchar_t *__a, const wchar_t *__b, locale_t __loc);
int wcsxfrm_l(wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __size, locale_t __loc);
size_t strftime_l(char *__restrict __dest, size_t __max_size, const char *__restrict __format, const struct tm *__restrict __ptr, locale_t __loc);

int getsubopt(char **__restrict__ __optionp, char *const *__restrict__ __tokens, char **__restrict__ __valuep);

Expand Down
Loading