X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fruncmd.c;h=7f373877086137ed93822e24b39915c94ba72bc9;hb=2bc83c3abf7a59da99f7f713927ec36abb994093;hp=c7fe85c47502e57404469c1b728c8ee12c78123e;hpb=cad27e97e6370f96903d42aaf345c099af0a03bd;p=libucw.git diff --git a/lib/runcmd.c b/lib/runcmd.c index c7fe85c4..7f373877 100644 --- a/lib/runcmd.c +++ b/lib/runcmd.c @@ -18,17 +18,20 @@ void NONRET exec_command_v(byte *cmd, va_list args) { - va_list cargs = args; + va_list cargs; + va_copy(cargs, args); int cnt = 2; byte *arg; while (arg = va_arg(cargs, byte *)) cnt++; + va_end(cargs); char **argv = alloca(sizeof(byte *) * cnt); argv[0] = cmd; cnt = 1; - cargs = args; + va_copy(cargs, args); while (arg = va_arg(cargs, byte *)) argv[cnt++] = arg; + va_end(cargs); argv[cnt] = NULL; execv(cmd, argv); byte echo[256]; @@ -72,7 +75,6 @@ echo_command_v(byte *buf, int size, byte *cmd, va_list args) byte *limit = buf + size - 4; byte *p = buf; byte *arg = cmd; - va_list cargs = args; do { int l = strlen(arg); @@ -87,7 +89,7 @@ echo_command_v(byte *buf, int size, byte *cmd, va_list args) memcpy(p, arg, l); p += l; } - while (arg = va_arg(cargs, byte *)); + while (arg = va_arg(args, byte *)); *p = 0; }