diff options
Diffstat (limited to 'sysdeps/mach/hurd/execve.c')
-rw-r--r-- | sysdeps/mach/hurd/execve.c | 44 |
1 files changed, 1 insertions, 43 deletions
diff --git a/sysdeps/mach/hurd/execve.c b/sysdeps/mach/hurd/execve.c index 3e49fa570b..071f879fad 100644 --- a/sysdeps/mach/hurd/execve.c +++ b/sysdeps/mach/hurd/execve.c @@ -26,49 +26,7 @@ int __execve (const char *file_name, char *const argv[], char *const envp[]) { - error_t err; - char *concat_name = NULL; - const char *abs_path; - - file_t file = __file_name_lookup (file_name, O_EXEC, 0); - if (file == MACH_PORT_NULL) - return -1; - - if (file_name[0] == '/') - { - /* Already an absolute path */ - abs_path = file_name; - } - else - { - /* Relative path */ - char *cwd = __getcwd (NULL, 0); - if (cwd == NULL) - { - __mach_port_deallocate (__mach_task_self (), file); - return -1; - } - - int res = __asprintf (&concat_name, "%s/%s", cwd, file_name); - free (cwd); - if (res == -1) - { - __mach_port_deallocate (__mach_task_self (), file); - return -1; - } - - abs_path = concat_name; - } - - /* Hopefully this will not return. */ - err = _hurd_exec_paths (__mach_task_self (), file, - file_name, abs_path, argv, envp); - - /* Oh well. Might as well be tidy. */ - __mach_port_deallocate (__mach_task_self (), file); - free (concat_name); - - return __hurd_fail (err); + return __execveat (AT_FDCWD, file_name, argv, envp, 0); } weak_alias (__execve, execve) |