wordexp(): Simplify code by deferring work to sh.
This commit is contained in:
parent
a61a6fd73b
commit
a222062d02
@ -139,25 +139,15 @@ we_askshell(const char *words, wordexp_t *we, int flags)
|
||||
* We are the child; just get /bin/sh to run the wordexp
|
||||
* builtin on `words'.
|
||||
*/
|
||||
int devnull;
|
||||
char *cmd;
|
||||
|
||||
(void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL);
|
||||
_close(pdes[0]);
|
||||
if (_dup2(pdes[1], STDOUT_FILENO) < 0)
|
||||
_exit(1);
|
||||
_close(pdes[1]);
|
||||
if (asprintf(&cmd, "wordexp %s\n", words) < 0)
|
||||
_exit(1);
|
||||
if ((flags & WRDE_SHOWERR) == 0) {
|
||||
if ((devnull = _open(_PATH_DEVNULL, O_RDWR, 0666)) < 0)
|
||||
_exit(1);
|
||||
if (_dup2(devnull, STDERR_FILENO) < 0)
|
||||
_exit(1);
|
||||
_close(devnull);
|
||||
}
|
||||
execl(_PATH_BSHELL, "sh", flags & WRDE_UNDEF ? "-u" : "+u",
|
||||
"-c", cmd, (char *)NULL);
|
||||
"-c", "eval \"$1\";eval \"wordexp $2\"", "",
|
||||
flags & WRDE_SHOWERR ? "" : "exec 2>/dev/null", words,
|
||||
(char *)NULL);
|
||||
_exit(1);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user