use vstrcollect
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7785 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -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)
|
||||
|
Reference in New Issue
Block a user