diff options
author | Rich Felker <dalias@aerifal.cx> | 2013-02-17 14:24:39 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2013-02-17 14:24:39 -0500 |
commit | 23ccb80fcb325bd89e40508a57ff4ccedea6926d (patch) | |
tree | ff3bc4076b971e615c7107cf6827ba694f8ae7ec /src | |
parent | cac872957e8c9e3fc13904c1c55eee0253ec1382 (diff) | |
download | musl-23ccb80fcb325bd89e40508a57ff4ccedea6926d.zip musl-23ccb80fcb325bd89e40508a57ff4ccedea6926d.tar.gz musl-23ccb80fcb325bd89e40508a57ff4ccedea6926d.tar.bz2 |
consistently use the internal name __environ for environ
patch by Jens Gustedt.
previously, the intended policy was to use __environ in code that must
conform to the ISO C namespace requirements, and environ elsewhere.
this policy was not followed in practice anyway, making things
confusing. on top of that, Jens reported that certain combinations of
link-time optimization options were breaking with the inconsistent
references; this seems to be a compiler or linker bug, but having it
go away is a nice side effect of the changes made here.
Diffstat (limited to 'src')
-rw-r--r-- | src/internal/libc.h | 1 | ||||
-rw-r--r-- | src/process/execvp.c | 4 | ||||
-rw-r--r-- | src/process/system.c | 4 |
3 files changed, 4 insertions, 5 deletions
diff --git a/src/internal/libc.h b/src/internal/libc.h index 5089114..c9416f0 100644 --- a/src/internal/libc.h +++ b/src/internal/libc.h @@ -57,7 +57,6 @@ void __synccall(void (*)(void *), void *); int __setxid(int, int, int, int); extern char **__environ; -#define environ __environ #undef weak_alias #define weak_alias(old, new) \ diff --git a/src/process/execvp.c b/src/process/execvp.c index 682680d..0a33e42 100644 --- a/src/process/execvp.c +++ b/src/process/execvp.c @@ -4,7 +4,7 @@ #include <errno.h> #include <limits.h> -extern char **environ; +extern char **__environ; int __execvpe(const char *file, char *const argv[], char *const envp[]) { @@ -45,5 +45,5 @@ int __execvpe(const char *file, char *const argv[], char *const envp[]) int execvp(const char *file, char *const argv[]) { - return __execvpe(file, argv, environ); + return __execvpe(file, argv, __environ); } diff --git a/src/process/system.c b/src/process/system.c index 0aa34cd..4232bef 100644 --- a/src/process/system.c +++ b/src/process/system.c @@ -13,7 +13,7 @@ static void dummy_0() weak_alias(dummy_0, __acquire_ptc); weak_alias(dummy_0, __release_ptc); -extern char **environ; +extern char **__environ; int system(const char *cmd) { @@ -40,7 +40,7 @@ int system(const char *cmd) posix_spawnattr_setsigdefault(&attr, &reset); posix_spawnattr_setflags(&attr, POSIX_SPAWN_SETSIGDEF|POSIX_SPAWN_SETSIGMASK); ret = posix_spawn(&pid, "/bin/sh", 0, &attr, - (char *[]){"sh", "-c", (char *)cmd, 0}, environ); + (char *[]){"sh", "-c", (char *)cmd, 0}, __environ); posix_spawnattr_destroy(&attr); if (!ret) while (waitpid(pid, &status, 0)<0 && errno == EINTR); |