diff options
author | Roland McGrath <mcgrathr@chromium.org> | 2011-09-19 12:50:25 -0700 |
---|---|---|
committer | Roland McGrath <mcgrathr@chromium.org> | 2011-09-19 12:50:25 -0700 |
commit | ecb1482ffd85fd3279642b1dc045aa867ad4d415 (patch) | |
tree | c8276d86e38abbf88c191dc3623cac89b6425c7c | |
parent | bc7e1c3667b577ad418f7520df2a7dbccea04ee9 (diff) | |
download | glibc-ecb1482ffd85fd3279642b1dc045aa867ad4d415.tar.gz glibc-ecb1482ffd85fd3279642b1dc045aa867ad4d415.tar.xz glibc-ecb1482ffd85fd3279642b1dc045aa867ad4d415.zip |
Clean up disabling of script_execute
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/posix/spawni.c | 20 |
2 files changed, 16 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog index 30d18226ee..3aa91f5bc3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2011-09-19 Roland McGrath <roland@hack.frob.com> + * sysdeps/posix/spawni.c (script_execute): Always define it. + It will be optimized away if unused. + (maybe_script_execute): New function. + (__spawni): Call it. + * Makerules: Don't include tls.make. (config-tls): Always set to thread. * tls.make.c: File removed. diff --git a/sysdeps/posix/spawni.c b/sysdeps/posix/spawni.c index 129edcd6d4..f849437a48 100644 --- a/sysdeps/posix/spawni.c +++ b/sysdeps/posix/spawni.c @@ -39,7 +39,6 @@ #define SPAWN_ERROR 127 -#if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_15) /* The file is accessible but it is not an executable file. Invoke the shell to interpret it as a script. */ static void @@ -66,11 +65,16 @@ script_execute (const char *file, char *const argv[], char *const envp[]) __execve (new_argv[0], new_argv, envp); } } -# define tryshell (xflags & SPAWN_XFLAGS_TRY_SHELL) -#else -# define tryshell 0 -#endif +static inline void +maybe_script_execute (const char *file, char *const argv[], char *const envp[], + int xflags) +{ + if (SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_15) + && (xflags & SPAWN_XFLAGS_TRY_SHELL) + && errno == ENOEXEC) + script_execute (file, argv, envp); +} /* Spawn a new process executing PATH with the attributes describes in *ATTRP. Before running the process perform the actions described in FILE-ACTIONS. */ @@ -237,8 +241,7 @@ __spawni (pid_t *pid, const char *file, /* The FILE parameter is actually a path. */ __execve (file, argv, envp); - if (tryshell && errno == ENOEXEC) - script_execute (file, argv, envp); + maybe_script_execute (file, argv, envp, xflags); /* Oh, oh. `execve' returns. This is bad. */ _exit (SPAWN_ERROR); @@ -283,8 +286,7 @@ __spawni (pid_t *pid, const char *file, /* Try to execute this name. If it works, execv will not return. */ __execve (startp, argv, envp); - if (tryshell && errno == ENOEXEC) - script_execute (startp, argv, envp); + maybe_script_execute (startp, argv, envp, xflags); switch (errno) { |