#include <hurd/fd.h>
#include <hurd/signal.h>
#include <hurd/id.h>
+#include <hurd/fs_experimental.h>
#include <assert.h>
#include <argz.h>
+#include <shlib-compat.h>
+
/* Overlay TASK, executing FILE with arguments ARGV and environment ENVP.
If TASK == mach_task_self (), some ports are dealloc'd by the exec server.
ARGV and ENVP are terminated by NULL pointers.
return _hurd_exec_paths (task, file, NULL, NULL, argv, envp);
}
+error_t
+__hurd_exec_file_name (task_t task, file_t file, const char *filename,
+ char *const argv[], char *const envp[])
+{
+ return _hurd_exec_paths (task, file, filename, filename, argv, envp);
+}
+
link_warning (_hurd_exec,
"_hurd_exec is deprecated, use _hurd_exec_paths instead");
task == __mach_task_self () ? 1 : 0);
/* Fall back for backwards compatibility. This can just be removed
when __file_exec goes away. */
+ if (err == MIG_BAD_ID)
+ err = __file_exec_file_name (file, task, flags,
+ path ? path : "",
+ args, argslen, env, envlen,
+ dtable, MACH_MSG_TYPE_COPY_SEND, dtablesize,
+ ports, MACH_MSG_TYPE_COPY_SEND,
+ _hurd_nports,
+ ints, INIT_INT_MAX,
+ please_dealloc, pdp - please_dealloc,
+ &_hurd_msgport,
+ task == __mach_task_self () ? 1 : 0);
+ /* Fall back for backwards compatibility. This can just be removed
+ when __file_exec goes away. */
if (err == MIG_BAD_ID)
err = __file_exec (file, task, flags,
args, argslen, env, envlen,
return err;
}
libc_hidden_def (_hurd_exec_paths)
+#if SHLIB_COMPAT (libc, GLIBC_2_26, GLIBC_2_27)
+compat_symbol (libc, _hurd_exec_paths, _hurd_exec_paths, GLIBC_2_26);
+#endif
+extern error_t _hurd_exec_file_name (task_t task,
+ file_t file,
+ const char *filename,
+ char *const argv[],
+ char *const envp[]);
+versioned_symbol (libc, __hurd_exec_file_name, _hurd_exec_file_name, GLIBC_2_21);
#include <hurd/id.h>
#include <hurd/lookup.h>
#include <hurd/resource.h>
+#include <hurd/fs_experimental.h>
#include <assert.h>
#include <argz.h>
#include "spawn_int.h"
ints, INIT_INT_MAX,
NULL, 0, NULL, 0);
+ /* Fallback for backwards compatibility. This can just be removed
+ when __file_exec goes away. */
+ if (err == MIG_BAD_ID)
+ err = __file_exec_file_name
+ (file, task,
+ __sigismember (&_hurdsig_traced, SIGKILL) ? EXEC_SIGTRAP : 0,
+ relpath, args, argslen, env, envlen,
+ dtable, MACH_MSG_TYPE_COPY_SEND, dtablesize,
+ ports, MACH_MSG_TYPE_COPY_SEND, _hurd_nports,
+ ints, INIT_INT_MAX,
+ NULL, 0, NULL, 0);
+
/* Fallback for backwards compatibility. This can just be removed
when __file_exec goes away. */
if (err == MIG_BAD_ID)