overhaul internally-public declarations using wrapper headers
authorRich Felker <dalias@aerifal.cx>
Tue, 11 Sep 2018 03:26:40 +0000 (23:26 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 12 Sep 2018 18:34:33 +0000 (14:34 -0400)
commits leading up to this one have moved the vast majority of
libc-internal interface declarations to appropriate internal headers,
allowing them to be type-checked and setting the stage to limit their
visibility. the ones that have not yet been moved are mostly
namespace-protected aliases for standard/public interfaces, which
exist to facilitate implementing plain C functions in terms of POSIX
functionality, or C or POSIX functionality in terms of extensions that
are not standardized. some don't quite fit this description, but are
"internally public" interfacs between subsystems of libc.

rather than create a number of newly-named headers to declare these
functions, and having to add explicit include directives for them to
every source file where they're needed, I have introduced a method of
wrapping the corresponding public headers.

parallel to the public headers in $(srcdir)/include, we now have
wrappers in $(srcdir)/src/include that come earlier in the include
path order. they include the public header they're wrapping, then add
declarations for namespace-protected versions of the same interfaces
and any "internally public" interfaces for the subsystem they
correspond to.

along these lines, the wrapper for features.h is now responsible for
the definition of the hidden, weak, and weak_alias macros. this means
source files will no longer need to include any special headers to
access these features.

over time, it is my expectation that the scope of what is "internally
public" will expand, reducing the number of source files which need to
include *_impl.h and related headers down to those which are actually
implementing the corresponding subsystems, not just using them.

92 files changed:
Makefile
ldso/dynlink.c
src/conf/sysconf.c
src/crypt/crypt.c
src/crypt/crypt_r.c
src/env/__libc_start_main.c
src/env/clearenv.c
src/env/getenv.c
src/env/putenv.c
src/env/setenv.c
src/env/unsetenv.c
src/include/arpa/inet.h [new file with mode: 0644]
src/include/crypt.h [new file with mode: 0644]
src/include/features.h [new file with mode: 0644]
src/include/langinfo.h [new file with mode: 0644]
src/include/pthread.h [new file with mode: 0644]
src/include/resolv.h [new file with mode: 0644]
src/include/signal.h [new file with mode: 0644]
src/include/stdlib.h [new file with mode: 0644]
src/include/string.h [new file with mode: 0644]
src/include/sys/mman.h [new file with mode: 0644]
src/include/sys/sysinfo.h [new file with mode: 0644]
src/include/sys/time.h [new file with mode: 0644]
src/include/time.h [new file with mode: 0644]
src/include/unistd.h [new file with mode: 0644]
src/internal/libc.h
src/internal/malloc_impl.h
src/internal/pthread_impl.h
src/linux/utimes.c
src/locale/dcngettext.c
src/locale/locale_map.c
src/locale/setlocale.c
src/misc/ptsname.c
src/mman/shm_open.c
src/network/getnameinfo.c
src/network/inet_addr.c
src/network/lookup_ipliteral.c
src/network/lookup_name.c
src/network/res_query.c
src/network/res_send.c
src/process/posix_spawn.c
src/process/posix_spawnp.c
src/signal/signal.c
src/stdio/freopen.c
src/stdio/tempnam.c
src/stdio/tmpfile.c
src/stdio/tmpnam.c
src/string/strchr.c
src/string/strcpy.c
src/string/strcspn.c
src/string/strncpy.c
src/string/strrchr.c
src/temp/__randname.c
src/temp/mkdtemp.c
src/temp/mkostemp.c
src/temp/mkostemps.c
src/temp/mkstemp.c
src/temp/mkstemps.c
src/temp/mktemp.c
src/thread/__timedwait.c
src/thread/call_once.c
src/thread/cnd_broadcast.c
src/thread/cnd_signal.c
src/thread/cnd_timedwait.c
src/thread/mtx_timedlock.c
src/thread/mtx_trylock.c
src/thread/mtx_unlock.c
src/thread/pthread_cond_broadcast.c
src/thread/pthread_cond_signal.c
src/thread/pthread_cond_timedwait.c
src/thread/pthread_create.c
src/thread/pthread_detach.c
src/thread/pthread_join.c
src/thread/pthread_mutex_lock.c
src/thread/pthread_mutex_timedlock.c
src/thread/sem_open.c
src/thread/thrd_create.c
src/thread/thrd_exit.c
src/thread/thrd_join.c
src/thread/tss_create.c
src/thread/tss_delete.c
src/time/__map_file.c
src/time/__tz.c
src/time/asctime.c
src/time/asctime_r.c
src/time/clock.c
src/time/gmtime.c
src/time/localtime.c
src/time/strftime.c
src/time/time.c
src/time/time_impl.h
src/time/timespec_get.c

index e23a8332f5e1e4a64e8b88bb5eecabbe465e9b2c..b46f8ca436a5fdfa805525e16a5baf8607cbbf16 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -46,7 +46,7 @@ CFLAGS_AUTO = -Os -pipe
 CFLAGS_C99FSE = -std=c99 -ffreestanding -nostdinc 
 
 CFLAGS_ALL = $(CFLAGS_C99FSE)
-CFLAGS_ALL += -D_XOPEN_SOURCE=700 -I$(srcdir)/arch/$(ARCH) -I$(srcdir)/arch/generic -Iobj/src/internal -I$(srcdir)/src/internal -Iobj/include -I$(srcdir)/include
+CFLAGS_ALL += -D_XOPEN_SOURCE=700 -I$(srcdir)/arch/$(ARCH) -I$(srcdir)/arch/generic -Iobj/src/internal -I$(srcdir)/src/include -I$(srcdir)/src/internal -Iobj/include -I$(srcdir)/include
 CFLAGS_ALL += $(CPPFLAGS) $(CFLAGS_AUTO) $(CFLAGS)
 
 LDFLAGS_ALL = $(LDFLAGS_AUTO) $(LDFLAGS)
index 7200c8178ec114a8efd2217f885f699cfbc3acc5..e4829c3ae4bc17ecba4b11f3f89b7d995bf4c138 100644 (file)
@@ -96,8 +96,6 @@ struct symdef {
        struct dso *dso;
 };
 
-void __init_libc(char **, char *);
-
 static struct builtin_tls {
        char c;
        struct pthread pt;
index 45ef1c165863024764830324b09a584dc0a0f707..3baaed3226c80d0fd95ab179626019beccdaaa08 100644 (file)
@@ -204,7 +204,6 @@ long sysconf(int name)
        case JT_PHYS_PAGES & 255:
        case JT_AVPHYS_PAGES & 255: ;
                unsigned long long mem;
-               int __lsysinfo(struct sysinfo *);
                struct sysinfo si;
                __lsysinfo(&si);
                if (!si.mem_unit) si.mem_unit = 1;
index 46500737b6598ae58f740ba2808e35507e2b73ba..e6237e397fc757074907fb1684c5cfa14d5083c1 100644 (file)
@@ -1,8 +1,6 @@
 #include <unistd.h>
 #include <crypt.h>
 
-char *__crypt_r(const char *, const char *, struct crypt_data *);
-
 char *crypt(const char *key, const char *salt)
 {
        /* This buffer is sufficiently large for all
index 5982c4c9abc7db638b9c949c905ad37a03824f02..5789973b7a4442fec8619a4b0497460918913f37 100644 (file)
@@ -1,14 +1,6 @@
 #include <crypt.h>
 #include "libc.h"
 
-struct crypt_data;
-
-char *__crypt_des(const char *, const char *, char *);
-char *__crypt_md5(const char *, const char *, char *);
-char *__crypt_blowfish(const char *, const char *, char *);
-char *__crypt_sha256(const char *, const char *, char *);
-char *__crypt_sha512(const char *, const char *, char *);
-
 char *__crypt_r(const char *key, const char *salt, struct crypt_data *data)
 {
        /* Per the crypt_r API, the caller has provided a pointer to
index c1b066974d48e57baf4c39165c1cc1346fbaac21..58da9e8308d9e9faa1de90254d355e96b4f27cd8 100644 (file)
@@ -2,12 +2,11 @@
 #include <poll.h>
 #include <fcntl.h>
 #include <signal.h>
+#include <unistd.h>
 #include "syscall.h"
 #include "atomic.h"
 #include "libc.h"
 
-void __init_tls(size_t *);
-
 static void dummy(void) {}
 weak_alias(dummy, _init);
 
index da187752b510a9594ba839dcef3955b01ef2cc67..2e275b43457c5c9516701b6b89d999ce186cccd7 100644 (file)
@@ -1,5 +1,6 @@
 #define _GNU_SOURCE
 #include <stdlib.h>
+#include <unistd.h>
 #include "libc.h"
 
 static void dummy(char *old, char *new) {}
index cf34672c3d60ae73d245f011a3716385c7ce3b2e..f279779887ee6c214239c7952efa4f643419c61e 100644 (file)
@@ -1,9 +1,8 @@
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 #include "libc.h"
 
-char *__strchrnul(const char *, int);
-
 char *getenv(const char *name)
 {
        size_t l = __strchrnul(name, '=') - name;
index fa4a4ddc87ab9796127973f41b80e59d45d9f3ef..20f96022ab4c73248c8544def02b1bf9ba5968e0 100644 (file)
@@ -1,9 +1,8 @@
 #include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 #include "libc.h"
 
-char *__strchrnul(const char *, int);
-
 static void dummy(char *old, char *new) {}
 weak_alias(dummy, __env_rm_add);
 
index a7dd2b602fc96a23181f37bf10c3729192851c94..c5226b6d3c52fee58e34c86e1183804420e3af91 100644 (file)
@@ -2,9 +2,6 @@
 #include <string.h>
 #include <errno.h>
 
-char *__strchrnul(const char *, int);
-int __putenv(char *, size_t, char *);
-
 void __env_rm_add(char *old, char *new)
 {
        static char **env_alloced;
index 8630e2d760fe5d8aa1d7af0993f68ae6c137e7f1..471219e8b273f04b562a0e5a64c4f50f96e61798 100644 (file)
@@ -1,10 +1,9 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <unistd.h>
 #include "libc.h"
 
-char *__strchrnul(const char *, int);
-
 static void dummy(char *old, char *new) {}
 weak_alias(dummy, __env_rm_add);
 
diff --git a/src/include/arpa/inet.h b/src/include/arpa/inet.h
new file mode 100644 (file)
index 0000000..2da6ddb
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef ARPA_INET_H
+#define ARPA_INET_H
+
+#include "../../../include/arpa/inet.h"
+
+int __inet_aton(const char *, struct in_addr *);
+
+#endif
diff --git a/src/include/crypt.h b/src/include/crypt.h
new file mode 100644 (file)
index 0000000..6e5c2d3
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef CRYPT_H
+#define CRYPT_H
+
+#include "../../include/crypt.h"
+
+char *__crypt_r(const char *, const char *, struct crypt_data *);
+
+char *__crypt_des(const char *, const char *, char *);
+char *__crypt_md5(const char *, const char *, char *);
+char *__crypt_blowfish(const char *, const char *, char *);
+char *__crypt_sha256(const char *, const char *, char *);
+char *__crypt_sha512(const char *, const char *, char *);
+
+#endif
diff --git a/src/include/features.h b/src/include/features.h
new file mode 100644 (file)
index 0000000..f17bd15
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef FEATURES_H
+#define FEATURES_H
+
+#include "../../include/features.h"
+
+#define weak __attribute__((__weak__))
+#define hidden __attribute__((__visibility__("hidden")))
+#define weak_alias(old, new) \
+       extern __typeof(old) new __attribute__((__weak__, __alias__(#old)))
+
+#endif
diff --git a/src/include/langinfo.h b/src/include/langinfo.h
new file mode 100644 (file)
index 0000000..ab32b88
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef LANGINFO_H
+#define LANGINFO_H
+
+#include "../../include/langinfo.h"
+
+char *__nl_langinfo_l(nl_item, locale_t);
+
+#endif
diff --git a/src/include/pthread.h b/src/include/pthread.h
new file mode 100644 (file)
index 0000000..2beaa44
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef PTHREAD_H
+#define PTHREAD_H
+
+#include "../../include/pthread.h"
+
+int __pthread_once(pthread_once_t *, void (*)(void));
+void __pthread_testcancel(void);
+int __pthread_setcancelstate(int, int *);
+int __pthread_create(pthread_t *restrict, const pthread_attr_t *restrict, void *(*)(void *), void *restrict);
+_Noreturn void __pthread_exit(void *);
+int __pthread_join(pthread_t, void **);
+int __pthread_mutex_lock(pthread_mutex_t *);
+int __pthread_mutex_trylock(pthread_mutex_t *);
+int __pthread_mutex_trylock_owner(pthread_mutex_t *);
+int __pthread_mutex_timedlock(pthread_mutex_t *restrict, const struct timespec *restrict);
+int __pthread_mutex_unlock(pthread_mutex_t *);
+int __private_cond_signal(pthread_cond_t *, int);
+int __pthread_cond_timedwait(pthread_cond_t *restrict, pthread_mutex_t *restrict, const struct timespec *restrict);
+int __pthread_key_create(pthread_key_t *, void (*)(void *));
+int __pthread_key_delete(pthread_key_t);
+
+#endif
diff --git a/src/include/resolv.h b/src/include/resolv.h
new file mode 100644 (file)
index 0000000..a66669b
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef RESOLV_H
+#define RESOLV_H
+
+#include "../../include/resolv.h"
+
+int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
+
+int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
+int __res_send(const unsigned char *, int, unsigned char *, int);
+int __res_msend(int, const unsigned char *const *, const int *, unsigned char *const *, int *, int);
+
+#endif
diff --git a/src/include/signal.h b/src/include/signal.h
new file mode 100644 (file)
index 0000000..116c0dd
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef SIGNAL_H
+#define SIGNAL_H
+
+#include "../../include/signal.h"
+
+int __sigaction(int, const struct sigaction *, struct sigaction *);
+
+void __block_all_sigs(void *);
+void __block_app_sigs(void *);
+void __restore_sigs(void *);
+
+void __get_handler_set(sigset_t *);
+
+#endif
diff --git a/src/include/stdlib.h b/src/include/stdlib.h
new file mode 100644 (file)
index 0000000..6e0dbda
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef STDLIB_H
+#define STDLIB_H
+
+#include "../../include/stdlib.h"
+
+int __putenv(char *, size_t, char *);
+int __mkostemps(char *, int, int);
+int __ptsname_r(int, char *, size_t);
+char *__randname(char *);
+
+#endif
diff --git a/src/include/string.h b/src/include/string.h
new file mode 100644 (file)
index 0000000..1d10be7
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef STRING_H
+#define STRING_H
+
+#include "../../include/string.h"
+
+void *__memrchr(const void *, int, size_t);
+char *__stpcpy(char *, const char *);
+char *__stpncpy(char *, const char *, size_t);
+char *__strchrnul(const char *, int);
+
+#endif
diff --git a/src/include/sys/mman.h b/src/include/sys/mman.h
new file mode 100644 (file)
index 0000000..28394dd
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef SYS_MMAN_H
+#define SYS_MMAN_H
+
+#include "../../../include/sys/mman.h"
+
+void __vm_wait(void);
+void __vm_lock(void);
+void __vm_unlock(void);
+
+void *__mmap(void *, size_t, int, int, int, off_t);
+int __munmap(void *, size_t);
+void *__mremap(void *, size_t, size_t, int, ...);
+int __madvise(void *, size_t, int);
+int __mprotect(void *, size_t, int);
+
+const unsigned char *__map_file(const char *, size_t *);
+
+char *__shm_mapname(const char *, char *);
+
+#endif
diff --git a/src/include/sys/sysinfo.h b/src/include/sys/sysinfo.h
new file mode 100644 (file)
index 0000000..c3d60bf
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef SYS_SYSINFO_H
+#define SYS_SYSINFO_H
+
+#include "../../../include/sys/sysinfo.h"
+
+int __lsysinfo(struct sysinfo *);
+
+#endif
diff --git a/src/include/sys/time.h b/src/include/sys/time.h
new file mode 100644 (file)
index 0000000..79c5fcb
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef SYS_TIME_H
+#define SYS_TIME_H
+
+#include "../../../include/sys/time.h"
+
+int __futimesat(int, const char *, const struct timeval [2]);
+
+#endif
diff --git a/src/include/time.h b/src/include/time.h
new file mode 100644 (file)
index 0000000..991f0b4
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef TIME_H
+#define TIME_H
+
+#include "../../include/time.h"
+
+int __clock_gettime(clockid_t, struct timespec *);
+
+char *__asctime_r(const struct tm *, char *);
+struct tm *__gmtime_r(const time_t *restrict, struct tm *restrict);
+struct tm *__localtime_r(const time_t *restrict, struct tm *restrict);
+
+size_t __strftime_l(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t);
+
+#endif
diff --git a/src/include/unistd.h b/src/include/unistd.h
new file mode 100644 (file)
index 0000000..9cdf1d3
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef UNISTD_H
+#define UNISTD_H
+
+#include "../../include/unistd.h"
+
+extern char **__environ;
+
+int __dup3(int, int, int);
+int __mkostemps(char *, int, int);
+int __execvpe(const char *, char *const *, char *const *);
+
+#endif
index f536eaf6e5a11d408c3e30e9370fc70f64e917f3..23988d92318766c79446a3a1e5912cd10f3ff8b9 100644 (file)
@@ -33,12 +33,13 @@ struct __libc {
 #define PAGE_SIZE libc.page_size
 #endif
 
-#define weak __attribute__((__weak__))
-#define hidden __attribute__((__visibility__("hidden")))
-
 extern hidden struct __libc __libc;
 #define libc __libc
 
+void __init_libc(char **, char *);
+void __init_tls(size_t *);
+void __libc_start_init(void);
+
 extern hidden size_t __hwcap;
 extern hidden size_t __sysinfo;
 extern char *__progname, *__progname_full;
@@ -56,12 +57,6 @@ hidden void __unlockfile(FILE *);
 void __synccall(void (*)(void *), void *);
 int __setxid(int, int, int, int);
 
-extern char **__environ;
-
-#undef weak_alias
-#define weak_alias(old, new) \
-       extern __typeof(old) new __attribute__((__weak__, __alias__(#old)))
-
 #undef LFS64_2
 #define LFS64_2(x, y) weak_alias(x, y)
 
index 88b4f670fe3f2fb948dd9a5d3ca152577f33be0f..e97337b3b915090a9ea2728b7e35ece5cf1799de 100644 (file)
@@ -2,11 +2,7 @@
 #define MALLOC_IMPL_H
 
 #include "libc.h"
-
-void *__mmap(void *, size_t, int, int, int, off_t);
-int __munmap(void *, size_t);
-void *__mremap(void *, size_t, size_t, int, ...);
-int __madvise(void *, size_t, int);
+#include <sys/mman.h>
 
 void *__expand_heap(size_t *);
 
index 813b5966244a80839dd1a30bf8ea82f9f84c77f8..4457262d4eb48911dca6b21d43dd7cca57ba1d92 100644 (file)
@@ -5,6 +5,7 @@
 #include <signal.h>
 #include <errno.h>
 #include <limits.h>
+#include <sys/mman.h>
 #include "libc.h"
 #include "syscall.h"
 #include "atomic.h"
@@ -146,10 +147,6 @@ hidden int __set_thread_area(void *);
 int __libc_sigaction(int, const struct sigaction *, struct sigaction *);
 void __unmapself(void *, size_t);
 
-void __vm_wait(void);
-void __vm_lock(void);
-void __vm_unlock(void);
-
 int __timedwait(volatile int *, int, clockid_t, const struct timespec *, int);
 int __timedwait_cp(volatile int *, int, clockid_t, const struct timespec *, int);
 void __wait(volatile int *, volatile int *, int, int);
@@ -171,10 +168,6 @@ void __acquire_ptc(void);
 void __release_ptc(void);
 void __inhibit_ptc(void);
 
-void __block_all_sigs(void *);
-void __block_app_sigs(void *);
-void __restore_sigs(void *);
-
 #define DEFAULT_STACK_SIZE 81920
 #define DEFAULT_GUARD_SIZE 4096
 
index b814c88b2fdefaea889fb885a34f5fd6faf8171e..6ca025d95a3255fccc5d5345683fc33aa62f42e6 100644 (file)
@@ -2,8 +2,6 @@
 #include "fcntl.h"
 #include "syscall.h"
 
-int __futimesat(int, const char *, const struct timeval [2]);
-
 int utimes(const char *path, const struct timeval times[2])
 {
        return __futimesat(AT_FDCWD, path, times);
index de0828d9e8836d9042c123be099f5eb85f5af137..fc1018df6f640d58d69b45da290a2c975e17c650 100644 (file)
@@ -4,6 +4,7 @@
 #include <errno.h>
 #include <limits.h>
 #include <sys/stat.h>
+#include <sys/mman.h>
 #include <ctype.h>
 #include "locale_impl.h"
 #include "libc.h"
@@ -113,9 +114,6 @@ static char *dummy_gettextdomain()
 
 weak_alias(dummy_gettextdomain, __gettextdomain);
 
-const unsigned char *__map_file(const char *, size_t *);
-int __munmap(void *, size_t);
-
 char *dcngettext(const char *domainname, const char *msgid1, const char *msgid2, unsigned long int n, int category)
 {
        static struct msgcat *volatile cats;
index 79542310c2baea04977e637bcc917332e7e30498..e7b518a1a0c8394e66e30330af360f3752b0034f 100644 (file)
@@ -1,5 +1,6 @@
 #include <locale.h>
 #include <string.h>
+#include <sys/mman.h>
 #include "locale_impl.h"
 #include "libc.h"
 #include "atomic.h"
@@ -11,10 +12,6 @@ const char *__lctrans_impl(const char *msg, const struct __locale_map *lm)
        return trans ? trans : msg;
 }
 
-const unsigned char *__map_file(const char *, size_t *);
-int __munmap(void *, size_t);
-char *__strchrnul(const char *, int);
-
 static const char envvars[][12] = {
        "LC_CTYPE",
        "LC_NUMERIC",
index 40bc7ece16503b036d5683f71ec09cf8e6322229..60e3353c9a7ac962cf5c94fa9fcb2d59251829eb 100644 (file)
@@ -17,8 +17,6 @@ static char *setlocale_one_unlocked(int cat, const char *name)
        return lm ? (char *)lm->name : "C";
 }
 
-char *__strchrnul(const char *, int);
-
 char *setlocale(int cat, const char *name)
 {
        static volatile int lock[1];
index a34779276fa011be935e1db0860d775165ba8729..58c151c97fbbcd926b1781746aff0c5ce7216d7a 100644 (file)
@@ -1,8 +1,6 @@
 #include <stdlib.h>
 #include <errno.h>
 
-int __ptsname_r(int, char *, size_t);
-
 char *ptsname(int fd)
 {
        static char buf[9 + sizeof(int)*3 + 1];
index d042a5a882bd347dd937bceb8f851bb98cb418b8..79784bd306e2dac347cea17af92b2b80c8ea1831 100644 (file)
@@ -6,8 +6,6 @@
 #include <limits.h>
 #include <pthread.h>
 
-char *__strchrnul(const char *, int);
-
 char *__shm_mapname(const char *name, char *buf)
 {
        char *p;
index 79b9e6ea01782f7adb46d39c6acb85465e051c77..84f5ed6cc96fc995796a5c78dbcb8841153fbbfd 100644 (file)
@@ -7,13 +7,10 @@
 #include <arpa/inet.h>
 #include <net/if.h>
 #include <ctype.h>
+#include <resolv.h>
 #include "lookup.h"
 #include "stdio_impl.h"
 
-int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
-int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
-int __res_send(const unsigned char *, int, unsigned char *, int);
-
 #define PTR_MAX (64 + sizeof ".in-addr.arpa")
 #define RR_PTR 12
 
index 10b21f211cfd7a9b6044c5ac88704daeea1d9b66..11ece3d6f8f14c5a791d63ceeec7fc960b9de2e5 100644 (file)
@@ -2,8 +2,6 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
-int __inet_aton(const char *, struct in_addr *);
-
 in_addr_t inet_addr(const char *p)
 {
        struct in_addr a;
index 8ed14605238ef642168213508f81218f32280e1c..2fddab73732535840c5b7b1e0946f13dc459dced 100644 (file)
@@ -9,8 +9,6 @@
 #include <ctype.h>
 #include "lookup.h"
 
-int __inet_aton(const char *, struct in_addr *);
-
 int __lookup_ipliteral(struct address buf[static 1], const char *name, int family)
 {
        struct in_addr a4;
index 5a096ac0f5d9c30c19a45ddcf53c66a7b028e3ee..c93263a9d5542918f9462d41448b9756d92adc39 100644 (file)
@@ -10,6 +10,7 @@
 #include <unistd.h>
 #include <pthread.h>
 #include <errno.h>
+#include <resolv.h>
 #include "lookup.h"
 #include "stdio_impl.h"
 #include "syscall.h"
@@ -98,9 +99,6 @@ struct dpc_ctx {
        int cnt;
 };
 
-int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
-int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
-
 #define RR_A 1
 #define RR_CNAME 5
 #define RR_AAAA 28
index 2b4e4bb1bef80cbee75460ce55864fe01ba57b6e..691ccb164f53744125cc26f9546c46f18365139b 100644 (file)
@@ -2,9 +2,6 @@
 #include <netdb.h>
 #include "libc.h"
 
-int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
-int __res_send(const unsigned char *, int, unsigned char *, int);
-
 int __res_query(const char *name, int class, int type, unsigned char *dest, int len)
 {
        unsigned char q[280];
index 19cfe0f6b4050166ad7d17519007bd5f5ecd66cd..6facc1bd1dd5636d9ac3889b412b2daea784733e 100644 (file)
@@ -1,8 +1,6 @@
 #include <resolv.h>
 #include "libc.h"
 
-int __res_msend(int, const unsigned char *const *, const int *, unsigned char *const *, int *, int);
-
 int __res_send(const unsigned char *msg, int msglen, unsigned char *answer, int anslen)
 {
        int r = __res_msend(1, &msg, &msglen, &answer, &anslen, anslen);
index 16308fb70737d9b2330a78b2cb7cd1e86869ba31..2f8ef935c0bd7a7d9bb7779d358546fb9fc24df5 100644 (file)
@@ -19,8 +19,6 @@ struct args {
        char *const *argv, *const *envp;
 };
 
-void __get_handler_set(sigset_t *);
-
 static int __sys_dup2(int old, int new)
 {
 #ifdef SYS_dup2
index 165be746b8f85c0d886303fd3f6cba15c99aee3c..aad6133b919287daa4219aed26901efb702260e6 100644 (file)
@@ -1,8 +1,6 @@
 #include <spawn.h>
 #include <unistd.h>
 
-int __execvpe(const char *, char *const *, char *const *);
-
 int posix_spawnp(pid_t *restrict res, const char *restrict file,
        const posix_spawn_file_actions_t *fa,
        const posix_spawnattr_t *restrict attr,
index 29e03c88423fec125686e20160686ea140a24d9d..bcd5682578d02eae769030a8275fd180d777341c 100644 (file)
@@ -2,8 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int __sigaction(int, const struct sigaction *, struct sigaction *);
-
 void (*signal(int sig, void (*func)(int)))(int)
 {
        struct sigaction sa_old, sa = { .sa_handler = func, .sa_flags = SA_RESTART };
index 6c1b575f527963566a7b457f29c18dea45b2505a..a9c83c854dc93c9dadd6d7635130883ac5e6d32f 100644 (file)
@@ -1,5 +1,6 @@
 #include "stdio_impl.h"
 #include <fcntl.h>
+#include <unistd.h>
 
 /* The basic idea of this implementation is to open a new FILE,
  * hack the necessary parts of the new FILE into the old one, then
@@ -9,8 +10,6 @@
  * lock, via flockfile or otherwise, when freopen is called, and in that
  * case, freopen cannot act until the lock is released. */
 
-int __dup3(int, int, int);
-
 FILE *freopen(const char *restrict filename, const char *restrict mode, FILE *restrict f)
 {
        int fl = __fmodeflags(mode);
index 5a5597527c0851d5d2c45fff1c6f1e2459e81375..84f91978019b97836d8aab63f436f1027a19ee6b 100644 (file)
@@ -4,12 +4,11 @@
 #include <sys/stat.h>
 #include <limits.h>
 #include <string.h>
+#include <stdlib.h>
 #include "syscall.h"
 
 #define MAXTRIES 100
 
-char *__randname(char *);
-
 char *tempnam(const char *dir, const char *pfx)
 {
        char s[PATH_MAX];
index 525090aa066d49cc20a4a762b17a4d54a3ec1b4f..55d742fad3f5c60ee4e70b39b6b9ecfa096113fa 100644 (file)
@@ -1,11 +1,10 @@
 #include <stdio.h>
 #include <fcntl.h>
+#include <stdlib.h>
 #include "stdio_impl.h"
 
 #define MAXTRIES 100
 
-char *__randname(char *);
-
 FILE *tmpfile(void)
 {
        char s[] = "/tmp/tmpfile_XXXXXX";
index 449eb9b0708c2a5d295db76f1e944059f6789f9b..6c7c253a6d6ef94bed9e4a10c08ceb7b39b1901c 100644 (file)
@@ -3,12 +3,11 @@
 #include <errno.h>
 #include <sys/stat.h>
 #include <string.h>
+#include <stdlib.h>
 #include "syscall.h"
 
 #define MAXTRIES 100
 
-char *__randname(char *);
-
 char *tmpnam(char *buf)
 {
        static char internal[L_tmpnam];
index bfae8f9f846a01c14d288d34e8659f265a9daf2e..3cbc828bebf705ae570e1bfd0c2b518f929c054c 100644 (file)
@@ -1,7 +1,5 @@
 #include <string.h>
 
-char *__strchrnul(const char *, int);
-
 char *strchr(const char *s, int c)
 {
        char *r = __strchrnul(s, c);
index 2883e93040d87ebdc055f21c9c91a2dd8fde669d..6668a129563853d299f5f2fb5b13ef96c5f2f6ff 100644 (file)
@@ -1,7 +1,5 @@
 #include <string.h>
 
-char *__stpcpy(char *, const char *);
-
 char *strcpy(char *restrict dest, const char *restrict src)
 {
        __stpcpy(dest, src);
index cfdba114ca632ee86f433f7d00b744fb1fb6de19..a0c617bd7cdb7d2f0a75476e9f0ac3a86149aa70 100644 (file)
@@ -3,8 +3,6 @@
 #define BITOP(a,b,op) \
  ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a))))
 
-char *__strchrnul(const char *, int);
-
 size_t strcspn(const char *s, const char *c)
 {
        const char *a = s;
index 441ba0335f7377da1562644d9436d5fbc9c2d6e7..545892e6ec5f602deb1d3b46cde440213812a390 100644 (file)
@@ -1,7 +1,5 @@
 #include <string.h>
 
-char *__stpncpy(char *, const char *, size_t);
-
 char *strncpy(char *restrict d, const char *restrict s, size_t n)
 {
        __stpncpy(d, s, n);
index 635fb3c1dcde17abaf662e8cb9952c00e45f5471..98ad1b04549244230eb62fb4bba0e277876d5131 100644 (file)
@@ -1,7 +1,5 @@
 #include <string.h>
 
-void *__memrchr(const void *, int, size_t);
-
 char *strrchr(const char *s, int c)
 {
        return __memrchr(s, c, strlen(s) + 1);
index 464b83d5f95b09b23ecd3c91a1d12641187b2543..2bce37a0c4a27f73fc6e50757a758e1f8125feec 100644 (file)
@@ -1,8 +1,6 @@
 #include <time.h>
 #include <stdint.h>
 
-int __clock_gettime(clockid_t, struct timespec *);
-
 /* This assumes that a check for the
    template size has already been made */
 char *__randname(char *template)
index 6c2c16ef2e8027e4f30a3d90be1c79f3502c73f9..5708257bfecf6ae3e05a5e9fdd0e7054a96d0a7c 100644 (file)
@@ -3,8 +3,6 @@
 #include <errno.h>
 #include <sys/stat.h>
 
-char *__randname(char *);
-
 char *mkdtemp(char *template)
 {
        size_t l = strlen(template);
index e73e22a68d1215ef935d37f93bf849460ca13b34..4fe5713789e366409453c775b68ea40a8bb22039 100644 (file)
@@ -2,8 +2,6 @@
 #include <stdlib.h>
 #include "libc.h"
 
-int __mkostemps(char *, int, int);
-
 int mkostemp(char *template, int flags)
 {
        return __mkostemps(template, 0, flags);
index 43d95c41ab5c08729aa62082521900975f13fc07..d1464b45ae1f694a621a9242e3121699007b191a 100644 (file)
@@ -6,8 +6,6 @@
 #include <errno.h>
 #include "libc.h"
 
-char *__randname(char *);
-
 int __mkostemps(char *template, int len, int flags)
 {
        size_t l = strlen(template);
index 85764af7cd35daa720d41021dbc8bd2803e020e4..19d4014816f973b78f162c916e2a1e6e36b43436 100644 (file)
@@ -1,8 +1,6 @@
 #include <stdlib.h>
 #include "libc.h"
 
-int __mkostemps(char *, int, int);
-
 int mkstemp(char *template)
 {
        return __mkostemps(template, 0, 0);
index fda710b0d9edafc68ad2fef681e171ff87205452..f2ab1bd33d3a1d1d4a8c56f24a4df20e67a1a7d9 100644 (file)
@@ -2,8 +2,6 @@
 #include <stdlib.h>
 #include "libc.h"
 
-int __mkostemps(char *, int, int);
-
 int mkstemps(char *template, int len)
 {
        return __mkostemps(template, len, 0);
index 4ab0df2069ac6d0c685ea2265f15d40596392217..7b3d2648b20676eb25fd451ea26db93ef8ca8b65 100644 (file)
@@ -4,8 +4,6 @@
 #include <errno.h>
 #include <sys/stat.h>
 
-char *__randname(char *);
-
 char *mktemp(char *template)
 {
        size_t l = strlen(template);
index d2079c882199200641e201a23b78bf29a32d1805..229db31302451939c2fab4401fd9bcdb2a77128c 100644 (file)
@@ -5,9 +5,6 @@
 #include "syscall.h"
 #include "pthread_impl.h"
 
-int __pthread_setcancelstate(int, int *);
-int __clock_gettime(clockid_t, struct timespec *);
-
 int __timedwait_cp(volatile int *addr, int val,
        clockid_t clk, const struct timespec *at, int priv)
 {
index a7bc93532bc5e936395b8aec207eda9d12b9cccf..5ed30183dff17c4bc7af033ed8b90080f75760c0 100644 (file)
@@ -1,6 +1,5 @@
 #include <threads.h>
-
-int __pthread_once(once_flag *, void (*)(void));
+#include <pthread.h>
 
 void call_once(once_flag *flag, void (*func)(void))
 {
index 0ad061a3f9ec03ad1a8350cdf6e20b2dcbf21328..e76b5a81bd76cc73524f22ab89766bd4de8e9037 100644 (file)
@@ -1,8 +1,6 @@
 #include <threads.h>
 #include <pthread.h>
 
-int __private_cond_signal(pthread_cond_t *, int);
-
 int cnd_broadcast(cnd_t *c)
 {
        /* This internal function never fails, and always returns zero,
index 8165dae162e03697688e7b2f8a41c2fa169bc11b..02cdc6c60a2550104a0ef09c857205c293c80e10 100644 (file)
@@ -1,8 +1,6 @@
 #include <threads.h>
 #include <pthread.h>
 
-int __private_cond_signal(pthread_cond_t *, int);
-
 int cnd_signal(cnd_t *c)
 {
        /* This internal function never fails, and always returns zero,
index 7bfe1045c0a9e20bcf8ecd45b51b7e6c960e6caa..2802af522a50acb12721c377ddd14c7a6373d0ab 100644 (file)
@@ -2,8 +2,6 @@
 #include <pthread.h>
 #include <errno.h>
 
-int __pthread_cond_timedwait(pthread_cond_t *restrict, pthread_mutex_t *restrict, const struct timespec *restrict);
-
 int cnd_timedwait(cnd_t *restrict c, mtx_t *restrict m, const struct timespec *restrict ts)
 {
        int ret = __pthread_cond_timedwait((pthread_cond_t *)c, (pthread_mutex_t *)m, ts);
index d098053bad32ebc5158e0f6089f698a184f09438..d22c8cf448163f148b016bfd72f81047124a6673 100644 (file)
@@ -2,8 +2,6 @@
 #include <pthread.h>
 #include <errno.h>
 
-int __pthread_mutex_timedlock(pthread_mutex_t *restrict, const struct timespec *restrict);
-
 int mtx_timedlock(mtx_t *restrict m, const struct timespec *restrict ts)
 {
        int ret = __pthread_mutex_timedlock((pthread_mutex_t *)m, ts);
index 8d1fb07c0c9ccd81aa579ba65bed64fbaaed308f..40a8b8c2977212c3006b91f5072be3a514beb5b2 100644 (file)
@@ -1,8 +1,6 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-int __pthread_mutex_trylock(pthread_mutex_t *);
-
 int mtx_trylock(mtx_t *m)
 {
        if (m->_m_type == PTHREAD_MUTEX_NORMAL)
index ac91f993c69431630ceb597b7a50c821d089f41e..2e5c8cf6bf998f54ca42bc44fa3dda01e533b082 100644 (file)
@@ -1,8 +1,6 @@
 #include <threads.h>
 #include <pthread.h>
 
-int __pthread_mutex_unlock(pthread_mutex_t *);
-
 int mtx_unlock(mtx_t *mtx)
 {
        /* The only cases where pthread_mutex_unlock can return an
index 69f840fb4faee7d1f402771dba6f02b157a935c5..6bfab78f961f7dcd71c40da258065abc0b6bc44d 100644 (file)
@@ -1,7 +1,5 @@
 #include "pthread_impl.h"
 
-int __private_cond_signal(pthread_cond_t *, int);
-
 int pthread_cond_broadcast(pthread_cond_t *c)
 {
        if (!c->_c_shared) return __private_cond_signal(c, -1);
index 119c00abcd9904b46fa7eabbc6093dfb736df276..575ad54bc0509501068d9e90a22d16748d7312c2 100644 (file)
@@ -1,7 +1,5 @@
 #include "pthread_impl.h"
 
-int __private_cond_signal(pthread_cond_t *, int);
-
 int pthread_cond_signal(pthread_cond_t *c)
 {
        if (!c->_c_shared) return __private_cond_signal(c, 1);
index ed8569c27e4802df950a0ce29e2e4c7f8735934e..d15012406d6fd98b5e8f11029d319eea3eb29658 100644 (file)
@@ -1,10 +1,5 @@
 #include "pthread_impl.h"
 
-void __pthread_testcancel(void);
-int __pthread_mutex_lock(pthread_mutex_t *);
-int __pthread_mutex_unlock(pthread_mutex_t *);
-int __pthread_setcancelstate(int, int *);
-
 /*
  * struct waiter
  *
index dc869dc16d735c81a6edcf80df406771d8b9bb93..23dfe0ad5ecc185e88b8daf7bb782257cb16c5e7 100644 (file)
@@ -6,10 +6,6 @@
 #include <string.h>
 #include <stddef.h>
 
-void *__mmap(void *, size_t, int, int, int, off_t);
-int __munmap(void *, size_t);
-int __mprotect(void *, size_t, int);
-
 static void dummy_0()
 {
 }
index 9cee7a89c3f944b214d96c5f372c9c7942d60328..16b0552d6281a13d99101aed9a736da844d50d8d 100644 (file)
@@ -1,8 +1,6 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-int __pthread_join(pthread_t, void **);
-
 static int __pthread_detach(pthread_t t)
 {
        /* If the cas fails, detach state is either already-detached
index 551c367563aa86fc6b8e23be05936c034ba9595b..54d810398ab2fad4a997a797f2c5cbef6a2e41e9 100644 (file)
@@ -1,10 +1,6 @@
 #include "pthread_impl.h"
 #include <sys/mman.h>
 
-int __munmap(void *, size_t);
-void __pthread_testcancel(void);
-int __pthread_setcancelstate(int, int *);
-
 static int __pthread_timedjoin_np(pthread_t t, void **res, const struct timespec *at)
 {
        int state, cs, r = 0;
index d0c93cab50119feee0741b14006f346f000b87c6..638d4b8697d843afcb3e035cf6d2222bfb952dee 100644 (file)
@@ -1,7 +1,5 @@
 #include "pthread_impl.h"
 
-int __pthread_mutex_timedlock(pthread_mutex_t *restrict, const struct timespec *restrict);
-
 int __pthread_mutex_lock(pthread_mutex_t *m)
 {
        if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL
index d2bd196021d171540244a4cb3c8d09b8df58fd18..9867f3895f65962fe70281510e37b1eaa0b5d1f1 100644 (file)
@@ -1,7 +1,5 @@
 #include "pthread_impl.h"
 
-int __pthread_mutex_trylock(pthread_mutex_t *);
-
 int __pthread_mutex_timedlock(pthread_mutex_t *restrict m, const struct timespec *restrict at)
 {
        if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL
index dc0279e8a7003e0a51b4648e1ce94c7bdb75a2ff..1bd8020a7b7a544b15a9ad9bd99aae920cee57f9 100644 (file)
@@ -13,8 +13,6 @@
 #include <pthread.h>
 #include "libc.h"
 
-char *__shm_mapname(const char *, char *);
-
 static struct {
        ino_t ino;
        sem_t *sem;
index e03366952657117198219b49999d2b3985500fd3..76a683dbf87e71f2303497ba5a375dc10dbb1ccb 100644 (file)
@@ -1,8 +1,6 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-int __pthread_create(pthread_t *restrict, const pthread_attr_t *restrict, void *(*)(void *), void *restrict);
-
 int thrd_create(thrd_t *thr, thrd_start_t func, void *arg)
 {
        int ret = __pthread_create(thr, __ATTRP_C11_THREAD, (void *(*)(void *))func, arg);
index b66bd99695ca63da6a7f2cc9dbc3f42e88d2e255..9b291ae3db2de16b19c90f504c8e9e7102e10adb 100644 (file)
@@ -1,7 +1,6 @@
-#include "pthread_impl.h"
 #include <threads.h>
-
-_Noreturn void __pthread_exit(void *);
+#include <pthread.h>
+#include <stdint.h>
 
 _Noreturn void thrd_exit(int result)
 {
index ac6678939f6b3436818936eaf56b395479c4f3c2..0d5fd302d1810425a49f52fb3e8c7efe83f9e719 100644 (file)
@@ -1,7 +1,6 @@
 #include <stdint.h>
 #include <threads.h>
-
-int __pthread_join(thrd_t, void**);
+#include <pthread.h>
 
 int thrd_join(thrd_t t, int *res)
 {
index 251d22b9abe524e5e4ac4f9dd9f6a99850fc68e3..6d6ef96b4c9fb034777eb512462af4ec9c67d172 100644 (file)
@@ -1,6 +1,5 @@
 #include <threads.h>
-
-int __pthread_key_create(tss_t *, void (*)(void *));
+#include <pthread.h>
 
 int tss_create(tss_t *tss, tss_dtor_t dtor)
 {
index 35db1032dc4aad2e7a477ff6daabd1c3c44db811..6f51b07eb9e8f56f28ca68ee78378bc991939e9b 100644 (file)
@@ -1,6 +1,5 @@
 #include <threads.h>
-
-int __pthread_key_delete(tss_t k);
+#include <pthread.h>
 
 void tss_delete(tss_t key)
 {
index b91eb8edb986438c75152d737e6f4734b8e04fb1..750d1958f747b44049d7ced46ddb9f7741f61dcb 100644 (file)
@@ -3,8 +3,6 @@
 #include <sys/stat.h>
 #include "syscall.h"
 
-void *__mmap(void *, size_t, int, int, int, off_t);
-
 const char unsigned *__map_file(const char *pathname, size_t *size)
 {
        struct stat st;
index 814edcdf68f8ef91e372e1fe0e8d78af3e533e83..a2afe92a49a754c6aeacbf308e6402f9aa08b7c1 100644 (file)
@@ -3,6 +3,7 @@
 #include <limits.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sys/mman.h>
 #include "libc.h"
 
 long  __timezone = 0;
@@ -113,8 +114,6 @@ static size_t zi_dotprod(const unsigned char *z, const unsigned char *v, size_t
        return y;
 }
 
-int __munmap(void *, size_t);
-
 static void do_tzset()
 {
        char buf[NAME_MAX+25], *pathname=buf+24;
index 57d15fe0af4ca377b29e61f72a90435b1619ed3a..1febe54409e4c601849a6cf28c0f3cf16947737a 100644 (file)
@@ -1,7 +1,5 @@
 #include <time.h>
 
-char *__asctime_r(const struct tm *, char *);
-
 char *asctime(const struct tm *tm)
 {
        static char buf[26];
index d1639ab031f7dc283f5f7eafb797a1e84052abc3..af2618deb40641750798f19f740c41a9d508be42 100644 (file)
@@ -5,8 +5,6 @@
 #include "atomic.h"
 #include "libc.h"
 
-char *__nl_langinfo_l(nl_item, locale_t);
-
 char *__asctime_r(const struct tm *restrict tm, char *restrict buf)
 {
        if (snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
index c348e39836caec86425652d6e0e3259ff9c05a2c..6724012b92ef69b8dfa19e087b940aaf6a141e10 100644 (file)
@@ -1,8 +1,6 @@
 #include <time.h>
 #include <limits.h>
 
-int __clock_gettime(clockid_t, struct timespec *);
-
 clock_t clock()
 {
        struct timespec ts;
index 3791b24c663754717b36f630dd254b55f2c3064f..6320b6377e62310dfde727d165085e162480d7d2 100644 (file)
@@ -1,8 +1,6 @@
 #include "time_impl.h"
 #include <errno.h>
 
-struct tm *__gmtime_r(const time_t *restrict, struct tm *restrict);
-
 struct tm *gmtime(const time_t *t)
 {
        static struct tm tm;
index bb6718c33ff27afa636b6acfbfa89cb5840878f1..5210423230ca237de6cbaecbf666bcf73ac12af1 100644 (file)
@@ -1,7 +1,5 @@
 #include "time_impl.h"
 
-struct tm *__localtime_r(const time_t *restrict, struct tm *restrict);
-
 struct tm *localtime(const time_t *t)
 {
        static struct tm tm;
index ddb47772b64a456c5a7f4efe5e887029766caee0..ba18a27ca079a2948d116052a84a90c521025fc2 100644 (file)
@@ -9,8 +9,6 @@
 #include "libc.h"
 #include "time_impl.h"
 
-char *__nl_langinfo_l(nl_item, locale_t);
-
 static int is_leap(int y)
 {
        /* Avoid overflow */
@@ -45,8 +43,6 @@ static int week_num(const struct tm *tm)
        return val;
 }
 
-size_t __strftime_l(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t);
-
 const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm *tm, locale_t loc, int pad)
 {
        nl_item item;
index 4b95e7527d440b05b55ca100b465cd79feff652e..ad0480f9ea942bcab3cd2257a61fbd4637e161d7 100644 (file)
@@ -1,8 +1,6 @@
 #include <time.h>
 #include "syscall.h"
 
-int __clock_gettime(clockid_t, struct timespec *);
-
 time_t time(time_t *t)
 {
        struct timespec ts;
index 5cc2fe2f1d0ad41559f18ad93f04d6747efddb04..50afe156a71eee324a061b403d302e05bb6e31ed 100644 (file)
@@ -7,5 +7,4 @@ long long __tm_to_secs(const struct tm *);
 const char *__tm_to_tzname(const struct tm *);
 int __secs_to_tm(long long, struct tm *);
 void __secs_to_zone(long long, int, int *, long *, long *, const char **);
-const unsigned char *__map_file(const char *, size_t *);
 const char *__strftime_fmt_1(char (*)[100], size_t *, int, const struct tm *, locale_t, int);
index 03c5a77b7b09965bb64dee426062a5671e3fdd77..40ea9c1c32682d25b9f51279588d73f4f170e2a0 100644 (file)
@@ -1,7 +1,5 @@
 #include <time.h>
 
-int __clock_gettime(clockid_t, struct timespec *);
-
 /* There is no other implemented value than TIME_UTC; all other values
  * are considered erroneous. */
 int timespec_get(struct timespec * ts, int base)