diff src/sysdep.c @ 82:6a378aca36af r20-0b91

Import from CVS: tag r20-0b91
author cvs
date Mon, 13 Aug 2007 09:07:36 +0200
parents c7528f8e288d
children 4be1180a9e89
line wrap: on
line diff
--- a/src/sysdep.c	Mon Aug 13 09:06:45 2007 +0200
+++ b/src/sysdep.c	Mon Aug 13 09:07:36 2007 +0200
@@ -3240,13 +3240,19 @@
 
 #ifdef ENCAPSULATE_EXECVP
 int
-sys_execvp (CONST char *path, char * CONST argv[])
+sys_execvp (CONST char *path, char * CONST * argv)
 {
-  int i;
+  int i, argc;
+  CONST char ** new_argv;
+  
   PATHNAME_CONVERT_OUT (path);
-  for (i = 0; argv[i]; i++)
-    PATHNAME_CONVERT_OUT (argv[i]);
-  return execvp (path, argv);
+  for (argc = 0; argv[argc]; argc++)
+    ;
+  new_argv = (CONST char **) alloca ( (argc + 1) * sizeof (* new_argv));
+  for (i = 0; i < argc; i++)
+    GET_C_CHARPTR_EXT_FILENAME_DATA_ALLOCA (argv[i], new_argv[i]);
+  new_argv[argc] = NULL;
+  return execvp (path, (char **) new_argv);
 }
 #endif /* ENCAPSULATE_EXECVP */