aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2018-10-26 09:28:33 +0100
committerRon Yorston <rmy@pobox.com>2018-10-26 09:28:33 +0100
commit3b4b844e05b5ee2517311c27e1c8bab8df0e0808 (patch)
tree2c689cde1e381d3b6f5b2812540c1acf06374bb0
parent99821f00530766e658060e90c51b21ff0eed1226 (diff)
downloadbusybox-w32-3b4b844e05b5ee2517311c27e1c8bab8df0e0808.tar.gz
busybox-w32-3b4b844e05b5ee2517311c27e1c8bab8df0e0808.tar.bz2
busybox-w32-3b4b844e05b5ee2517311c27e1c8bab8df0e0808.zip
win32: use string_array_len to obtain size of argv array
Saves 16 bytes.
-rw-r--r--win32/process.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/win32/process.c b/win32/process.c
index 74f949d07..e074d44e4 100644
--- a/win32/process.c
+++ b/win32/process.c
@@ -205,7 +205,7 @@ spawnveq(int mode, const char *path, char *const *argv, char *const *env)
205{ 205{
206 char **new_argv; 206 char **new_argv;
207 char *new_path = NULL; 207 char *new_path = NULL;
208 int i, argc = -1; 208 int i, argc;
209 intptr_t ret; 209 intptr_t ret;
210 struct stat st; 210 struct stat st;
211 211
@@ -225,9 +225,7 @@ spawnveq(int mode, const char *path, char *const *argv, char *const *env)
225 return -1; 225 return -1;
226 } 226 }
227 227
228 while (argv[++argc]) 228 argc = string_array_len((char **)argv);
229 ;
230
231 new_argv = xmalloc(sizeof(*argv)*(argc+1)); 229 new_argv = xmalloc(sizeof(*argv)*(argc+1));
232 for (i = 0;i < argc;i++) 230 for (i = 0;i < argc;i++)
233 new_argv[i] = quote_arg(argv[i]); 231 new_argv[i] = quote_arg(argv[i]);
@@ -298,16 +296,14 @@ mingw_spawn_interpreter(int mode, const char *prog, char *const *argv, char *con
298 int nopts; 296 int nopts;
299 interp_t interp; 297 interp_t interp;
300 char **new_argv; 298 char **new_argv;
301 int argc = -1; 299 int argc;
302 char *fullpath = NULL; 300 char *fullpath = NULL;
303 301
304 if (!parse_interpreter(prog, &interp)) 302 if (!parse_interpreter(prog, &interp))
305 return spawnveq(mode, prog, argv, envp); 303 return spawnveq(mode, prog, argv, envp);
306 304
307 nopts = interp.opts != NULL; 305 nopts = interp.opts != NULL;
308 while (argv[++argc]) 306 argc = string_array_len((char **)argv);
309 ;
310
311 new_argv = xmalloc(sizeof(*argv)*(argc+nopts+2)); 307 new_argv = xmalloc(sizeof(*argv)*(argc+nopts+2));
312 new_argv[1] = interp.opts; 308 new_argv[1] = interp.opts;
313 new_argv[nopts+1] = (char *)prog; /* pass absolute path */ 309 new_argv[nopts+1] = (char *)prog; /* pass absolute path */