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; |
