2011-09-22 Tristan Gingold <gingold@adacore.com>

* fork-child.c (fork_inferior): Add exec_fun parameter.
	Call exec_fun or execvp.
	* inferior.h: Adjust prototype.
	* gnu-nat.c (gnu_create_inferior): Adjust fork_inferior call.
	* inf-ttrace.c (inf_ttrace_create_inferior): Ditto.
	* inf-ptrace.c (inf_ptrace_create_inferior): Ditto.
	* procfs.c (procfs_create_inferior): Ditto.
	* darwin-nat.c (darwin_execvp): New function.
	(darwin_create_inferior): Use it.
This commit is contained in:
Tristan Gingold
2011-09-22 10:22:28 +00:00
parent 7cf3bbff36
commit e69860f1b6
8 changed files with 65 additions and 8 deletions

View File

@@ -115,6 +115,7 @@ escape_bang_in_quoted_argument (const char *shell_file)
pid. EXEC_FILE is the file to run. ALLARGS is a string containing
the arguments to the program. ENV is the environment vector to
pass. SHELL_FILE is the shell file, or NULL if we should pick
one. EXEC_FUN is the exec(2) function to use, or NULL for the default
one. */
/* This function is NOT reentrant. Some of the variables have been
@@ -123,7 +124,9 @@ escape_bang_in_quoted_argument (const char *shell_file)
int
fork_inferior (char *exec_file_arg, char *allargs, char **env,
void (*traceme_fun) (void), void (*init_trace_fun) (int),
void (*pre_trace_fun) (void), char *shell_file_arg)
void (*pre_trace_fun) (void), char *shell_file_arg,
void (*exec_fun)(const char *file, char * const *argv,
char * const *env))
{
int pid;
static char default_shell_file[] = SHELL_FILE;
@@ -359,7 +362,10 @@ fork_inferior (char *exec_file_arg, char *allargs, char **env,
path to find $SHELL. Rich Pixley says so, and I agree. */
environ = env;
execvp (argv[0], argv);
if (exec_fun != NULL)
(*exec_fun) (argv[0], argv, env);
else
execvp (argv[0], argv);
/* If we get here, it's an error. */
save_errno = errno;