X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=src%2Fcoloredstderr.c;h=3fe2053ce251bb33fc06dd9b59397212466a75c6;hb=04334418fcce94a1b528bd4c935d8126876bda04;hp=7c4a5f5010cc42163ca10e8de75a34cb1ea32da1;hpb=6d6ad4423ae87771bd44f90006a648ec03931961;p=coloredstderr%2Fcoloredstderr.git diff --git a/src/coloredstderr.c b/src/coloredstderr.c index 7c4a5f5..3fe2053 100644 --- a/src/coloredstderr.c +++ b/src/coloredstderr.c @@ -507,14 +507,14 @@ int execve(char const *filename, char * const argv[], char * const env[]) { /* Count arguments. */ \ size_t count = 1; /* arg */ \ va_start(ap, arg); \ - while (va_arg(ap, char const *)) { \ + while (va_arg(ap, char *)) { \ count++; \ } \ va_end(ap); \ \ /* Copy varargs. */ \ char *args[count + 1 /* terminating NULL */]; \ - args[0] = (char *)arg; \ + args[0] = (char *)arg; /* there's no other way around the cast */ \ \ size_t i = 1; \ va_start(ap, arg); \ @@ -531,23 +531,24 @@ int execve(char const *filename, char * const argv[], char * const env[]) { int execl(char const *path, char const *arg, ...) { EXECL_COPY_VARARGS(args); - update_environment(); + /* execv() updates the environment. */ return execv(path, args); } - int execlp(char const *file, char const *arg, ...) { EXECL_COPY_VARARGS(args); - update_environment(); + /* execvp() updates the environment. */ return execvp(file, args); } - int execle(char const *path, char const *arg, ... /*, char * const envp[] */) { + char * const *envp; + EXECL_COPY_VARARGS_START(args); /* Get envp[] located after arguments. */ - char * const *envp = va_arg(ap, char * const *); + envp = va_arg(ap, char * const *); EXECL_COPY_VARARGS_END(args); + /* execve() updates the environment. */ return execve(path, args, envp); } @@ -573,6 +574,7 @@ int execvpe(char const *file, char * const argv[], char * const envp[]) { /* Fake the environment so we can reuse execvp(). */ environ = (char **)envp; + /* execvp() updates the environment. */ return execvp(file, argv); } #endif