/*
- * Sherlock Library -- Running of Commands
+ * UCW Library -- Running of Commands
*
* (c) 2004 Martin Mares <mj@ucw.cz>
*
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];
byte *limit = buf + size - 4;
byte *p = buf;
byte *arg = cmd;
- va_list cargs = args;
do
{
int l = strlen(arg);
memcpy(p, arg, l);
p += l;
}
- while (arg = va_arg(cargs, byte *));
+ while (arg = va_arg(args, byte *));
*p = 0;
}