Clean up disabling of script_execute
This commit is contained in:
parent
bc7e1c3667
commit
ecb1482ffd
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue