summaryrefslogtreecommitdiff
path: root/lib/libc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/assert/Kbuild1
-rw-r--r--lib/libc/ctype/Kbuild14
-rw-r--r--lib/libc/ctype/isalnum.c2
-rw-r--r--lib/libc/ctype/ispunct.c2
-rw-r--r--lib/libc/ctype/tolower.c2
-rw-r--r--lib/libc/ctype/toupper.c2
-rw-r--r--lib/libc/devctl/Kbuild1
-rw-r--r--lib/libc/devctl/posix_devctl.c2
-rw-r--r--lib/libc/dirent/Kbuild6
-rw-r--r--lib/libc/dirent/readdir_r.c14
-rw-r--r--lib/libc/endian/Kbuild12
-rw-r--r--lib/libc/errno/Kbuild1
-rw-r--r--lib/libc/fcntl/Kbuild6
-rw-r--r--lib/libc/grp/Kbuild2
-rw-r--r--lib/libc/include/__locale.h41
-rw-r--r--lib/libc/include/features.h2
-rw-r--r--lib/libc/include/io.h19
-rw-r--r--lib/libc/include/libc.h6
-rw-r--r--lib/libc/inttypes/Kbuild4
-rw-r--r--lib/libc/libc.abin0 -> 1152260 bytes
-rw-r--r--lib/libc/libgen/Kbuild2
-rw-r--r--lib/libc/mman/Kbuild9
-rw-r--r--lib/libc/monetary/strfmon.c131
-rw-r--r--lib/libc/msg/Kbuild1
-rw-r--r--lib/libc/poll/Kbuild2
-rw-r--r--lib/libc/pwd/Kbuild2
-rw-r--r--lib/libc/select/Kbuild2
-rw-r--r--lib/libc/sem/Kbuild3
-rw-r--r--lib/libc/setjmp/Kbuild1
-rw-r--r--lib/libc/signal/Kbuild21
-rw-r--r--lib/libc/signal/pthread_sigmask.c1
-rw-r--r--lib/libc/socket/Kbuild19
-rw-r--r--lib/libc/socket/listen.c2
-rw-r--r--lib/libc/stat/Kbuild16
-rw-r--r--lib/libc/stat/fstatat.c10
-rw-r--r--lib/libc/statvfs/Kbuild2
-rw-r--r--lib/libc/stdio/Kbuild48
-rw-r--r--lib/libc/stdio/dtoa.c11
-rw-r--r--lib/libc/stdio/fdopen.c2
-rw-r--r--lib/libc/stdio/fflush.c1
-rw-r--r--lib/libc/stdio/fmemopen.c2
-rw-r--r--lib/libc/stdio/fopen.c2
-rw-r--r--lib/libc/stdio/fprintf.c2
-rw-r--r--lib/libc/stdio/stdin.c2
-rw-r--r--lib/libc/stdio/stdout.c2
-rw-r--r--lib/libc/stdio/vfprintf.c5
-rw-r--r--lib/libc/stdio/vsnprintf.c1
-rw-r--r--lib/libc/stdlib/malloc.c2
-rw-r--r--lib/libc/string/Kbuild32
-rw-r--r--lib/libc/string/memcpy.c2
-rw-r--r--lib/libc/string/strcoll.c2
-rw-r--r--lib/libc/string/strerror.c2
-rw-r--r--lib/libc/string/strxfrm.c4
-rw-r--r--lib/libc/strings/Kbuild5
-rw-r--r--lib/libc/strings/ffs.c4
-rw-r--r--lib/libc/strings/ffsl.c12
-rw-r--r--lib/libc/strings/strcasecmp.c3
-rw-r--r--lib/libc/strings/strncasecmp.c4
-rw-r--r--lib/libc/sys/Kbuild4
-rw-r--r--lib/libc/syslog/Kbuild4
-rw-r--r--lib/libc/syslog/openlog.c1
-rw-r--r--lib/libc/syslog/setlogmask.c1
-rw-r--r--lib/libc/syslog/syslog.c2
-rw-r--r--lib/libc/time/strftime.c4
-rw-r--r--lib/libc/uio/Kbuild2
-rw-r--r--lib/libc/unistd/Kbuild77
-rw-r--r--lib/libc/unistd/execlp.c6
-rw-r--r--lib/libc/unistd/execvp.c3
-rw-r--r--lib/libc/unistd/getentropy.c2
-rw-r--r--lib/libc/unistd/gethostname.c2
-rw-r--r--lib/libc/unistd/getlogin_r.c2
-rw-r--r--lib/libc/unistd/lockf.c3
-rw-r--r--lib/libc/unistd/nice.c1
-rw-r--r--lib/libc/unistd/posix_close.c2
-rw-r--r--lib/libc/utsname/Kbuild1
-rw-r--r--lib/libc/wait/Kbuild3
-rw-r--r--lib/libc/wchar/wctob.c16
-rw-r--r--lib/libc/wctype/iswalnum.c12
-rw-r--r--lib/libc/wctype/iswalpha.c22
-rw-r--r--lib/libc/wctype/iswblank.c13
-rw-r--r--lib/libc/wctype/iswdigit.c12
-rw-r--r--lib/libc/wctype/iswgraph.c12
-rw-r--r--lib/libc/wctype/iswlower.c12
-rw-r--r--lib/libc/wctype/iswprint.c14
-rw-r--r--lib/libc/wctype/iswpunct.c327
-rw-r--r--lib/libc/wctype/iswspace.c20
-rw-r--r--lib/libc/wctype/iswupper.c12
-rw-r--r--lib/libc/wctype/iswxdigit.c12
-rw-r--r--lib/libc/wctype/towctrans.c348
-rw-r--r--lib/libc/wctype/wctype.c32
90 files changed, 383 insertions, 1114 deletions
diff --git a/lib/libc/assert/Kbuild b/lib/libc/assert/Kbuild
new file mode 100644
index 00000000..98ba0577
--- /dev/null
+++ b/lib/libc/assert/Kbuild
@@ -0,0 +1 @@
+obj-y += assert.o
diff --git a/lib/libc/ctype/Kbuild b/lib/libc/ctype/Kbuild
new file mode 100644
index 00000000..6022400b
--- /dev/null
+++ b/lib/libc/ctype/Kbuild
@@ -0,0 +1,14 @@
+obj-y += isalnum.o
+obj-y += isalpha.o
+obj-y += isblank.o
+obj-y += iscntrl.o
+obj-y += isdigit.o
+obj-y += isgraph.o
+obj-y += islower.o
+obj-y += isprint.o
+obj-y += ispunct.o
+obj-y += isspace.o
+obj-y += isupper.o
+obj-y += isxdigit.o
+obj-y += tolower.o
+obj-y += toupper.o
diff --git a/lib/libc/ctype/isalnum.c b/lib/libc/ctype/isalnum.c
index 04e94fc6..3384aa56 100644
--- a/lib/libc/ctype/isalnum.c
+++ b/lib/libc/ctype/isalnum.c
@@ -6,7 +6,7 @@ int isalnum(int c)
return isalpha(c) || isdigit(c);
}
-weak int isalnum_l(int c, locale_t unused locale)
+__weak int isalnum_l(int c, locale_t __unused locale)
{
return isalnum(c);
}
diff --git a/lib/libc/ctype/ispunct.c b/lib/libc/ctype/ispunct.c
index 2bd08c38..24627809 100644
--- a/lib/libc/ctype/ispunct.c
+++ b/lib/libc/ctype/ispunct.c
@@ -6,7 +6,7 @@ int ispunct(int c)
return isgraph(c) && !isalnum(c);
}
-weak int ispunct_l(int c, locale_t locale)
+__weak int ispunct_l(int c, locale_t __unused locale)
{
return ispunct(c);
}
diff --git a/lib/libc/ctype/tolower.c b/lib/libc/ctype/tolower.c
index abeab42a..aeb462d8 100644
--- a/lib/libc/ctype/tolower.c
+++ b/lib/libc/ctype/tolower.c
@@ -8,7 +8,7 @@ int tolower(int c)
return c;
}
-weak int tolower_l(int c, locale_t unused locale)
+__weak int tolower_l(int c, locale_t __unused locale)
{
return tolower(c);
}
diff --git a/lib/libc/ctype/toupper.c b/lib/libc/ctype/toupper.c
index e952acd9..934841fa 100644
--- a/lib/libc/ctype/toupper.c
+++ b/lib/libc/ctype/toupper.c
@@ -8,7 +8,7 @@ int toupper(int c)
return c;
}
-int toupper_l(int c, locale_t unused locale)
+int toupper_l(int c, locale_t __unused locale)
{
return toupper(c);
}
diff --git a/lib/libc/devctl/Kbuild b/lib/libc/devctl/Kbuild
new file mode 100644
index 00000000..922f854e
--- /dev/null
+++ b/lib/libc/devctl/Kbuild
@@ -0,0 +1 @@
+obj-y += posix_devctl.o
diff --git a/lib/libc/devctl/posix_devctl.c b/lib/libc/devctl/posix_devctl.c
index bc8e7331..b7c24d79 100644
--- a/lib/libc/devctl/posix_devctl.c
+++ b/lib/libc/devctl/posix_devctl.c
@@ -4,7 +4,7 @@
#include <syscall.h>
int posix_devctl(int fildes, int dcmd, void *restrict dev_data_ptr,
- size_t unused nbyte, int *restrict dev_info_ptr)
+ size_t __unused nbyte, int *restrict dev_info_ptr)
{
long r;
diff --git a/lib/libc/dirent/Kbuild b/lib/libc/dirent/Kbuild
new file mode 100644
index 00000000..355b905c
--- /dev/null
+++ b/lib/libc/dirent/Kbuild
@@ -0,0 +1,6 @@
+obj-y += closedir.o
+obj-y += dirfd.o
+obj-y += fdopendir.o
+obj-y += opendir.o
+obj-y += readdir_r.o
+obj-y += readdir.o
diff --git a/lib/libc/dirent/readdir_r.c b/lib/libc/dirent/readdir_r.c
index 9d8bf49b..98b12426 100644
--- a/lib/libc/dirent/readdir_r.c
+++ b/lib/libc/dirent/readdir_r.c
@@ -29,9 +29,9 @@ int readdir_r(DIR *restrict dirp, struct dirent *restrict entry,
ldir = (void *)(dirp->buffer + dirp->offset);
/* Validate buffer bounds */
- if (dirp->offset >= sizeof(dirp->buffer) ||
- dirp->offset + sizeof(struct linux_dirent64) >
- sizeof(dirp->buffer)) {
+ if (dirp->offset >= (off_t)sizeof(dirp->buffer) ||
+ dirp->offset + (off_t)sizeof(struct linux_dirent64) >
+ (off_t)sizeof(dirp->buffer)) {
dirp->cached = 0;
*result = NULL;
return 0;
@@ -40,7 +40,8 @@ int readdir_r(DIR *restrict dirp, struct dirent *restrict entry,
/* Validate record length */
if (ldir->d_reclen <
offsetof(struct linux_dirent64, d_name) + 1 ||
- dirp->offset + ldir->d_reclen > sizeof(dirp->buffer) ||
+ dirp->offset + (off_t)ldir->d_reclen >
+ (off_t)sizeof(dirp->buffer) ||
ldir->d_reclen == 0) {
dirp->cached = 0;
*result = NULL;
@@ -90,7 +91,7 @@ int readdir_r(DIR *restrict dirp, struct dirent *restrict entry,
nread = ret;
/* Validate first entry bounds */
- if (nread < sizeof(struct linux_dirent64) ||
+ if (nread < (ssize_t)sizeof(struct linux_dirent64) ||
ldir->d_reclen < offsetof(struct linux_dirent64, d_name) + 1 ||
ldir->d_reclen > nread || ldir->d_reclen == 0) {
*result = NULL;
@@ -124,7 +125,8 @@ int readdir_r(DIR *restrict dirp, struct dirent *restrict entry,
(void *)(dirp->buffer + buffer_offset);
/* Validate entry bounds to prevent infinite loops */
- if (buffer_offset + sizeof(struct linux_dirent64) > nread ||
+ if (buffer_offset + (ssize_t)sizeof(struct linux_dirent64) >
+ nread ||
next_ldir->d_reclen <
offsetof(struct linux_dirent64, d_name) + 1 ||
buffer_offset + next_ldir->d_reclen > nread ||
diff --git a/lib/libc/endian/Kbuild b/lib/libc/endian/Kbuild
new file mode 100644
index 00000000..3fc2c4f1
--- /dev/null
+++ b/lib/libc/endian/Kbuild
@@ -0,0 +1,12 @@
+obj-y += be16toh.o
+obj-y += be32toh.o
+obj-y += be64toh.o
+obj-y += htobe16.o
+obj-y += htobe32.o
+obj-y += htobe64.o
+obj-y += htole16.o
+obj-y += htole32.o
+obj-y += htole64.o
+obj-y += le16toh.o
+obj-y += le32toh.o
+obj-y += le64toh.o
diff --git a/lib/libc/errno/Kbuild b/lib/libc/errno/Kbuild
new file mode 100644
index 00000000..c9db6e67
--- /dev/null
+++ b/lib/libc/errno/Kbuild
@@ -0,0 +1 @@
+obj-y += errno.o
diff --git a/lib/libc/fcntl/Kbuild b/lib/libc/fcntl/Kbuild
new file mode 100644
index 00000000..04f1783c
--- /dev/null
+++ b/lib/libc/fcntl/Kbuild
@@ -0,0 +1,6 @@
+obj-y += creat.o
+obj-y += fcntl.o
+obj-y += open.o
+obj-y += openat.o
+obj-y += posix_fadvise.o
+obj-y += posix_fallocate.o
diff --git a/lib/libc/grp/Kbuild b/lib/libc/grp/Kbuild
new file mode 100644
index 00000000..698f244a
--- /dev/null
+++ b/lib/libc/grp/Kbuild
@@ -0,0 +1,2 @@
+obj-y += getgrgid_r.o
+obj-y += getgrgid.o
diff --git a/lib/libc/include/__locale.h b/lib/libc/include/__locale.h
deleted file mode 100644
index 0a709c78..00000000
--- a/lib/libc/include/__locale.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef __LIBC_LOCALE_H
-#define __LIBC_LOCALE_H
-
-#include <locale.h>
-#include <stdint.h>
-
-typedef __SIZE_TYPE__ size_t;
-
-struct __locale_t {
- struct __locale_map {
- const void *map;
- size_t map_size;
- char name[24];
- } maps[6];
-};
-
-typedef struct __locale_t *locale_t;
-
-static const struct __locale_t __c_locale = { 0 };
-
-static const struct __locale_t __utf8_locale = {
- .maps[LC_CTYPE] = { .map = &((const uint32_t[]){ 0x950412de, 0, -1, -1,
- -1 }),
- .map_size = sizeof(uint32_t) * 5,
- .name = "C.UTF-8" },
-};
-
-#undef MB_CUR_MAX
-#define MB_CUR_MAX (((locale_t) & __utf8_locale) ? 4 : 1)
-
-static inline int __mb_cur_max(void)
-{
- return MB_CUR_MAX;
-}
-
-static inline int __locale_allocated(locale_t loc)
-{
- return loc != (locale_t)&__c_locale && loc != (locale_t)&__utf8_locale;
-}
-
-#endif
diff --git a/lib/libc/include/features.h b/lib/libc/include/features.h
index 62472259..8f7fa940 100644
--- a/lib/libc/include/features.h
+++ b/lib/libc/include/features.h
@@ -1,6 +1,6 @@
#ifndef __LIBC_FEATURES_H
#define __LIBC_FEATURES_H
-#define weak extern __attribute__((weak))
+#define __weak extern __attribute__((weak))
#endif
diff --git a/lib/libc/include/io.h b/lib/libc/include/io.h
index 675a3cc3..ebda4b22 100644
--- a/lib/libc/include/io.h
+++ b/lib/libc/include/io.h
@@ -14,25 +14,6 @@ typedef __SIZE_TYPE__ size_t;
#define _IO_EOF 0x8
#define _IO_WIDE 0x10
-/* Buffering modes */
-#define _IOFBF 0 /* Full buffering */
-#define _IOLBF 1 /* Line buffering */
-#define _IONBF 2 /* No buffering */
-
-/* File access modes */
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#define O_WRONLY 1
-#define O_RDWR 2
-#define O_ACCMODE 3
-#endif
-
-/* Atomic operations for threading */
-#define LIBC_LOCK(x) \
- while (atomic_flag_test_and_set(&(x))) { \
- }
-#define LIBC_UNLOCK(x) atomic_flag_clear(&(x))
-
struct __FILE {
int fd;
uint32_t flags;
diff --git a/lib/libc/include/libc.h b/lib/libc/include/libc.h
index 3f5f2644..d59c2b3c 100644
--- a/lib/libc/include/libc.h
+++ b/lib/libc/include/libc.h
@@ -1,14 +1,13 @@
#ifndef __LIBC_LIBC_H
#define __LIBC_LIBC_H
-#include <__locale.h>
#include <stdatomic.h>
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
-#define unused __attribute__((unused))
+#define __unused __attribute__((unused))
#define aligned(type) __attribute__((aligned(__alignof__(type))))
-#define weak __attribute__((__weak__))
+#define __weak __attribute__((__weak__))
#define weak_reference(old, new) \
extern __typeof(old) new __attribute__((__weak__, __alias__(#old)))
@@ -21,7 +20,6 @@ static struct {
volatile atomic_flag malloc;
volatile atomic_flag environ;
} lock;
- struct __locale_t locale;
} libc = { .lock = { ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT } };
#endif
diff --git a/lib/libc/inttypes/Kbuild b/lib/libc/inttypes/Kbuild
new file mode 100644
index 00000000..6a44475c
--- /dev/null
+++ b/lib/libc/inttypes/Kbuild
@@ -0,0 +1,4 @@
+obj-y += imaxabs.o
+obj-y += imaxdiv.o
+obj-y += strtoimax.o
+obj-y += strtoumax.o
diff --git a/lib/libc/libc.a b/lib/libc/libc.a
new file mode 100644
index 00000000..4f874074
--- /dev/null
+++ b/lib/libc/libc.a
Binary files differ
diff --git a/lib/libc/libgen/Kbuild b/lib/libc/libgen/Kbuild
new file mode 100644
index 00000000..8143f22a
--- /dev/null
+++ b/lib/libc/libgen/Kbuild
@@ -0,0 +1,2 @@
+obj-y += basename.o
+obj-y += dirname.o
diff --git a/lib/libc/mman/Kbuild b/lib/libc/mman/Kbuild
new file mode 100644
index 00000000..b235d6c9
--- /dev/null
+++ b/lib/libc/mman/Kbuild
@@ -0,0 +1,9 @@
+obj-y += mlock.o
+obj-y += mlockall.o
+obj-y += mmap.o
+obj-y += mprotect.o
+obj-y += msync.o
+obj-y += munlock.o
+obj-y += munlockall.o
+obj-y += munmap.o
+obj-y += posix_madvise.o
diff --git a/lib/libc/monetary/strfmon.c b/lib/libc/monetary/strfmon.c
deleted file mode 100644
index 8ba0d48d..00000000
--- a/lib/libc/monetary/strfmon.c
+++ /dev/null
@@ -1,131 +0,0 @@
-// Orginal source:
-// https://git.musl-libc.org/cgit/musl/tree/src/monetary/strfmon.c
-//
-// ----------------------------------------------------------------------
-// Copyright © 2005-2020 Rich Felker, et al.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-// ----------------------------------------------------------------------
-
-#include <libc.h>
-#include <ctype.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <monetary.h>
-
-static ssize_t vstrfmon_l(char *s, size_t n, const char *fmt, va_list ap)
-{
- size_t l;
- double x;
- int fill, nogrp, negpar, nosym, left, intl;
- int lp, rp, w, fw;
- char *s0 = s;
- for (; n && *fmt;) {
- if (*fmt != '%') {
-literal:
- *s++ = *fmt++;
- n--;
- continue;
- }
- fmt++;
- if (*fmt == '%')
- goto literal;
-
- fill = ' ';
- nogrp = 0;
- negpar = 0;
- nosym = 0;
- left = 0;
- for (;; fmt++) {
- switch (*fmt) {
- case '=':
- fill = *++fmt;
- continue;
- case '^':
- nogrp = 1;
- continue;
- case '(':
- negpar = 1;
- case '+':
- continue;
- case '!':
- nosym = 1;
- continue;
- case '-':
- left = 1;
- continue;
- }
- break;
- }
-
- for (fw = 0; isdigit(*fmt); fmt++)
- fw = 10 * fw + (*fmt - '0');
- lp = 0;
- rp = 2;
- if (*fmt == '#')
- for (lp = 0, fmt++; isdigit(*fmt); fmt++)
- lp = 10 * lp + (*fmt - '0');
- if (*fmt == '.')
- for (rp = 0, fmt++; isdigit(*fmt); fmt++)
- rp = 10 * rp + (*fmt - '0');
-
- intl = *fmt++ == 'i';
-
- w = lp + 1 + rp;
- if (!left && fw > w)
- w = fw;
-
- x = va_arg(ap, double);
- l = snprintf(s, n, "%*.*f", w, rp, x);
- if (l >= n) {
- errno = E2BIG;
- return -1;
- }
- s += l;
- n -= l;
- }
- return s - s0;
-}
-
-ssize_t strfmon(char *restrict s, size_t n, const char *restrict fmt, ...)
-{
- va_list ap;
- ssize_t ret;
-
- va_start(ap, fmt);
- ret = vstrfmon_l(s, n, fmt, ap);
- va_end(ap);
-
- return ret;
-}
-
-weak ssize_t strfmon_l(char *restrict s, size_t n, locale_t unused loc,
- const char *restrict fmt, ...)
-{
- va_list ap;
- ssize_t ret;
-
- va_start(ap, fmt);
- ret = vstrfmon_l(s, n, fmt, ap);
- va_end(ap);
-
- return ret;
-}
diff --git a/lib/libc/msg/Kbuild b/lib/libc/msg/Kbuild
new file mode 100644
index 00000000..34479132
--- /dev/null
+++ b/lib/libc/msg/Kbuild
@@ -0,0 +1 @@
+obj-y += msgctl.o
diff --git a/lib/libc/poll/Kbuild b/lib/libc/poll/Kbuild
new file mode 100644
index 00000000..638ab428
--- /dev/null
+++ b/lib/libc/poll/Kbuild
@@ -0,0 +1,2 @@
+obj-y += poll.o
+obj-y += ppoll.o
diff --git a/lib/libc/pwd/Kbuild b/lib/libc/pwd/Kbuild
new file mode 100644
index 00000000..698f244a
--- /dev/null
+++ b/lib/libc/pwd/Kbuild
@@ -0,0 +1,2 @@
+obj-y += getgrgid_r.o
+obj-y += getgrgid.o
diff --git a/lib/libc/select/Kbuild b/lib/libc/select/Kbuild
new file mode 100644
index 00000000..0a4fbb56
--- /dev/null
+++ b/lib/libc/select/Kbuild
@@ -0,0 +1,2 @@
+obj-y += pselect.o
+obj-y += select.o
diff --git a/lib/libc/sem/Kbuild b/lib/libc/sem/Kbuild
new file mode 100644
index 00000000..c0002aa8
--- /dev/null
+++ b/lib/libc/sem/Kbuild
@@ -0,0 +1,3 @@
+obj-y += semctl.o
+obj-y += semget.o
+obj-y += semop.o
diff --git a/lib/libc/setjmp/Kbuild b/lib/libc/setjmp/Kbuild
new file mode 100644
index 00000000..0e6f1418
--- /dev/null
+++ b/lib/libc/setjmp/Kbuild
@@ -0,0 +1 @@
+obj-y += siglongjmp.o
diff --git a/lib/libc/signal/Kbuild b/lib/libc/signal/Kbuild
new file mode 100644
index 00000000..b8881c92
--- /dev/null
+++ b/lib/libc/signal/Kbuild
@@ -0,0 +1,21 @@
+obj-y += kill.o
+obj-y += killpg.o
+obj-y += psiginfo.o
+obj-y += psignal.o
+obj-y += pthread_kill.o
+obj-y += pthread_sigmask.o
+obj-y += raise.o
+obj-y += sig2str.o
+obj-y += sigaction.o
+obj-y += sigaddset.o
+obj-y += sigemptyset.o
+obj-y += sigismember.o
+obj-y += signal.o
+obj-y += sigpending.o
+obj-y += sigprocmask.o
+obj-y += sigqueue.o
+obj-y += sigsuspend.o
+obj-y += sigtimedwait.o
+obj-y += sigwait.o
+obj-y += sigwaitinfo.o
+obj-y += str2sig.o
diff --git a/lib/libc/signal/pthread_sigmask.c b/lib/libc/signal/pthread_sigmask.c
index 1b83e1fe..4fcc278f 100644
--- a/lib/libc/signal/pthread_sigmask.c
+++ b/lib/libc/signal/pthread_sigmask.c
@@ -1,6 +1,7 @@
#include <errno.h>
#include <asm-generic/signal.h>
#include <libc.h>
+#include <stddef.h>
int sigdelset(sigset_t *, int);
int sigismember(const sigset_t *, int);
diff --git a/lib/libc/socket/Kbuild b/lib/libc/socket/Kbuild
new file mode 100644
index 00000000..18a25e8a
--- /dev/null
+++ b/lib/libc/socket/Kbuild
@@ -0,0 +1,19 @@
+obj-y += accept.o
+obj-y += accept4.o
+obj-y += bind.o
+obj-y += connect.o
+obj-y += getpeername.o
+obj-y += getsockname.o
+obj-y += getsockopt.o
+obj-y += listen.o
+obj-y += recv.o
+obj-y += recvfrom.o
+obj-y += recvmsg.o
+obj-y += send.o
+obj-y += sendmsg.o
+obj-y += sendto.o
+obj-y += setsockopt.o
+obj-y += shutdown.o
+obj-y += sockatmark.o
+obj-y += socket.o
+obj-y += socketpair.o
diff --git a/lib/libc/socket/listen.c b/lib/libc/socket/listen.c
index 3b107450..2866fe27 100644
--- a/lib/libc/socket/listen.c
+++ b/lib/libc/socket/listen.c
@@ -3,5 +3,5 @@
int listen(int socket, int backlog)
{
- return syscall(listen, backlog);
+ return syscall(listen, socket, backlog);
}
diff --git a/lib/libc/stat/Kbuild b/lib/libc/stat/Kbuild
new file mode 100644
index 00000000..edb6dbe0
--- /dev/null
+++ b/lib/libc/stat/Kbuild
@@ -0,0 +1,16 @@
+obj-y += chmod.o
+obj-y += fchmod.o
+obj-y += fchmodat.o
+obj-y += fstat.o
+obj-y += fstatat.o
+obj-y += futimens.o
+obj-y += lstat.o
+obj-y += mkdir.o
+obj-y += mkdirat.o
+obj-y += mkfifo.o
+obj-y += mkfifoat.o
+obj-y += mknod.o
+obj-y += mknodat.o
+obj-y += stat.o
+obj-y += umask.o
+obj-y += utimensat.o
diff --git a/lib/libc/stat/fstatat.c b/lib/libc/stat/fstatat.c
index 06b00163..d7aecbc5 100644
--- a/lib/libc/stat/fstatat.c
+++ b/lib/libc/stat/fstatat.c
@@ -1,7 +1,8 @@
-#include <sys/stat.h>
-#include <syscall.h>
-
#include <linux/stat.h>
+#define __BITS_STAT_H_
+#include <bits/stat.h>
+#undef __BITS_STAT_H_
+#include <syscall.h>
#define makedev(major, minor) \
((((major) & 0xfffff000ULL) << 32) | \
@@ -37,8 +38,7 @@ int fstatat(int fd, const char *restrict path, struct stat *restrict buf,
buf->st_blksize = stx.stx_blksize;
buf->st_blocks = stx.stx_blocks;
} else {
- ret = -1; // Indicate failure if STATX_BASIC_STATS is
- // not set
+ ret = -1;
}
}
diff --git a/lib/libc/statvfs/Kbuild b/lib/libc/statvfs/Kbuild
new file mode 100644
index 00000000..e57d3f75
--- /dev/null
+++ b/lib/libc/statvfs/Kbuild
@@ -0,0 +1,2 @@
+obj-y += fstatvfs.o
+obj-y += statvfs.o
diff --git a/lib/libc/stdio/Kbuild b/lib/libc/stdio/Kbuild
new file mode 100644
index 00000000..36339313
--- /dev/null
+++ b/lib/libc/stdio/Kbuild
@@ -0,0 +1,48 @@
+obj-y += asprintf.o
+obj-y += clearerr.o
+obj-y += dprintf.o
+obj-y += dtoa.o
+obj-y += fclose.o
+obj-y += fdopen.o
+obj-y += feof.o
+obj-y += ferror.o
+obj-y += fflush.o
+obj-y += fgetc.o
+obj-y += fgets.o
+obj-y += fileno.o
+obj-y += fmemopen.o
+obj-y += fopen.o
+obj-y += fprintf.o
+obj-y += fputc.o
+obj-y += fputs.o
+obj-y += fread.o
+obj-y += fseek.o
+obj-y += ftell.o
+obj-y += ftello.o
+obj-y += fwrite.o
+obj-y += getc.o
+obj-y += getchar.o
+obj-y += pclose.o
+obj-y += perror.o
+obj-y += popen.o
+obj-y += printf.o
+obj-y += putc.o
+obj-y += putchar.o
+obj-y += puts.o
+obj-y += remove.o
+obj-y += rename.o
+obj-y += renameat.o
+obj-y += rewind.o
+obj-y += setbuf.o
+obj-y += setvbuf.o
+obj-y += snprintf.o
+obj-y += sprintf.o
+obj-y += stderr.o
+obj-y += stdin.o
+obj-y += stdout.o
+obj-y += vasprintf.o
+obj-y += vdprintf.o
+obj-y += vfprintf.o
+obj-y += vprintf.o
+obj-y += vsnprintf.o
+obj-y += vsprintf.o
diff --git a/lib/libc/stdio/dtoa.c b/lib/libc/stdio/dtoa.c
index 9417fa8e..9b0eea99 100644
--- a/lib/libc/stdio/dtoa.c
+++ b/lib/libc/stdio/dtoa.c
@@ -1598,7 +1598,9 @@ static Bigint *Balloc(int k MTd)
len = (sizeof(Bigint) + (x - 1) * sizeof(ULong) +
sizeof(double) - 1) /
sizeof(double);
- if (k <= Kmax && pmem_next - private_mem + len <= PRIVATE_mem
+ if (k <= Kmax &&
+ (long)(pmem_next - private_mem) + (long)len <=
+ (long)PRIVATE_mem
#ifdef MULTIPLE_THREADS
&& TI == TI1
#endif
@@ -4891,7 +4893,8 @@ static char *rv_alloc(int i MTd)
int j, k, *r;
j = sizeof(ULong);
- for (k = 0; sizeof(Bigint) - sizeof(ULong) - sizeof(int) + j <= i;
+ for (k = 0;
+ sizeof(Bigint) - sizeof(ULong) - sizeof(int) + j <= (size_t)i;
j <<= 1)
k++;
r = (int *)Balloc(k MTa);
@@ -4910,7 +4913,7 @@ static char *nrv_alloc(const char *s, char *s0, size_t s0len, char **rve,
if (!s0)
s0 = rv_alloc(n MTa);
- else if (s0len <= n) {
+ else if (s0len <= (size_t)n) {
rv = 0;
t = rv + n;
goto rve_chk;
@@ -5312,7 +5315,7 @@ char *dtoa_r(double dd, int mode, int ndigits, int *decpt, int *sign,
blen = sizeof(Bigint) +
((1 << ((int *)buf)[-1]) - 1) * sizeof(ULong) -
sizeof(int);
- } else if (blen <= i) {
+ } else if (blen <= (size_t)i) {
buf = 0;
if (rve)
*rve = buf + i;
diff --git a/lib/libc/stdio/fdopen.c b/lib/libc/stdio/fdopen.c
index f2ce0693..23f94843 100644
--- a/lib/libc/stdio/fdopen.c
+++ b/lib/libc/stdio/fdopen.c
@@ -3,7 +3,7 @@
#include <unistd.h>
#include <stdio.h>
-weak void __stdio_cleanup(void)
+__weak void __stdio_cleanup(void)
{
}
diff --git a/lib/libc/stdio/fflush.c b/lib/libc/stdio/fflush.c
index f9a2004d..9af9ca2d 100644
--- a/lib/libc/stdio/fflush.c
+++ b/lib/libc/stdio/fflush.c
@@ -4,6 +4,7 @@
#include <io.h>
#include <errno.h>
#include <string.h>
+#include <fcntl.h>
int fflush(FILE *stream)
{
diff --git a/lib/libc/stdio/fmemopen.c b/lib/libc/stdio/fmemopen.c
index 1ad86f7b..6830dcbe 100644
--- a/lib/libc/stdio/fmemopen.c
+++ b/lib/libc/stdio/fmemopen.c
@@ -6,7 +6,7 @@
#include <stdio.h>
#include <libc.h>
-weak void __stdio_cleanup(void)
+__weak void __stdio_cleanup(void)
{
}
diff --git a/lib/libc/stdio/fopen.c b/lib/libc/stdio/fopen.c
index 7d01fd38..1f15820b 100644
--- a/lib/libc/stdio/fopen.c
+++ b/lib/libc/stdio/fopen.c
@@ -7,7 +7,7 @@
#include <string.h>
#include <libc.h>
-weak void __stdio_cleanup(void)
+__weak void __stdio_cleanup(void)
{
}
diff --git a/lib/libc/stdio/fprintf.c b/lib/libc/stdio/fprintf.c
index 4283b424..c0d14a48 100644
--- a/lib/libc/stdio/fprintf.c
+++ b/lib/libc/stdio/fprintf.c
@@ -6,7 +6,7 @@ int fprintf(FILE *restrict stream, const char *restrict format, ...)
int r;
va_list ap;
va_start(ap, format);
- r = vfprintf(stdout, format, ap);
+ r = vfprintf(stream, format, ap);
va_end(ap);
return r;
}
diff --git a/lib/libc/stdio/stdin.c b/lib/libc/stdio/stdin.c
index bcc2eca6..329c9528 100644
--- a/lib/libc/stdio/stdin.c
+++ b/lib/libc/stdio/stdin.c
@@ -6,7 +6,7 @@
#define BUFSIZ 4096
#define _IOLBF 0x1
-weak char __stdin_buffer[0];
+__weak char __stdin_buffer[0];
struct __FILE __stdin = { .fd = STDOUT_FILENO,
.flags = O_RDONLY,
.buf = __stdin_buffer,
diff --git a/lib/libc/stdio/stdout.c b/lib/libc/stdio/stdout.c
index 7d55c3e7..3645e07d 100644
--- a/lib/libc/stdio/stdout.c
+++ b/lib/libc/stdio/stdout.c
@@ -6,7 +6,7 @@
#define BUFSIZ 4096
-weak char __stdout_buffer[0];
+__weak char __stdout_buffer[0];
static atomic_flag __stdio_lock = ATOMIC_FLAG_INIT;
struct __FILE __stdout = { .fd = STDOUT_FILENO,
.flags = O_WRONLY,
diff --git a/lib/libc/stdio/vfprintf.c b/lib/libc/stdio/vfprintf.c
index fb4c200e..495fb9ea 100644
--- a/lib/libc/stdio/vfprintf.c
+++ b/lib/libc/stdio/vfprintf.c
@@ -9,7 +9,6 @@
#include <stddef.h>
#include <math.h>
#include <unistd.h>
-#include <wchar.h>
extern char *dtoa(double, int mode, int ndigits, int *decpt, int *sign,
char **rve);
@@ -752,15 +751,12 @@ int vfprintf(FILE *restrict stream, const char *restrict format, va_list ap)
if ((flags & FLAG_MINUS) == 0) {
if (pad_char == '0' && s != NULL) {
- int prefix_len = 0;
-
if (s[0] == '-' || s[0] == '+' ||
s[0] == ' ') {
fwrite(s, 1, 1, stream);
total_printed++;
s++;
l--;
- prefix_len++;
}
if (l >= 2 && s[0] == '0' &&
@@ -769,7 +765,6 @@ int vfprintf(FILE *restrict stream, const char *restrict format, va_list ap)
total_printed += 2;
s += 2;
l -= 2;
- prefix_len += 2;
}
for (int i = 0; i < padding; i++) {
diff --git a/lib/libc/stdio/vsnprintf.c b/lib/libc/stdio/vsnprintf.c
index b7a59064..7afae866 100644
--- a/lib/libc/stdio/vsnprintf.c
+++ b/lib/libc/stdio/vsnprintf.c
@@ -3,6 +3,7 @@
#include <stdlib.h>
#include <string.h>
#include <stdatomic.h>
+#include <fcntl.h>
int vsnprintf(char *restrict s, size_t n, const char *restrict format,
va_list ap)
diff --git a/lib/libc/stdlib/malloc.c b/lib/libc/stdlib/malloc.c
index 3d29e6a8..555a45bc 100644
--- a/lib/libc/stdlib/malloc.c
+++ b/lib/libc/stdlib/malloc.c
@@ -28,7 +28,7 @@ static __inline uint32_t get_size_class(size_t size)
return (uint32_t)((most_significant_bit << 2) + subclass_bits) + 41;
}
-weak void *malloc(size_t size);
+__weak void *malloc(size_t size);
void *malloc(size_t size)
{
diff --git a/lib/libc/string/Kbuild b/lib/libc/string/Kbuild
new file mode 100644
index 00000000..6fec9c43
--- /dev/null
+++ b/lib/libc/string/Kbuild
@@ -0,0 +1,32 @@
+obj-y += memccpy.o
+obj-y += memchr.o
+obj-y += memcmp.o
+obj-y += memcpy.o
+obj-y += memmem.o
+obj-y += memmove.o
+obj-y += memset.o
+obj-y += stpcpy.o
+obj-y += stpncpy.o
+obj-y += strcat.o
+obj-y += strchr.o
+obj-y += strcmp.o
+obj-y += strcoll.o
+obj-y += strcpy.o
+obj-y += strcspn.o
+obj-y += strdup.o
+obj-y += strerror.o
+obj-y += strlcat.o
+obj-y += strlcpy.o
+obj-y += strlen.o
+obj-y += strncat.o
+obj-y += strncmp.o
+obj-y += strncpy.o
+obj-y += strndup.o
+obj-y += strnlen.o
+obj-y += strpbrk.o
+obj-y += strrchr.o
+obj-y += strspn.o
+obj-y += strstr.o
+obj-y += strtok_r.o
+obj-y += strtok.o
+obj-y += strxfrm.o
diff --git a/lib/libc/string/memcpy.c b/lib/libc/string/memcpy.c
index 505cc622..ecdbd602 100644
--- a/lib/libc/string/memcpy.c
+++ b/lib/libc/string/memcpy.c
@@ -1,7 +1,7 @@
#include <string.h>
#include <features.h>
-weak void *memcpy(void *restrict s1, const void *restrict s2, size_t n);
+__weak void *memcpy(void *restrict s1, const void *restrict s2, size_t n);
void *memcpy(void *restrict s1, const void *restrict s2, size_t n)
{
diff --git a/lib/libc/string/strcoll.c b/lib/libc/string/strcoll.c
index 6b2e532a..6efaa3d3 100644
--- a/lib/libc/string/strcoll.c
+++ b/lib/libc/string/strcoll.c
@@ -7,7 +7,7 @@ int strcoll(const char *s1, const char *s2)
return strcmp(s1, s2);
}
-weak int strcoll_l(const char *s1, const char *s2, locale_t unused locale)
+__weak int strcoll_l(const char *s1, const char *s2, locale_t __unused locale)
{
return strcoll(s1, s2);
}
diff --git a/lib/libc/string/strerror.c b/lib/libc/string/strerror.c
index 1d5903cb..c091ac79 100644
--- a/lib/libc/string/strerror.c
+++ b/lib/libc/string/strerror.c
@@ -119,7 +119,7 @@ int strerror_r(int errnum, char *buf, size_t buflen)
return 0;
}
-weak char *strerror_l(int errnum, locale_t unused locale)
+__weak char *strerror_l(int errnum, locale_t __unused locale)
{
return strerror(errnum);
}
diff --git a/lib/libc/string/strxfrm.c b/lib/libc/string/strxfrm.c
index d62d0a96..123ebfe8 100644
--- a/lib/libc/string/strxfrm.c
+++ b/lib/libc/string/strxfrm.c
@@ -11,8 +11,8 @@ size_t strxfrm(char *restrict s1, const char *restrict s2, size_t n)
return len;
}
-weak size_t strxfrm_l(char *restrict s1, const char *restrict s2, size_t n,
- locale_t unused locale)
+__weak size_t strxfrm_l(char *restrict s1, const char *restrict s2, size_t n,
+ locale_t __unused locale)
{
return strxfrm(s1, s2, n);
}
diff --git a/lib/libc/strings/Kbuild b/lib/libc/strings/Kbuild
new file mode 100644
index 00000000..0f22da20
--- /dev/null
+++ b/lib/libc/strings/Kbuild
@@ -0,0 +1,5 @@
+obj-y += ffs.o
+obj-y += ffsl.o
+obj-y += ffsll.o
+obj-y += strcasecmp.o
+obj-y += strncasecmp.o
diff --git a/lib/libc/strings/ffs.c b/lib/libc/strings/ffs.c
index 3b836021..2c49cf4d 100644
--- a/lib/libc/strings/ffs.c
+++ b/lib/libc/strings/ffs.c
@@ -1,7 +1,8 @@
int ffs(int i)
{
- if (i == 0)
+ if (i == 0) {
return 0;
+ }
int pos = 1;
unsigned int u = (unsigned int)i;
@@ -10,5 +11,6 @@ int ffs(int i)
u >>= 1;
pos++;
}
+
return pos;
}
diff --git a/lib/libc/strings/ffsl.c b/lib/libc/strings/ffsl.c
index 2f2e7d44..c84a2905 100644
--- a/lib/libc/strings/ffsl.c
+++ b/lib/libc/strings/ffsl.c
@@ -1,14 +1,18 @@
int ffsl(long i)
{
- if (i == 0)
- return 0;
+ int pos;
+ unsigned long u;
- int pos = 1;
- unsigned long u = (unsigned long)i;
+ if (i == 0) {
+ return 0;
+ }
+ pos = 1;
+ u = (unsigned long)i;
while ((u & 1UL) == 0UL) {
u >>= 1;
pos++;
}
+
return pos;
}
diff --git a/lib/libc/strings/strcasecmp.c b/lib/libc/strings/strcasecmp.c
index 90ccc59b..e96f059a 100644
--- a/lib/libc/strings/strcasecmp.c
+++ b/lib/libc/strings/strcasecmp.c
@@ -18,7 +18,8 @@ int strcasecmp(const char *s1, const char *s2)
(unsigned char)tolower((unsigned char)*s2);
}
-weak int strcasecmp_l(const char *s1, const char *s2, locale_t unused locale)
+__weak int strcasecmp_l(const char *s1, const char *s2,
+ locale_t __unused locale)
{
return strcasecmp(s1, s2);
}
diff --git a/lib/libc/strings/strncasecmp.c b/lib/libc/strings/strncasecmp.c
index 679cf245..f2f4c22c 100644
--- a/lib/libc/strings/strncasecmp.c
+++ b/lib/libc/strings/strncasecmp.c
@@ -25,8 +25,8 @@ int strncasecmp(const char *s1, const char *s2, size_t n)
(unsigned char)tolower((unsigned char)*s2);
}
-weak int strncasecmp_l(const char *s1, const char *s2, size_t n,
- locale_t unused locale)
+__weak int strncasecmp_l(const char *s1, const char *s2, size_t n,
+ locale_t __unused locale)
{
return strncasecmp(s1, s2, n);
}
diff --git a/lib/libc/sys/Kbuild b/lib/libc/sys/Kbuild
new file mode 100644
index 00000000..eedb3527
--- /dev/null
+++ b/lib/libc/sys/Kbuild
@@ -0,0 +1,4 @@
+obj-y += ioctl.o
+obj-y += mount.o
+obj-y += umount.o
+obj-y += umount2.o
diff --git a/lib/libc/syslog/Kbuild b/lib/libc/syslog/Kbuild
new file mode 100644
index 00000000..23a1ce51
--- /dev/null
+++ b/lib/libc/syslog/Kbuild
@@ -0,0 +1,4 @@
+obj-y += closelog.o
+obj-y += openlog.o
+obj-y += setlogmask.o
+obj-y += syslog.o
diff --git a/lib/libc/syslog/openlog.c b/lib/libc/syslog/openlog.c
index 84c4797f..0abf8bb8 100644
--- a/lib/libc/syslog/openlog.c
+++ b/lib/libc/syslog/openlog.c
@@ -2,6 +2,7 @@
int setlogmask(int maskpri)
{
+ (void)maskpri;
// TODO
return 0;
}
diff --git a/lib/libc/syslog/setlogmask.c b/lib/libc/syslog/setlogmask.c
index 84c4797f..0abf8bb8 100644
--- a/lib/libc/syslog/setlogmask.c
+++ b/lib/libc/syslog/setlogmask.c
@@ -2,6 +2,7 @@
int setlogmask(int maskpri)
{
+ (void)maskpri;
// TODO
return 0;
}
diff --git a/lib/libc/syslog/syslog.c b/lib/libc/syslog/syslog.c
index a9a41fbb..53aec084 100644
--- a/lib/libc/syslog/syslog.c
+++ b/lib/libc/syslog/syslog.c
@@ -2,6 +2,8 @@
void syslog(int priority, const char *message, ... /* arguments */)
{
+ (void)priority;
+ (void)message;
// TODO
return;
}
diff --git a/lib/libc/time/strftime.c b/lib/libc/time/strftime.c
index d359140b..f0881eb1 100644
--- a/lib/libc/time/strftime.c
+++ b/lib/libc/time/strftime.c
@@ -553,10 +553,10 @@ size_t strftime(char *restrict s, size_t maxsize, const char *restrict format,
return s - orig_s;
}
-weak size_t strftime_l(char *restrict s, size_t maxsize,
+__weak size_t strftime_l(char *restrict s, size_t maxsize,
const char *restrict format,
const struct tm *restrict timeptr,
- locale_t unused locale)
+ locale_t __unused locale)
{
return strftime(s, maxsize, format, timeptr);
}
diff --git a/lib/libc/uio/Kbuild b/lib/libc/uio/Kbuild
new file mode 100644
index 00000000..3b6a16c4
--- /dev/null
+++ b/lib/libc/uio/Kbuild
@@ -0,0 +1,2 @@
+obj-y += readv.o
+obj-y += writev.o
diff --git a/lib/libc/unistd/Kbuild b/lib/libc/unistd/Kbuild
new file mode 100644
index 00000000..ff3f025a
--- /dev/null
+++ b/lib/libc/unistd/Kbuild
@@ -0,0 +1,77 @@
+obj-y += _exit.o
+obj-y += _Fork.o
+obj-y += access.o
+obj-y += alarm.o
+obj-y += chdir.o
+obj-y += chown.o
+obj-y += close.o
+obj-y += dup.o
+obj-y += dup2.o
+obj-y += dup3.o
+obj-y += execl.o
+obj-y += execlp.o
+obj-y += execv.o
+obj-y += execve.o
+obj-y += execvp.o
+obj-y += faccessat.o
+obj-y += fchdir.o
+obj-y += fchown.o
+obj-y += fchownat.o
+obj-y += fdatasync.o
+obj-y += fork.o
+obj-y += fsync.o
+obj-y += ftruncate.o
+obj-y += getcwd.o
+obj-y += getegid.o
+obj-y += getentropy.o
+obj-y += geteuid.o
+obj-y += getgid.o
+obj-y += getgroups.o
+obj-y += gethostid.o
+obj-y += gethostname.o
+obj-y += getlogin_r.o
+obj-y += getlogin.o
+obj-y += getopt.o
+obj-y += getpgid.o
+obj-y += getpid.o
+obj-y += getppid.o
+obj-y += getresgid.o
+obj-y += getresuid.o
+obj-y += getsid.o
+obj-y += getuid.o
+obj-y += isatty.o
+obj-y += lchown.o
+obj-y += link.o
+obj-y += linkat.o
+obj-y += lockf.o
+obj-y += lseek.o
+obj-y += nice.o
+obj-y += pause.o
+obj-y += pipe.o
+obj-y += pipe2.o
+obj-y += posix_close.o
+obj-y += pread.o
+obj-y += pwrite.o
+obj-y += read.o
+obj-y += readlink.o
+obj-y += readlinkat.o
+obj-y += rmdir.o
+obj-y += setegid.o
+obj-y += seteuid.o
+obj-y += setgid.o
+obj-y += setpgid.o
+obj-y += setregid.o
+obj-y += setresgid.o
+obj-y += setresuid.o
+obj-y += setreuid.o
+obj-y += setsid.o
+obj-y += setuid.o
+obj-y += sleep.o
+obj-y += swab.o
+obj-y += symlink.o
+obj-y += symlinkat.o
+obj-y += sync.o
+obj-y += truncate.o
+obj-y += unlink.o
+obj-y += unlinkat.o
+obj-y += write.o
diff --git a/lib/libc/unistd/execlp.c b/lib/libc/unistd/execlp.c
index 4613a7ee..db044d50 100644
--- a/lib/libc/unistd/execlp.c
+++ b/lib/libc/unistd/execlp.c
@@ -1,8 +1,6 @@
#include <stdarg.h>
-#include <stddef.h>
-#include <syscall.h>
+#include <unistd.h>
-// TODO: need to find in path and call execl
int execlp(const char *path, const char *argv0, ...)
{
int argc;
@@ -23,5 +21,5 @@ int execlp(const char *path, const char *argv0, ...)
argv[argc] = NULL;
va_end(ap);
- return syscall(execve, path, argv, 0);
+ return execve(path, argv, 0);
}
diff --git a/lib/libc/unistd/execvp.c b/lib/libc/unistd/execvp.c
index 2ce69354..ae8ecdb9 100644
--- a/lib/libc/unistd/execvp.c
+++ b/lib/libc/unistd/execvp.c
@@ -3,6 +3,7 @@
#include <string.h>
#include <unistd.h>
#include <stdio.h>
+#include <stdlib.h>
extern char **environ;
@@ -17,7 +18,7 @@ int execvp(const char *file, char *const argv[])
return execv(file, argv);
} else {
char *ptr;
- char *path = NULL; // TODO: getenv
+ char *path = getenv("PATH");
if (path == NULL || *path == '\0') {
path = "/bin";
diff --git a/lib/libc/unistd/getentropy.c b/lib/libc/unistd/getentropy.c
index f55fed7a..3a651ba5 100644
--- a/lib/libc/unistd/getentropy.c
+++ b/lib/libc/unistd/getentropy.c
@@ -3,6 +3,8 @@
int getentropy(void *buffer, size_t length)
{
+ (void)buffer;
+ (void)length;
// TODO
return 0;
}
diff --git a/lib/libc/unistd/gethostname.c b/lib/libc/unistd/gethostname.c
index a20808e1..5bd303f5 100644
--- a/lib/libc/unistd/gethostname.c
+++ b/lib/libc/unistd/gethostname.c
@@ -3,6 +3,8 @@
int gethostname(char *name, size_t namelen)
{
+ (void)name;
+ (void)namelen;
// TODO
return 0;
}
diff --git a/lib/libc/unistd/getlogin_r.c b/lib/libc/unistd/getlogin_r.c
index 3dea2dff..70ae5ddd 100644
--- a/lib/libc/unistd/getlogin_r.c
+++ b/lib/libc/unistd/getlogin_r.c
@@ -3,6 +3,8 @@
int getlogin_r(char *name, size_t namesize)
{
+ (void)name;
+ (void)namesize;
// TODO
return 0;
}
diff --git a/lib/libc/unistd/lockf.c b/lib/libc/unistd/lockf.c
index 8b807c34..6f109c55 100644
--- a/lib/libc/unistd/lockf.c
+++ b/lib/libc/unistd/lockf.c
@@ -3,6 +3,9 @@
int lockf(int fildes, int function, off_t size)
{
+ (void)fildes;
+ (void)function;
+ (void)size;
// TODO
return 0;
}
diff --git a/lib/libc/unistd/nice.c b/lib/libc/unistd/nice.c
index 3b240c93..6da984df 100644
--- a/lib/libc/unistd/nice.c
+++ b/lib/libc/unistd/nice.c
@@ -3,6 +3,7 @@
int nice(int incr)
{
+ (void)incr;
// TODO: needs getpriority and setpriority from sys/resouce.h
return 0;
}
diff --git a/lib/libc/unistd/posix_close.c b/lib/libc/unistd/posix_close.c
index fe44a7b9..78ec692e 100644
--- a/lib/libc/unistd/posix_close.c
+++ b/lib/libc/unistd/posix_close.c
@@ -1,7 +1,7 @@
#include <libc.h>
#include <syscall.h>
-int posix_close(int fildes, int unused flag)
+int posix_close(int fildes, int __unused flag)
{
return syscall(close, fildes);
}
diff --git a/lib/libc/utsname/Kbuild b/lib/libc/utsname/Kbuild
new file mode 100644
index 00000000..43c7392c
--- /dev/null
+++ b/lib/libc/utsname/Kbuild
@@ -0,0 +1 @@
+obj-y += uname.o
diff --git a/lib/libc/wait/Kbuild b/lib/libc/wait/Kbuild
new file mode 100644
index 00000000..f1dad549
--- /dev/null
+++ b/lib/libc/wait/Kbuild
@@ -0,0 +1,3 @@
+obj-y += wait.o
+obj-y += waitid.o
+obj-y += waitpid.o
diff --git a/lib/libc/wchar/wctob.c b/lib/libc/wchar/wctob.c
deleted file mode 100644
index 702e3f75..00000000
--- a/lib/libc/wchar/wctob.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#include <stdlib.h>
-#include <wchar.h>
-#include <stdio.h>
-
-#define IS_CODEUNIT(c) ((unsigned)(c) - 0xdf80 < 0x80)
-
-int wctob(wint_t c)
-{
- if (c < 128U)
- return (int)c;
-
- if (MB_CUR_MAX == 1 && IS_CODEUNIT(c))
- return (unsigned char)c;
-
- return EOF;
-}
diff --git a/lib/libc/wctype/iswalnum.c b/lib/libc/wctype/iswalnum.c
deleted file mode 100644
index 3eb2f14f..00000000
--- a/lib/libc/wctype/iswalnum.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-
-int iswalnum(wint_t wc)
-{
- return iswdigit(wc) || iswalpha(wc);
-}
-
-weak int iswalnum_l(wint_t wc, locale_t unused locale)
-{
- return iswalnum(wc);
-}
diff --git a/lib/libc/wctype/iswalpha.c b/lib/libc/wctype/iswalpha.c
deleted file mode 100644
index 17c8508c..00000000
--- a/lib/libc/wctype/iswalpha.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-
-int iswalpha(wint_t wc)
-{
- const unsigned char t[] = {
-#include <__alpha.h>
- };
-
- if (wc < 0x20000U)
- return (t[t[wc >> 8] * 32 + ((wc & 255) >> 3)] >> (wc & 7)) & 1;
-
- if (wc < 0x2fffeU)
- return 1;
-
- return 0;
-}
-
-weak int iswalpha_l(wint_t wc, locale_t unused locale)
-{
- return iswalpha(wc);
-}
diff --git a/lib/libc/wctype/iswblank.c b/lib/libc/wctype/iswblank.c
deleted file mode 100644
index 61664162..00000000
--- a/lib/libc/wctype/iswblank.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-#include <ctype.h>
-
-int iwsblank(wint_t wc)
-{
- return isblank((unsigned char)wc);
-}
-
-weak int iswblank_l(wint_t c, locale_t unused locale)
-{
- return iswblank(c);
-}
diff --git a/lib/libc/wctype/iswdigit.c b/lib/libc/wctype/iswdigit.c
deleted file mode 100644
index e775f561..00000000
--- a/lib/libc/wctype/iswdigit.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-
-int iswdigit(wint_t wc)
-{
- return (wc >= L'0' && wc <= L'9');
-}
-
-weak int iswdigit_l(wint_t wc, locale_t unused locale)
-{
- return iswdigit(wc);
-}
diff --git a/lib/libc/wctype/iswgraph.c b/lib/libc/wctype/iswgraph.c
deleted file mode 100644
index 00ab6cca..00000000
--- a/lib/libc/wctype/iswgraph.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-
-int iswgraph(wint_t wc)
-{
- return iswprint(wc) && !iswspace(wc);
-}
-
-weak int iswgraph_l(wint_t wc, locale_t unused locale)
-{
- return iswgraph(wc);
-}
diff --git a/lib/libc/wctype/iswlower.c b/lib/libc/wctype/iswlower.c
deleted file mode 100644
index dea58f3a..00000000
--- a/lib/libc/wctype/iswlower.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-
-int iswlower(wint_t wc)
-{
- return towupper(wc) != wc;
-}
-
-weak int islower_l(wint_t wc, locale_t unused locale)
-{
- return iswlower(wc);
-}
diff --git a/lib/libc/wctype/iswprint.c b/lib/libc/wctype/iswprint.c
deleted file mode 100644
index f0b26fbf..00000000
--- a/lib/libc/wctype/iswprint.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-
-int iswprint(wint_t wc)
-{
- return (wc >= 0x20 && wc <= 0x7E) ||
- (wc >= 0xA0 && wc <= 0x10FFFF && (wc < 0xFDD0 || wc > 0xFDEF) &&
- (wc & 0xFFFE) != 0xFFFE);
-}
-
-weak int iswprint_l(wint_t wc, locale_t unused locale)
-{
- return iswprint(wc);
-}
diff --git a/lib/libc/wctype/iswpunct.c b/lib/libc/wctype/iswpunct.c
deleted file mode 100644
index d7ed6487..00000000
--- a/lib/libc/wctype/iswpunct.c
+++ /dev/null
@@ -1,327 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-
-int iswpunct(wint_t wc)
-{
- const unsigned char t[] = {
- 18, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 16, 16, 34, 35, 16, 36, 37, 38, 39,
- 40, 41, 42, 43, 16, 44, 45, 46, 17, 17, 47, 17, 17,
- 17, 17, 17, 17, 48, 49, 50, 51, 52, 53, 54, 55, 17,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 56,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 57, 16, 58, 59, 60,
- 61, 62, 63, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 64, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 65, 16, 16, 66, 16, 67, 68, 69, 16, 70, 71, 72,
- 16, 73, 16, 16, 74, 75, 76, 77, 78, 16, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 16, 92, 93,
- 94, 95, 16, 16, 16, 16, 96, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 97, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 98, 99,
- 16, 16, 100, 101, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 102, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 103, 104, 105, 106,
- 16, 16, 107, 108, 17, 17, 109, 16, 16, 16, 16, 16, 16,
- 110, 111, 16, 16, 16, 16, 16, 112, 113, 16, 16, 114, 115,
- 116, 16, 117, 118, 119, 17, 17, 17, 120, 121, 122, 123, 124,
- 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0, 0, 0, 254, 255, 0, 252, 1,
- 0, 0, 248, 1, 0, 0, 120, 0, 0, 0, 0, 255, 251,
- 223, 251, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 252, 255, 224,
- 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 255,
- 255, 255, 255, 255, 32, 64, 176, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252,
- 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 252, 0, 0, 0, 0, 0, 230, 254, 255, 255, 255, 0, 64,
- 73, 0, 0, 0, 0, 0, 24, 0, 255, 255, 0, 216, 0,
- 0, 0, 0, 0, 0, 0, 1, 0, 60, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 16, 224, 1, 30, 0,
- 96, 255, 191, 0, 0, 0, 0, 0, 0, 255, 7, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 248, 207, 227, 0, 0, 0, 3, 0, 32,
- 255, 127, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 252, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 30, 0, 48,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32,
- 0, 0, 0, 0, 252, 111, 0, 0, 0, 0, 0, 0, 0,
- 16, 0, 32, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
- 0, 0, 0, 16, 0, 32, 0, 0, 0, 0, 3, 224, 0,
- 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 0, 0, 0,
- 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0,
- 0, 0, 0, 255, 7, 16, 0, 0, 0, 0, 0, 0, 0,
- 0, 32, 0, 0, 0, 0, 128, 255, 16, 0, 0, 0, 0,
- 0, 0, 16, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 24, 0, 160, 0, 127, 0, 0, 255,
- 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
- 0, 0, 16, 0, 0, 0, 0, 0, 0, 128, 0, 128, 192,
- 223, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 31, 0, 0, 0, 0, 0, 0, 254, 255, 255,
- 255, 0, 252, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0,
- 252, 0, 0, 0, 0, 0, 0, 192, 255, 223, 255, 7, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 6, 0, 252,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 224, 255, 255, 255, 31, 0,
- 0, 255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 1, 0,
- 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0,
- 0, 0, 0, 16, 0, 0, 0, 112, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
- 254, 127, 47, 0, 0, 255, 3, 255, 127, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 14, 49, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 196, 255, 255, 255, 255, 0, 0, 0, 192, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 224, 159, 0, 0, 0, 0,
- 127, 63, 255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 16, 0, 16, 0, 0, 252, 255, 255,
- 255, 31, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0,
- 0, 64, 0, 12, 240, 0, 0, 0, 0, 0, 0, 128, 248,
- 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0,
- 0, 0, 0, 255, 0, 255, 255, 255, 33, 144, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
- 127, 0, 224, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 160, 3, 224, 0, 224, 0, 224, 0, 96, 128, 248, 255,
- 255, 255, 252, 255, 255, 255, 255, 255, 127, 223, 255, 241, 127,
- 255, 127, 0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255,
- 255, 1, 0, 123, 3, 208, 193, 175, 66, 0, 12, 31, 188,
- 255, 255, 0, 0, 0, 0, 0, 14, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 127, 0, 0, 0, 255, 7, 0, 0, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 63, 0, 0, 0, 0, 0, 0, 252,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 207, 255, 255, 255, 63, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 135, 3,
- 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 127,
- 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255,
- 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 63, 0, 0, 0, 255, 15, 30, 255, 255, 255, 1, 252, 193,
- 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 255, 255, 255,
- 255, 15, 0, 0, 0, 255, 255, 255, 127, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
- 255, 255, 127, 0, 0, 0, 0, 0, 0, 192, 0, 224, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 15, 112,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 255, 0, 255, 255, 127, 0, 3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
- 0, 15, 255, 3, 0, 0, 0, 0, 0, 0, 240, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 16, 192, 0, 0, 255, 255,
- 3, 23, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 8,
- 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,
- 255, 63, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 240, 0, 0, 128, 3, 0, 0,
- 0, 0, 0, 0, 0, 128, 2, 0, 0, 192, 0, 0, 67,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 56, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 252, 255, 3, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 48, 255, 255, 255, 3, 255, 255, 255, 255,
- 255, 255, 247, 255, 127, 15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 254, 255,
- 0, 252, 1, 0, 0, 248, 1, 0, 0, 248, 63, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 127, 127, 0, 48, 135, 255, 255, 255, 255, 255, 143, 255, 0,
- 0, 0, 0, 0, 0, 224, 255, 255, 127, 255, 15, 1, 0,
- 0, 0, 0, 0, 255, 255, 255, 255, 255, 63, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
- 255, 255, 15, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
- 255, 0, 0, 128, 255, 0, 0, 0, 0, 128, 255, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 192, 143, 0,
- 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 48, 255, 255, 252, 255, 255, 255, 255,
- 255, 0, 0, 0, 0, 0, 0, 0, 135, 255, 1, 255, 1,
- 0, 0, 0, 224, 0, 0, 0, 224, 0, 0, 0, 0, 0,
- 1, 0, 0, 96, 248, 127, 0, 0, 0, 0, 0, 0, 0,
- 0, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0,
- 30, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 252, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 255, 255, 255, 127, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 224, 127, 0, 0, 0, 192, 255, 255, 3, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 192, 63, 252, 255, 63, 0, 0, 128, 3, 0, 0, 0, 0,
- 0, 0, 254, 3, 32, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 24, 0, 15, 0, 0, 0, 0, 0, 56,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 63, 0, 232,
- 254, 255, 31, 0, 0, 0, 0, 0, 0, 0, 96, 63, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 24, 0, 32, 0, 0, 192, 31, 31, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 248,
- 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 128, 255, 255, 255, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 14, 0, 0,
- 0, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 8, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 252, 7, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 24, 128, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 223, 7, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 62, 0, 0, 252, 255, 31, 3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
- 255, 255, 3, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 48, 0, 0, 248, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 255, 255, 255, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 176, 15, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 0,
- 255, 255, 255, 255, 127, 254, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 1, 0, 0, 255, 255, 255, 255, 255, 255, 255,
- 255, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 15, 0, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 0, 255, 255,
- 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 8, 0, 0,
- 32, 0, 0, 0, 32, 0, 0, 128, 0, 0, 0, 128, 0,
- 0, 0, 2, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0,
- 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 248, 254, 255,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 127, 0, 0, 128, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 240, 0, 128, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 128, 255, 127, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 7, 0,
- 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 255, 255,
- 255, 255, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 254, 255, 255, 255, 255, 255, 255, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
- 255, 255, 255, 255, 255, 15, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 15, 0, 255, 127, 254, 255, 254, 255,
- 254, 255, 255, 255, 63, 0, 255, 31, 255, 255, 255, 255, 0,
- 0, 0, 252, 0, 0, 0, 28, 0, 0, 0, 252, 255, 255,
- 255, 31, 0, 0, 0, 0, 0, 0, 192, 255, 255, 255, 7,
- 0, 255, 255, 255, 255, 255, 15, 255, 1, 3, 0, 63, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 63, 0, 255, 31, 255, 7, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15,
- 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1,
- 255, 15, 0, 0, 255, 15, 255, 255, 255, 255, 255, 255, 255,
- 0, 255, 3, 255, 255, 255, 255, 255, 0, 255, 255, 255, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 239, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 252,
- 255, 255, 255, 255, 231, 199, 255, 255, 255, 231, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 15, 0, 255, 63, 15, 7, 7, 0, 63, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,
-
- };
-
- if (wc < 0x20000U)
- return (t[t[wc >> 8] * 32 + ((wc & 255) >> 3)] >> (wc & 7)) & 1;
-
- return 0;
-}
-
-weak int iswctype_l(wint_t wc, wctype_t charclass, locale_t unused locale)
-{
- return iswctype(wc, charclass);
-}
diff --git a/lib/libc/wctype/iswspace.c b/lib/libc/wctype/iswspace.c
deleted file mode 100644
index 3b6806af..00000000
--- a/lib/libc/wctype/iswspace.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <libc.h>
-#include <wchar.h>
-#include <wctype.h>
-
-int iswspace(wint_t wc)
-{
- const wchar_t t[] = { L' ', L'\t', L'\n', L'\r', 11, 12,
- 0x0085, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004,
- 0x2005, 0x2006, 0x2008, 0x2009, 0x200a, 0x2028,
- 0x2029, 0x205f, 0x3000, 0
-
- };
-
- return wc && wcschr(t, (wchar_t)wc) != NULL;
-}
-
-weak int iswspace_l(wint_t wc, locale_t unused locale)
-{
- return iswspace(wc);
-}
diff --git a/lib/libc/wctype/iswupper.c b/lib/libc/wctype/iswupper.c
deleted file mode 100644
index afe12049..00000000
--- a/lib/libc/wctype/iswupper.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-
-int iswupper(wint_t wc)
-{
- return towlower(wc) != wc;
-}
-
-weak int iswupper_l(wint_t wc, locale_t unused locale)
-{
- return iswupper(wc);
-}
diff --git a/lib/libc/wctype/iswxdigit.c b/lib/libc/wctype/iswxdigit.c
deleted file mode 100644
index fae88730..00000000
--- a/lib/libc/wctype/iswxdigit.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-
-int iswxdigit(wint_t wc)
-{
- return (unsigned)(wc - '0') < 10 || (unsigned)((wc | 32) - 'a') < 6;
-}
-
-weak int iswxdigit_l(wint_t wc, locale_t unused locale)
-{
- return iswxdigit(wc);
-}
diff --git a/lib/libc/wctype/towctrans.c b/lib/libc/wctype/towctrans.c
deleted file mode 100644
index 9e7f3b63..00000000
--- a/lib/libc/wctype/towctrans.c
+++ /dev/null
@@ -1,348 +0,0 @@
-#include <libc.h>
-#include <ctype.h>
-#include <string.h>
-#include <wchar.h>
-#include <wctype.h>
-
-/* From embeddedartistry/libc */
-#define CASEMAP(u1, u2, l) { (u1), (l) - (u1), (u2) - (u1) + 1 }
-#define CASELACE(u1, u2) CASEMAP((u1), (u2), (u1) + 1)
-
-static const struct {
- unsigned short upper;
- signed char lower;
- unsigned char len;
-} casemaps[] = {
- CASEMAP(0xc0, 0xde, 0xe0),
-
- CASELACE(0x0100, 0x012e), CASELACE(0x0132, 0x0136),
- CASELACE(0x0139, 0x0147), CASELACE(0x014a, 0x0176),
- CASELACE(0x0179, 0x017d),
-
- CASELACE(0x370, 0x372), CASEMAP(0x391, 0x3a1, 0x3b1),
- CASEMAP(0x3a3, 0x3ab, 0x3c3), CASEMAP(0x400, 0x40f, 0x450),
- CASEMAP(0x410, 0x42f, 0x430),
-
- CASELACE(0x460, 0x480), CASELACE(0x48a, 0x4be),
- CASELACE(0x4c1, 0x4cd), CASELACE(0x4d0, 0x50e),
-
- CASELACE(0x514, 0x52e), CASEMAP(0x531, 0x556, 0x561),
-
- CASELACE(0x01a0, 0x01a4), CASELACE(0x01b3, 0x01b5),
- CASELACE(0x01cd, 0x01db), CASELACE(0x01de, 0x01ee),
- CASELACE(0x01f8, 0x021e), CASELACE(0x0222, 0x0232),
- CASELACE(0x03d8, 0x03ee),
-
- CASELACE(0x1e00, 0x1e94), CASELACE(0x1ea0, 0x1efe),
-
- CASEMAP(0x1f08, 0x1f0f, 0x1f00), CASEMAP(0x1f18, 0x1f1d, 0x1f10),
- CASEMAP(0x1f28, 0x1f2f, 0x1f20), CASEMAP(0x1f38, 0x1f3f, 0x1f30),
- CASEMAP(0x1f48, 0x1f4d, 0x1f40),
-
- CASEMAP(0x1f68, 0x1f6f, 0x1f60), CASEMAP(0x1f88, 0x1f8f, 0x1f80),
- CASEMAP(0x1f98, 0x1f9f, 0x1f90), CASEMAP(0x1fa8, 0x1faf, 0x1fa0),
- CASEMAP(0x1fb8, 0x1fb9, 0x1fb0), CASEMAP(0x1fba, 0x1fbb, 0x1f70),
- CASEMAP(0x1fc8, 0x1fcb, 0x1f72), CASEMAP(0x1fd8, 0x1fd9, 0x1fd0),
- CASEMAP(0x1fda, 0x1fdb, 0x1f76), CASEMAP(0x1fe8, 0x1fe9, 0x1fe0),
- CASEMAP(0x1fea, 0x1feb, 0x1f7a), CASEMAP(0x1ff8, 0x1ff9, 0x1f78),
- CASEMAP(0x1ffa, 0x1ffb, 0x1f7c),
-
- CASEMAP(0x13f0, 0x13f5, 0x13f8), CASELACE(0xa698, 0xa69a),
- CASELACE(0xa796, 0xa79e),
-
- CASELACE(0x246, 0x24e), CASELACE(0x510, 0x512),
- CASEMAP(0x2160, 0x216f, 0x2170), CASEMAP(0x2c00, 0x2c2e, 0x2c30),
- CASELACE(0x2c67, 0x2c6b), CASELACE(0x2c80, 0x2ce2),
- CASELACE(0x2ceb, 0x2ced),
-
- CASELACE(0xa640, 0xa66c), CASELACE(0xa680, 0xa696),
-
- CASELACE(0xa722, 0xa72e), CASELACE(0xa732, 0xa76e),
- CASELACE(0xa779, 0xa77b), CASELACE(0xa77e, 0xa786),
-
- CASELACE(0xa790, 0xa792), CASELACE(0xa7a0, 0xa7a8),
-
- CASELACE(0xa7b4, 0xa7b6),
-
- CASEMAP(0xff21, 0xff3a, 0xff41), { 0, 0, 0 }
-};
-
-static const unsigned short pairs[][2] = { { 'I', 0x0131 },
- { 'S', 0x017f },
- { 0x0130, 'i' },
- { 0x0178, 0x00ff },
- { 0x0181, 0x0253 },
- { 0x0182, 0x0183 },
- { 0x0184, 0x0185 },
- { 0x0186, 0x0254 },
- { 0x0187, 0x0188 },
- { 0x0189, 0x0256 },
- { 0x018a, 0x0257 },
- { 0x018b, 0x018c },
- { 0x018e, 0x01dd },
- { 0x018f, 0x0259 },
- { 0x0190, 0x025b },
- { 0x0191, 0x0192 },
- { 0x0193, 0x0260 },
- { 0x0194, 0x0263 },
- { 0x0196, 0x0269 },
- { 0x0197, 0x0268 },
- { 0x0198, 0x0199 },
- { 0x019c, 0x026f },
- { 0x019d, 0x0272 },
- { 0x019f, 0x0275 },
- { 0x01a6, 0x0280 },
- { 0x01a7, 0x01a8 },
- { 0x01a9, 0x0283 },
- { 0x01ac, 0x01ad },
- { 0x01ae, 0x0288 },
- { 0x01af, 0x01b0 },
- { 0x01b1, 0x028a },
- { 0x01b2, 0x028b },
- { 0x01b7, 0x0292 },
- { 0x01b8, 0x01b9 },
- { 0x01bc, 0x01bd },
- { 0x01c4, 0x01c6 },
- { 0x01c4, 0x01c5 },
- { 0x01c5, 0x01c6 },
- { 0x01c7, 0x01c9 },
- { 0x01c7, 0x01c8 },
- { 0x01c8, 0x01c9 },
- { 0x01ca, 0x01cc },
- { 0x01ca, 0x01cb },
- { 0x01cb, 0x01cc },
- { 0x01f1, 0x01f3 },
- { 0x01f1, 0x01f2 },
- { 0x01f2, 0x01f3 },
- { 0x01f4, 0x01f5 },
- { 0x01f6, 0x0195 },
- { 0x01f7, 0x01bf },
- { 0x0220, 0x019e },
- { 0x0386, 0x03ac },
- { 0x0388, 0x03ad },
- { 0x0389, 0x03ae },
- { 0x038a, 0x03af },
- { 0x038c, 0x03cc },
- { 0x038e, 0x03cd },
- { 0x038f, 0x03ce },
- { 0x0399, 0x0345 },
- { 0x0399, 0x1fbe },
- { 0x03a3, 0x03c2 },
- { 0x03f7, 0x03f8 },
- { 0x03fa, 0x03fb },
- { 0x1e60, 0x1e9b },
- { 0x1e9e, 0xdf },
-
- { 0x1f59, 0x1f51 },
- { 0x1f5b, 0x1f53 },
- { 0x1f5d, 0x1f55 },
- { 0x1f5f, 0x1f57 },
- { 0x1fbc, 0x1fb3 },
- { 0x1fcc, 0x1fc3 },
- { 0x1fec, 0x1fe5 },
- { 0x1ffc, 0x1ff3 },
-
- { 0x23a, 0x2c65 },
- { 0x23b, 0x23c },
- { 0x23d, 0x19a },
- { 0x23e, 0x2c66 },
- { 0x241, 0x242 },
- { 0x243, 0x180 },
- { 0x244, 0x289 },
- { 0x245, 0x28c },
- { 0x3f4, 0x3b8 },
- { 0x3f9, 0x3f2 },
- { 0x3fd, 0x37b },
- { 0x3fe, 0x37c },
- { 0x3ff, 0x37d },
- { 0x4c0, 0x4cf },
-
- { 0x2126, 0x3c9 },
- { 0x212a, 'k' },
- { 0x212b, 0xe5 },
- { 0x2132, 0x214e },
- { 0x2183, 0x2184 },
- { 0x2c60, 0x2c61 },
- { 0x2c62, 0x26b },
- { 0x2c63, 0x1d7d },
- { 0x2c64, 0x27d },
- { 0x2c6d, 0x251 },
- { 0x2c6e, 0x271 },
- { 0x2c6f, 0x250 },
- { 0x2c70, 0x252 },
- { 0x2c72, 0x2c73 },
- { 0x2c75, 0x2c76 },
- { 0x2c7e, 0x23f },
- { 0x2c7f, 0x240 },
- { 0x2cf2, 0x2cf3 },
-
- { 0xa77d, 0x1d79 },
- { 0xa78b, 0xa78c },
- { 0xa78d, 0x265 },
- { 0xa7aa, 0x266 },
-
- { 0x10c7, 0x2d27 },
- { 0x10cd, 0x2d2d },
-
- /* bogus greek 'symbol' letters */
- { 0x376, 0x377 },
- { 0x39c, 0xb5 },
- { 0x392, 0x3d0 },
- { 0x398, 0x3d1 },
- { 0x3a6, 0x3d5 },
- { 0x3a0, 0x3d6 },
- { 0x39a, 0x3f0 },
- { 0x3a1, 0x3f1 },
- { 0x395, 0x3f5 },
- { 0x3cf, 0x3d7 },
-
- { 0xa7ab, 0x25c },
- { 0xa7ac, 0x261 },
- { 0xa7ad, 0x26c },
- { 0xa7ae, 0x26a },
- { 0xa7b0, 0x29e },
- { 0xa7b1, 0x287 },
- { 0xa7b2, 0x29d },
- { 0xa7b3, 0xab53 },
-
- /* special cyrillic lowercase forms
- */
- { 0x412, 0x1c80 },
- { 0x414, 0x1c81 },
- { 0x41e, 0x1c82 },
- { 0x421, 0x1c83 },
- { 0x422, 0x1c84 },
- { 0x422, 0x1c85 },
- { 0x42a, 0x1c86 },
- { 0x462, 0x1c87 },
- { 0xa64a, 0x1c88 },
-
- { 0, 0 } };
-
-wchar_t __towcase(wchar_t wc, int lower)
-{
- int i;
- int lmul = 2 * lower - 1;
- int lmask = lower - 1;
- /* no letters with case in these large ranges */
- if (!iswalpha((wint_t)wc) || (unsigned)wc - 0x0600 <= 0x0fff - 0x0600 ||
- (unsigned)wc - 0x2e00 <= 0xa63f - 0x2e00 ||
- (unsigned)wc - 0xa800 <= 0xab52 - 0xa800 ||
- (unsigned)wc - 0xabc0 <= 0xfeff - 0xabc0) {
- return wc;
- }
-
- /* special case because the diff between upper/lower is too big */
- if (lower && (unsigned)wc - 0x10a0 < 0x2e) {
- if (wc > 0x10c5 && wc != 0x10c7 && wc != 0x10cd) {
- return wc;
- }
-
- return wc + 0x2d00 - 0x10a0;
- }
-
- if (!lower && (unsigned)wc - 0x2d00 < 0x26) {
- if (wc > 0x2d25 && wc != 0x2d27 && wc != 0x2d2d) {
- return wc;
- }
-
- return wc + 0x10a0 - 0x2d00;
- }
-
- if (lower && (unsigned)wc - 0x13a0 < 0x50) {
- return wc + 0xab70 - 0x13a0;
- }
-
- if (!lower && (unsigned)wc - 0xab70 < 0x50) {
- return wc + 0x13a0 - 0xab70;
- }
-
- for (i = 0; casemaps[i].len; i++) {
- int base = casemaps[i].upper + (lmask & casemaps[i].lower);
- if (wc - (wchar_t)base < casemaps[i].len) {
- if (casemaps[i].lower == 1) {
- return wc + (wchar_t)lower -
- ((wc - casemaps[i].upper) & 1);
- }
- return wc + (wchar_t)(lmul * casemaps[i].lower);
- }
- }
-
- for (i = 0; pairs[i][1 - lower]; i++) {
- if (pairs[i][1 - lower] == wc) {
- return pairs[i][lower];
- }
- }
-
- if (wc - (wchar_t)(0x10428 - 0x28 * lower) < 0x28) {
- return wc - (wchar_t)(0x28 + 0x50 * lower);
- }
-
- if (wc - (wchar_t)(0x104d8 - 0x28 * lower) < 0x24) {
- return wc - (wchar_t)(0x28 + 0x50 * lower);
- }
-
- if (wc - (wchar_t)(0x10cc0 - 0x40 * lower) < 0x33) {
- return wc - (wchar_t)(0x40 + 0x80 * lower);
- }
-
- if (wc - (wchar_t)(0x118c0 - 0x20 * lower) < 0x20) {
- return wc - (wchar_t)(0x20 + 0x40 * lower);
- }
-
- if (wc - (wchar_t)(0x1e922 - 0x22 * lower) < 0x22) {
- return wc - (wchar_t)(0x22 + 0x44 * lower);
- }
-
- return wc;
-}
-
-wint_t towlower(wint_t wc)
-{
- return (wint_t)(wc < 128 ? (wint_t)tolower((int)wc) :
- (wint_t)__towcase((wchar_t)wc, 1));
-}
-
-weak wint_t towlower_l(wint_t wc, locale_t unused locale)
-{
- return towlower(wc);
-}
-
-wint_t towupper(wint_t wc)
-{
- return (wint_t)(wc < 128 ? (wint_t)toupper((int)wc) :
- (wint_t)__towcase((wchar_t)wc, 0));
-}
-
-weak wint_t towupper_l(wint_t wc, locale_t unused locale)
-{
- return towupper(wc);
-}
-
-wctrans_t wctrans(const char *class)
-{
- if (!strcmp(class, "toupper"))
- return (wctrans_t)1;
- if (!strcmp(class, "tolower"))
- return (wctrans_t)2;
- return 0;
-}
-
-weak wctrans_t wctrans_l(const char *class, locale_t unused locale)
-{
- return wctrans(class);
-}
-
-wint_t towctrans(wint_t wc, wctrans_t desc)
-{
- if (desc == (wctrans_t)1)
- return towupper(wc);
- if (desc == (wctrans_t)2)
- return towlower(wc);
- return wc;
-}
-
-weak wint_t towctrans_l(wint_t wc, wctrans_t desc, locale_t unused locale)
-{
- return towctrans(wc, desc);
-}
diff --git a/lib/libc/wctype/wctype.c b/lib/libc/wctype/wctype.c
deleted file mode 100644
index 0495ba8c..00000000
--- a/lib/libc/wctype/wctype.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <libc.h>
-#include <wctype.h>
-#include <string.h>
-
-wctype_t wctype(const char *property)
-{
- int i;
- const char *ptr;
- static const char n[] = "alnum\0"
- "alpha\0"
- "blank\0"
- "cntrl\0"
- "digit\0"
- "graph\0"
- "lower\0"
- "print\0"
- "punct\0"
- "space\0"
- "upper\0"
- "xdigit";
-
- for (i = 1, ptr = n; *ptr; i++, ptr += strlen(ptr) + 1)
- if (!strcmp(property, ptr))
- return i;
-
- return 0;
-}
-
-weak wctype_t wctype_l(const char *property, locale_t unused locale)
-{
- return wctype(property);
-}