mirror of
https://github.com/fluencelabs/musl
synced 2025-06-27 13:41:57 +00:00
correct variadic prototypes for execl* family
the old versions worked, but conflicted with programs which declared their own prototypes and generated warnings with some versions of gcc.
This commit is contained in:
@ -1,18 +1,19 @@
|
||||
#include <unistd.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
int execl(const char *path, ...)
|
||||
int execl(const char *path, const char *argv0, ...)
|
||||
{
|
||||
int argc;
|
||||
va_list ap;
|
||||
va_start(ap, path);
|
||||
for (argc=0; va_arg(ap, const char *); argc++);
|
||||
va_start(ap, argv0);
|
||||
for (argc=1; va_arg(ap, const char *); argc++);
|
||||
va_end(ap);
|
||||
{
|
||||
int i;
|
||||
char *argv[argc+1];
|
||||
va_start(ap, path);
|
||||
for (i=0; i<argc; i++)
|
||||
va_start(ap, argv0);
|
||||
argv[0] = (char *)argv0;
|
||||
for (i=1; i<argc; i++)
|
||||
argv[i] = va_arg(ap, char *);
|
||||
argv[i] = NULL;
|
||||
return execv(path, argv);
|
||||
|
@ -1,19 +1,20 @@
|
||||
#include <unistd.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
int execle(const char *path, ...)
|
||||
int execle(const char *path, const char *argv0, ...)
|
||||
{
|
||||
int argc;
|
||||
va_list ap;
|
||||
va_start(ap, path);
|
||||
for (argc=0; va_arg(ap, const char *); argc++);
|
||||
va_start(ap, argv0);
|
||||
for (argc=1; va_arg(ap, const char *); argc++);
|
||||
va_end(ap);
|
||||
{
|
||||
int i;
|
||||
char *argv[argc+1];
|
||||
char **envp;
|
||||
va_start(ap, path);
|
||||
for (i=0; i<argc; i++)
|
||||
va_start(ap, argv0);
|
||||
argv[0] = (char *)argv0;
|
||||
for (i=1; i<argc; i++)
|
||||
argv[i] = va_arg(ap, char *);
|
||||
argv[i] = NULL;
|
||||
envp = va_arg(ap, char **);
|
||||
|
@ -1,18 +1,19 @@
|
||||
#include <unistd.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
int execlp(const char *file, ...)
|
||||
int execlp(const char *file, const char *argv0, ...)
|
||||
{
|
||||
int argc;
|
||||
va_list ap;
|
||||
va_start(ap, file);
|
||||
for (argc=0; va_arg(ap, const char *); argc++);
|
||||
va_start(ap, argv0);
|
||||
for (argc=1; va_arg(ap, const char *); argc++);
|
||||
va_end(ap);
|
||||
{
|
||||
int i;
|
||||
char *argv[argc+1];
|
||||
va_start(ap, file);
|
||||
for (i=0; i<argc; i++)
|
||||
va_start(ap, argv0);
|
||||
argv[0] = (char *)argv0;
|
||||
for (i=1; i<argc; i++)
|
||||
argv[i] = va_arg(ap, char *);
|
||||
argv[i] = NULL;
|
||||
return execvp(file, argv);
|
||||
|
Reference in New Issue
Block a user