From ea60341e32df03bcef5985ec908b1f38e9a7892a Mon Sep 17 00:00:00 2001 From: Mark Shinwell Date: Thu, 1 Jun 2006 10:30:51 +0000 Subject: Patch to provide pex_run_in_environment. * include/libiberty.h: Declare pex_run_in_environment. libiberty: * pex-common.c: New function pex_run_in_environment. * pex-common.h: Add environment parameter to exec_child. * pex-msdos.c: Add environment parameter to pex_msdos_exec_child. * pex-djgpp.c: Add environment parameter to pex_djgpp_exec_child. (pex_djgpp_exec_child): Pass environment to child process. * pex-unix.c: Add environment parameter to pex_unix_exec_child. (pex_unix_exec_child): Pass environment to child process. * pex-win32.c: Add environment parameter to pex_win32_exec_child. New function env_compare for comparing VAR=VALUE pairs. (win32_spawn): Assemble environment block and pass to CreateProcess. (spawn_script): Pass environment through to win32_spawn. (pex_win32_exec_child): Pass environment through to spawn_script and win32_spawn. * functions.texi: Regenerate. * pexecute.txh: Document pex_run_in_environment. From-SVN: r114302 --- libiberty/pex-common.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'libiberty/pex-common.c') diff --git a/libiberty/pex-common.c b/libiberty/pex-common.c index ebe8c43..3daa638 100644 --- a/libiberty/pex-common.c +++ b/libiberty/pex-common.c @@ -142,12 +142,15 @@ temp_file (struct pex_obj *obj, int flags, char *name) return name; } -/* Run a program. */ + +/* As for pex_run (), but permits the environment for the child process + to be specified. */ const char * -pex_run (struct pex_obj *obj, int flags, const char *executable, - char * const * argv, const char *orig_outname, const char *errname, - int *err) +pex_run_in_environment (struct pex_obj *obj, int flags, const char *executable, + char * const * argv, char * const * env, + const char *orig_outname, const char *errname, + int *err) { const char *errmsg; int in, out, errdes; @@ -296,8 +299,8 @@ pex_run (struct pex_obj *obj, int flags, const char *executable, /* Run the program. */ - pid = obj->funcs->exec_child (obj, flags, executable, argv, in, out, errdes, - &errmsg, err); + pid = obj->funcs->exec_child (obj, flags, executable, argv, env, + in, out, errdes, &errmsg, err); if (pid < 0) goto error_exit; @@ -319,6 +322,17 @@ pex_run (struct pex_obj *obj, int flags, const char *executable, return errmsg; } +/* Run a program. */ + +const char * +pex_run (struct pex_obj *obj, int flags, const char *executable, + char * const * argv, const char *orig_outname, const char *errname, + int *err) +{ + return pex_run_in_environment (obj, flags, executable, argv, NULL, + orig_outname, errname, err); +} + /* Return a FILE pointer for a temporary file to fill with input for the pipeline. */ FILE * -- cgit v1.1