about summary refs log tree commit diff
path: root/hurd/hurd.h
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2018-01-09 01:36:58 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-01-09 01:37:34 +0100
commit311ba8dc4416467947eff2ab327854f124226309 (patch)
treead9a00d6a87de80ddc241b60b2d52aad971fa10e /hurd/hurd.h
parentd7ff3f11b64a28273285d341f795217bbf18ac9c (diff)
downloadglibc-311ba8dc4416467947eff2ab327854f124226309.tar.gz
glibc-311ba8dc4416467947eff2ab327854f124226309.tar.xz
glibc-311ba8dc4416467947eff2ab327854f124226309.zip
hurd: Use the new file_exec_paths RPC
From: Emilio Pozuelo Monfort <pochu27@gmail.com>
From: Svante Signell <svante.signell@gmail.com>

Pass the file paths of executable to the exec server, both relative and
absolute, which exec needs to properly execute and avertise #!-scripts.
Previously, the exec server tried to guess the name from argv[0] but argv[0]
only contains the executable name by convention.

	* hurd/hurdexec.c (_hurd_exec): Deprecate function.
	(_hurd_exec_paths): New function.
	* hurd/hurd.h (_hurd_exec): Deprecate function.
	(_hurd_exec_paths): Declare function.
	* hurd/Versions: Export _hurd_exec_paths.
	* sysdeps/mach/hurd/execve.c: Include <stdlib.h> and <stdio.h>
	(__execve): Use __getcwd to build absolute path, and use
	_hurd_exec_paths instead of _hurd_exec.
	* sysdeps/mach/hurd/spawni.c: Likewise.
	* sysdeps/mach/hurd/fexecve.c: Use _hurd_exec_paths instead of
	_hurd_exec.
Diffstat (limited to 'hurd/hurd.h')
-rw-r--r--hurd/hurd.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/hurd/hurd.h b/hurd/hurd.h
index a3d534a35a..7cf23b5598 100644
--- a/hurd/hurd.h
+++ b/hurd/hurd.h
@@ -240,12 +240,21 @@ extern FILE *fopenport (io_t port, const char *mode);
 extern FILE *__fopenport (io_t port, const char *mode);
 
 
-/* Execute a file, replacing TASK's current program image.  */
+/* Deprecated: use _hurd_exec_paths instead.  */
 
 extern error_t _hurd_exec (task_t task,
 			   file_t file,
 			   char *const argv[],
-			   char *const envp[]);
+			   char *const envp[]) __attribute_deprecated__;
+
+/* Execute a file, replacing TASK's current program image.  */
+
+extern error_t _hurd_exec_paths (task_t task,
+				 file_t file,
+				 const char *path,
+				 const char *abspath,
+				 char *const argv[],
+				 char *const envp[]);
 
 
 /* Inform the proc server we have exited with STATUS, and kill the