From 13d1afa46f8098df290008c681816c9eb89ffbdb Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Mon, 10 Sep 2018 23:26:40 -0400 Subject: overhaul internally-public declarations using wrapper headers 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. --- src/env/__libc_start_main.c | 3 +-- src/env/clearenv.c | 1 + src/env/getenv.c | 3 +-- src/env/putenv.c | 3 +-- src/env/setenv.c | 3 --- src/env/unsetenv.c | 3 +-- 6 files changed, 5 insertions(+), 11 deletions(-) (limited to 'src/env') diff --git a/src/env/__libc_start_main.c b/src/env/__libc_start_main.c index c1b0669..58da9e8 100644 --- a/src/env/__libc_start_main.c +++ b/src/env/__libc_start_main.c @@ -2,12 +2,11 @@ #include #include #include +#include #include "syscall.h" #include "atomic.h" #include "libc.h" -void __init_tls(size_t *); - static void dummy(void) {} weak_alias(dummy, _init); diff --git a/src/env/clearenv.c b/src/env/clearenv.c index da18775..2e275b4 100644 --- a/src/env/clearenv.c +++ b/src/env/clearenv.c @@ -1,5 +1,6 @@ #define _GNU_SOURCE #include +#include #include "libc.h" static void dummy(char *old, char *new) {} diff --git a/src/env/getenv.c b/src/env/getenv.c index cf34672..f279779 100644 --- a/src/env/getenv.c +++ b/src/env/getenv.c @@ -1,9 +1,8 @@ #include #include +#include #include "libc.h" -char *__strchrnul(const char *, int); - char *getenv(const char *name) { size_t l = __strchrnul(name, '=') - name; diff --git a/src/env/putenv.c b/src/env/putenv.c index fa4a4dd..20f9602 100644 --- a/src/env/putenv.c +++ b/src/env/putenv.c @@ -1,9 +1,8 @@ #include #include +#include #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/env/setenv.c b/src/env/setenv.c index a7dd2b6..c5226b6 100644 --- a/src/env/setenv.c +++ b/src/env/setenv.c @@ -2,9 +2,6 @@ #include #include -char *__strchrnul(const char *, int); -int __putenv(char *, size_t, char *); - void __env_rm_add(char *old, char *new) { static char **env_alloced; diff --git a/src/env/unsetenv.c b/src/env/unsetenv.c index 8630e2d..471219e 100644 --- a/src/env/unsetenv.c +++ b/src/env/unsetenv.c @@ -1,10 +1,9 @@ #include #include #include +#include #include "libc.h" -char *__strchrnul(const char *, int); - static void dummy(char *old, char *new) {} weak_alias(dummy, __env_rm_add); -- cgit v1.1