summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-02-17 14:24:39 -0500
committerRich Felker <dalias@aerifal.cx>2013-02-17 14:24:39 -0500
commit23ccb80fcb325bd89e40508a57ff4ccedea6926d (patch)
treeff3bc4076b971e615c7107cf6827ba694f8ae7ec
parentcac872957e8c9e3fc13904c1c55eee0253ec1382 (diff)
downloadmusl-23ccb80fcb325bd89e40508a57ff4ccedea6926d.tar.gz
musl-23ccb80fcb325bd89e40508a57ff4ccedea6926d.tar.bz2
musl-23ccb80fcb325bd89e40508a57ff4ccedea6926d.tar.xz
musl-23ccb80fcb325bd89e40508a57ff4ccedea6926d.zip
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.
-rw-r--r--src/internal/libc.h1
-rw-r--r--src/process/execvp.c4
-rw-r--r--src/process/system.c4
3 files changed, 4 insertions, 5 deletions
diff --git a/src/internal/libc.h b/src/internal/libc.h
index 50891148..c9416f07 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 682680dd..0a33e42d 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 0aa34cd0..4232bef0 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);