From 5d406546f1e167fc5c03e436202f097855bfde66 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Sun, 22 Dec 2024 04:38:48 +0100
Subject: [PATCH] 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.
---
 ChangeLog    | 7 +++++++
 lib/execl.c  | 2 +-
 lib/execle.c | 2 +-
 lib/execlp.c | 2 +-
 4 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4121ec0018..644fc2eeda 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2024-12-22  Bruno Haible  <bruno@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.
+
 2024-12-21  Bruno Haible  <bruno@clisp.org>
 
 	crc-x86_64: Fix compilation error with clang in a simpler way.
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;
-- 
2.39.5