diff options
author | Ron Yorston <rmy@pobox.com> | 2017-08-29 21:57:08 +0100 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2017-08-30 17:17:14 +0100 |
commit | 8731aec88d8efced67084446dea459bfcc3af1aa (patch) | |
tree | ea54f8432123cc4acdbe8f7da69631e7a1f72cb9 | |
parent | 8cd264102aa2d954be9bbdbf84d3f4ab75189904 (diff) | |
download | busybox-w32-8731aec88d8efced67084446dea459bfcc3af1aa.tar.gz busybox-w32-8731aec88d8efced67084446dea459bfcc3af1aa.tar.bz2 busybox-w32-8731aec88d8efced67084446dea459bfcc3af1aa.zip |
win32: further minor code shrink
Remove the check for argv being NULL in spawnveq. It shouldn't
ever succeed.
-rw-r--r-- | win32/process.c | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/win32/process.c b/win32/process.c index 07c2e49df..192eeab56 100644 --- a/win32/process.c +++ b/win32/process.c | |||
@@ -192,27 +192,24 @@ static intptr_t | |||
192 | spawnveq(int mode, const char *path, char *const *argv, char *const *env) | 192 | spawnveq(int mode, const char *path, char *const *argv, char *const *env) |
193 | { | 193 | { |
194 | char **new_argv; | 194 | char **new_argv; |
195 | int i, argc = 0; | 195 | int i, argc = -1; |
196 | intptr_t ret; | 196 | intptr_t ret; |
197 | 197 | ||
198 | if (!argv) { | 198 | while (argv[++argc]) |
199 | char *const empty_argv[] = { (char *)path, NULL }; | 199 | ; |
200 | return spawnve(mode, path, empty_argv, env); | ||
201 | } | ||
202 | |||
203 | 200 | ||
204 | while (argv[argc]) | 201 | new_argv = xmalloc(sizeof(*argv)*(argc+1)); |
205 | argc++; | ||
206 | |||
207 | new_argv = malloc(sizeof(*argv)*(argc+1)); | ||
208 | for (i = 0;i < argc;i++) | 202 | for (i = 0;i < argc;i++) |
209 | new_argv[i] = quote_arg(argv[i]); | 203 | new_argv[i] = quote_arg(argv[i]); |
210 | new_argv[argc] = NULL; | 204 | new_argv[argc] = NULL; |
205 | |||
211 | ret = spawnve(mode, path, new_argv, env); | 206 | ret = spawnve(mode, path, new_argv, env); |
207 | |||
212 | for (i = 0;i < argc;i++) | 208 | for (i = 0;i < argc;i++) |
213 | if (new_argv[i] != argv[i]) | 209 | if (new_argv[i] != argv[i]) |
214 | free(new_argv[i]); | 210 | free(new_argv[i]); |
215 | free(new_argv); | 211 | free(new_argv); |
212 | |||
216 | return ret; | 213 | return ret; |
217 | } | 214 | } |
218 | 215 | ||
@@ -234,15 +231,15 @@ mingw_spawn_interpreter(int mode, const char *prog, char *const *argv, char *con | |||
234 | char *int_name, *opts; | 231 | char *int_name, *opts; |
235 | char *int_path = parse_interpreter(prog, &int_name, &opts); | 232 | char *int_path = parse_interpreter(prog, &int_name, &opts); |
236 | char **new_argv; | 233 | char **new_argv; |
237 | int argc = 0; | 234 | int argc = -1; |
238 | char *fullpath = NULL; | 235 | char *fullpath = NULL; |
239 | 236 | ||
240 | if (!int_path) | 237 | if (!int_path) |
241 | return spawnveq(mode, prog, argv, envp); | 238 | return spawnveq(mode, prog, argv, envp); |
242 | 239 | ||
243 | nopts = opts != NULL; | 240 | nopts = opts != NULL; |
244 | while (argv[argc]) | 241 | while (argv[++argc]) |
245 | argc++; | 242 | ; |
246 | 243 | ||
247 | new_argv = xmalloc(sizeof(*argv)*(argc+nopts+2)); | 244 | new_argv = xmalloc(sizeof(*argv)*(argc+nopts+2)); |
248 | new_argv[1] = opts; | 245 | new_argv[1] = opts; |
@@ -325,10 +322,7 @@ mingw_execvp(const char *cmd, char *const *argv) | |||
325 | int | 322 | int |
326 | mingw_execve(const char *cmd, char *const *argv, char *const *envp) | 323 | mingw_execve(const char *cmd, char *const *argv, char *const *envp) |
327 | { | 324 | { |
328 | int ret; | 325 | int ret = (int)mingw_spawn_interpreter(P_WAIT, cmd, argv, envp); |
329 | int mode = P_WAIT; | ||
330 | |||
331 | ret = (int)mingw_spawn_interpreter(mode, cmd, argv, envp); | ||
332 | if (ret != -1) | 326 | if (ret != -1) |
333 | exit(ret); | 327 | exit(ret); |
334 | return ret; | 328 | return ret; |