use vstrcollect

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7785 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
2000-01-09 10:58:51 +00:00
parent eaf5a7aed0
commit e1b38a9f91

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 1999 Kungliga Tekniska H<>gskolan
* Copyright (c) 1998 - 2000 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -113,27 +113,6 @@ simple_execve(const char *file, char *const args[], char *const envp[])
}
}
static char **
collect_args(va_list *ap)
{
char **argv = NULL;
int argc = 0, i = 0;
do {
if(i == argc) {
/* realloc argv */
char **tmp = realloc(argv, (argc + 5) * sizeof(*argv));
if(tmp == NULL) {
errno = ENOMEM;
return NULL;
}
argv = tmp;
argc += 5;
}
argv[i++] = va_arg(*ap, char*);
} while(argv[i - 1] != NULL);
return argv;
}
int
simple_execlp(const char *file, ...)
{
@@ -142,7 +121,7 @@ simple_execlp(const char *file, ...)
int ret;
va_start(ap, file);
argv = collect_args(&ap);
argv = vstrcollect(&ap);
va_end(ap);
if(argv == NULL)
return -1;
@@ -160,7 +139,7 @@ simple_execle(const char *file, ... /* ,char *const envp[] */)
int ret;
va_start(ap, file);
argv = collect_args(&ap);
argv = vstrcollect(&ap);
envp = va_arg(ap, char **);
va_end(ap);
if(argv == NULL)