Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 May 2013 11:43:45 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r250406 - head/lib/libc/gen
Message-ID:  <201305091143.r49Bhk4L042063@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Thu May  9 11:43:45 2013
New Revision: 250406
URL: http://svnweb.freebsd.org/changeset/base/250406

Log:
  wordexp(): Simplify code by deferring work to sh.

Modified:
  head/lib/libc/gen/wordexp.c

Modified: head/lib/libc/gen/wordexp.c
==============================================================================
--- head/lib/libc/gen/wordexp.c	Thu May  9 11:10:46 2013	(r250405)
+++ head/lib/libc/gen/wordexp.c	Thu May  9 11:43:45 2013	(r250406)
@@ -139,25 +139,15 @@ we_askshell(const char *words, wordexp_t
 		 * 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);
 	}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305091143.r49Bhk4L042063>