diff options
| author | Jakob Kaivo <jkk@ung.org> | 2019-02-08 18:42:39 -0500 |
|---|---|---|
| committer | Jakob Kaivo <jkk@ung.org> | 2019-02-08 18:42:39 -0500 |
| commit | 7ef8a7379f7f7d09e71ccae2a0b688c3cd80423f (patch) | |
| tree | 092ab0aed1769117fd7b28b8592f6f96b0e0d5af /src/nonstd/__libc.c | |
| parent | 6acf19370e8adff79cd83b257d3f04aeaf2a59dd (diff) | |
merge sources into single tree
Diffstat (limited to 'src/nonstd/__libc.c')
| -rw-r--r-- | src/nonstd/__libc.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/nonstd/__libc.c b/src/nonstd/__libc.c new file mode 100644 index 00000000..2d246203 --- /dev/null +++ b/src/nonstd/__libc.c @@ -0,0 +1,44 @@ +#include <nonstd/internal.h> +#include "locale.h" +#include "nonstd/locale.h" + +#include "_printf.h" +#include "_syscall.h" + +void *__libc(LIBC_INTERNAL variable) +{ + extern void *__libc_per_thread(LIBC_INTERNAL __variable); + + void *r = (void*)0; + + static struct __locale_t locale; + + switch (variable) { + case ERRNO: + return __libc_per_thread(ERRNO); + + case THREAD_LOCALE: + r = __libc_per_thread(THREAD_LOCALE); + if (r) { + break; + } + /* fallthru */ + + case GLOBAL_LOCALE: + r = &locale; + break; + + case SYSCALL_LOOKUP: + r = (void*)__syscall_lookup; + break; + + case PRINTF: + r = (void*)(__printf); + break; + + default: + break; + } + + return r; +} |
