On a recent version of MSYS2, I see these compilation errors: ../../gllib/execl.c:75:19: error: passing argument 2 of 'rpl_execv' from incompatible pointer type [-Wincompatible-pointer-types] ../../gllib/execle.c:76:20: error: passing argument 2 of 'rpl_execve' from incompatible pointer type [-Wincompatible-pointer-types] ../../gllib/execlp.c:75:20: error: passing argument 2 of 'rpl_execvp' from incompatible pointer type [-Wincompatible-pointer-types]
They were warnings with previous gcc releases. Now they are errors. Casts are necessary to work around the broken declarations of execv*() in POSIX. 2024-12-22 Bruno Haible <br...@clisp.org> execl, execle, execlp: Fix compilation error with gcc 14. * lib/execl.c (execl): Cast second argument of execv. * lib/execle.c (execle): Cast second argument of execve. * lib/execlp.c (execlp): Cast second argument of execvp. diff --git a/lib/execl.c b/lib/execl.c index 46818b111f..5ddad931e4 100644 --- a/lib/execl.c +++ b/lib/execl.c @@ -72,7 +72,7 @@ execl (const char *program, const char *arg0, ...) } /* Invoke execv. */ - execv (program, argv); + execv (program, (char * const *) argv); /* If execv returned, it must have failed. */ int saved_errno = errno; diff --git a/lib/execle.c b/lib/execle.c index 3a93a694ea..fb4917771e 100644 --- a/lib/execle.c +++ b/lib/execle.c @@ -73,7 +73,7 @@ execle (const char *program, const char *arg0, ...) va_end (args); /* Invoke execve. */ - execve (program, argv, env); + execve (program, (char * const *) argv, env); /* If execve returned, it must have failed. */ int saved_errno = errno; diff --git a/lib/execlp.c b/lib/execlp.c index 9c18af332f..2c1b5799dd 100644 --- a/lib/execlp.c +++ b/lib/execlp.c @@ -72,7 +72,7 @@ execlp (const char *program, const char *arg0, ...) } /* Invoke execvp. */ - execvp (program, argv); + execvp (program, (char * const *) argv); /* If execvp returned, it must have failed. */ int saved_errno = errno;