diff options
Diffstat (limited to 'lib/utils_cmd.c')
-rw-r--r-- | lib/utils_cmd.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/utils_cmd.c b/lib/utils_cmd.c index e10ab91..0c853dc 100644 --- a/lib/utils_cmd.c +++ b/lib/utils_cmd.c | |||
@@ -48,6 +48,9 @@ | |||
48 | # include <sys/wait.h> | 48 | # include <sys/wait.h> |
49 | #endif | 49 | #endif |
50 | 50 | ||
51 | /* used in _cmd_open to pass the environment to commands */ | ||
52 | extern char **environ; | ||
53 | |||
51 | /** macros **/ | 54 | /** macros **/ |
52 | #ifndef WEXITSTATUS | 55 | #ifndef WEXITSTATUS |
53 | # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) | 56 | # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) |
@@ -122,7 +125,6 @@ cmd_init (void) | |||
122 | static int | 125 | static int |
123 | _cmd_open (char *const *argv, int *pfd, int *pfderr) | 126 | _cmd_open (char *const *argv, int *pfd, int *pfderr) |
124 | { | 127 | { |
125 | char *env[2]; | ||
126 | pid_t pid; | 128 | pid_t pid; |
127 | #ifdef RLIMIT_CORE | 129 | #ifdef RLIMIT_CORE |
128 | struct rlimit limit; | 130 | struct rlimit limit; |
@@ -137,8 +139,7 @@ _cmd_open (char *const *argv, int *pfd, int *pfderr) | |||
137 | if (!_cmd_pids) | 139 | if (!_cmd_pids) |
138 | CMD_INIT; | 140 | CMD_INIT; |
139 | 141 | ||
140 | env[0] = strdup ("LC_ALL=C"); | 142 | setenv("LC_ALL", "C", 1); |
141 | env[1] = '\0'; | ||
142 | 143 | ||
143 | if (pipe (pfd) < 0 || pipe (pfderr) < 0 || (pid = fork ()) < 0) | 144 | if (pipe (pfd) < 0 || pipe (pfderr) < 0 || (pid = fork ()) < 0) |
144 | return -1; /* errno set by the failing function */ | 145 | return -1; /* errno set by the failing function */ |
@@ -169,7 +170,7 @@ _cmd_open (char *const *argv, int *pfd, int *pfderr) | |||
169 | if (_cmd_pids[i] > 0) | 170 | if (_cmd_pids[i] > 0) |
170 | close (i); | 171 | close (i); |
171 | 172 | ||
172 | execve (argv[0], argv, env); | 173 | execve (argv[0], argv, environ); |
173 | _exit (STATE_UNKNOWN); | 174 | _exit (STATE_UNKNOWN); |
174 | } | 175 | } |
175 | 176 | ||