summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--INSTALL2
-rw-r--r--NEWS7
-rw-r--r--doc/index.html4
-rw-r--r--doc/upgrade.html6
-rw-r--r--package/info2
-rw-r--r--src/execline/background.c3
-rw-r--r--src/execline/backtick.c3
-rw-r--r--src/execline/cd.c3
-rw-r--r--src/execline/elgetopt.c3
-rw-r--r--src/execline/emptyenv.c11
-rw-r--r--src/execline/exec.c5
-rw-r--r--src/execline/execlineb.c23
-rw-r--r--src/execline/export.c3
-rw-r--r--src/execline/fdblock.c3
-rw-r--r--src/execline/fdclose.c3
-rw-r--r--src/execline/fdmove.c3
-rw-r--r--src/execline/fdreserve.c3
-rw-r--r--src/execline/fdswap.c3
-rw-r--r--src/execline/forbacktickx.c3
-rw-r--r--src/execline/getcwd.c3
-rw-r--r--src/execline/getpid.c3
-rw-r--r--src/execline/heredoc.c3
-rw-r--r--src/execline/if.c3
-rw-r--r--src/execline/ifelse.c3
-rw-r--r--src/execline/ifte.c3
-rw-r--r--src/execline/ifthenelse.c3
-rw-r--r--src/execline/pipeline.c3
-rw-r--r--src/execline/piperw.c3
-rw-r--r--src/execline/redirfd.c3
-rw-r--r--src/execline/runblock.c6
-rw-r--r--src/execline/shift.c3
-rw-r--r--src/execline/tryexec.c3
-rw-r--r--src/execline/umask.c3
-rw-r--r--src/execline/unexport.c3
-rw-r--r--src/execline/wait.c3
-rw-r--r--src/execline/withstdinas.c3
-rw-r--r--src/libexecline/el_execsequence.c3
-rw-r--r--src/libexecline/el_substandrun_str.c3
39 files changed, 67 insertions, 87 deletions
diff --git a/AUTHORS b/AUTHORS
index b3c142c..e1ce29d 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -5,6 +5,7 @@ Contributors:
Jean Marot <marot@quatramaran.ens.fr>
Paul Jarc <prj@dogmap.org>
Eric Le Bihan <eric.le.bihan.dev@free.fr>
+ Rasmus Villemoes <rv@rasmusvillemoes.dk>
Thanks to:
Dan J. Bernstein <djb@cr.yp.to>
diff --git a/INSTALL b/INSTALL
index 6d140d5..3a036e5 100644
--- a/INSTALL
+++ b/INSTALL
@@ -6,7 +6,7 @@ Build Instructions
- A POSIX-compliant C development environment
- GNU make version 3.81 or later
- - skalibs version 2.5.0.0 or later: http://skarnet.org/software/skalibs/
+ - skalibs version 2.5.1.0 or later: http://skarnet.org/software/skalibs/
This software will run on any operating system that implements
POSIX.1-2008, available at:
diff --git a/NEWS b/NEWS
index 0a82564..26ca7a3 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,12 @@
Changelog for execline.
+In 2.3.0.1
+----------
+
+ - Bugfix release.
+ - Code size optimizations via skalibs-2.5.1.0
+
+
In 2.3.0.0
----------
diff --git a/doc/index.html b/doc/index.html
index 3fa4f65..f0acfd8 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -51,7 +51,7 @@ shell's syntax, and has no security issues.
<li> A POSIX-compliant system with a standard C development environment </li>
<li> GNU make, version 3.81 or later. </li>
<li> <a href="http://skarnet.org/software/skalibs/">skalibs</a> version
-2.5.0.0 or later. It's a build-time requirement. It's also a run-time
+2.5.1.0 or later. It's a build-time requirement. It's also a run-time
requirement if you link against the shared version of the skalibs
library. </li>
</ul>
@@ -66,7 +66,7 @@ library. </li>
<h3> Download </h3>
<ul>
- <li> The current released version of execline is <a href="execline-2.3.0.0.tar.gz">2.3.0.0</a>. </li>
+ <li> The current released version of execline is <a href="execline-2.3.0.1.tar.gz">2.3.0.1</a>. </li>
<li> Alternatively, you can checkout a copy of the
<a href="http://git.skarnet.org/cgi-bin/cgit.cgi/execline/">execline
git repository</a>:
diff --git a/doc/upgrade.html b/doc/upgrade.html
index f72e63a..4c048b7 100644
--- a/doc/upgrade.html
+++ b/doc/upgrade.html
@@ -18,6 +18,12 @@
<h1> What has changed in execline </h1>
+<h2> in 2.3.0.1 </h2>
+
+<ul>
+ <li> skalibs dependency bumped to 2.5.1.0 </li>
+</ul>
+
<h2> in 2.3.0.0 </h2>
<ul>
diff --git a/package/info b/package/info
index 981eed5..c8e2eb4 100644
--- a/package/info
+++ b/package/info
@@ -1,4 +1,4 @@
package=execline
-version=2.3.0.0
+version=2.3.0.1
category=admin
package_macro_name=EXECLINE
diff --git a/src/execline/background.c b/src/execline/background.c
index 4635146..dc7a01a 100644
--- a/src/execline/background.c
+++ b/src/execline/background.c
@@ -59,7 +59,6 @@ int main (int argc, char const **argv, char const *const *envp)
char fmt[PID_FMT + 2] = "!=" ;
size_t i = 2 ;
i += pid_fmt(fmt+i, pid) ; fmt[i++] = 0 ;
- pathexec_r(argv + argc1 + 1, envp, env_len(envp), fmt, i) ;
+ xpathexec_r(argv + argc1 + 1, envp, env_len(envp), fmt, i) ;
}
- strerr_dieexec(111, argv[argc1+1]) ;
}
diff --git a/src/execline/backtick.c b/src/execline/backtick.c
index e3f93c5..a2054ec 100644
--- a/src/execline/backtick.c
+++ b/src/execline/backtick.c
@@ -96,6 +96,5 @@ int main (int argc, char const **argv, char const *const *envp)
if (chomp && (modif.s[modif.len - 2] == '\n'))
modif.s[--modif.len - 1] = 0 ;
}
- pathexec_r(argv + argc1 + 1, envp, env_len(envp), modif.s, modif.len) ;
- strerr_dieexec(111, argv[argc1 + 1]) ;
+ xpathexec_r(argv + argc1 + 1, envp, env_len(envp), modif.s, modif.len) ;
}
diff --git a/src/execline/cd.c b/src/execline/cd.c
index c774ce5..62b877c 100644
--- a/src/execline/cd.c
+++ b/src/execline/cd.c
@@ -12,6 +12,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
if (argc < 3) strerr_dieusage(100, USAGE) ;
if (chdir(argv[1]) == -1)
strerr_diefu2sys(111, "chdir to ", argv[1]) ;
- pathexec_run(argv[2], argv+2, envp) ;
- strerr_dieexec(111, argv[2]) ;
+ xpathexec_run(argv[2], argv+2, envp) ;
}
diff --git a/src/execline/elgetopt.c b/src/execline/elgetopt.c
index b7f0362..6a94fe9 100644
--- a/src/execline/elgetopt.c
+++ b/src/execline/elgetopt.c
@@ -62,8 +62,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
char const *v[envlen] ;
if (el_pushenv(&satmp, envp, envlen, list, 1) < 0) goto err ;
if (!env_make(v, envlen, satmp.s, satmp.len)) goto err ;
- pathexec_r(argv+2, v, envlen, modif.s, modif.len) ;
- strerr_dieexec(111, argv[2]) ;
+ xpathexec_r(argv+2, v, envlen, modif.s, modif.len) ;
}
err:
strerr_diefu1sys(111, "update environment") ;
diff --git a/src/execline/emptyenv.c b/src/execline/emptyenv.c
index 2a6bc0d..7f6ef59 100644
--- a/src/execline/emptyenv.c
+++ b/src/execline/emptyenv.c
@@ -1,6 +1,7 @@
/* ISC license. */
#include <string.h>
+#include <skalibs/gccattributes.h>
#include <skalibs/bytestr.h>
#include <skalibs/sgetopt.h>
#include <skalibs/strerr2.h>
@@ -11,6 +12,7 @@
#define USAGE "emptyenv [ -p | -c | -o | -P ] prog..."
+static void cleanupenv (char const *const *, char const *const *) gccattr_noreturn ;
static void cleanupenv (char const *const *argv, char const *const *envp)
{
stralloc sa = STRALLOC_ZERO ;
@@ -30,8 +32,7 @@ static void cleanupenv (char const *const *argv, char const *const *envp)
goto err ;
}
stralloc_free(&sa) ;
- pathexec(argv) ;
- strerr_dieexec(111, argv[0]) ;
+ xpathexec(argv) ;
err:
strerr_diefu1sys(111, "clean up environment") ;
}
@@ -69,7 +70,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
newenv[0] = *envp ;
break ;
}
- pathexec_run(argv[0], argv, newenv) ;
+ xpathexec_run(argv[0], argv, newenv) ;
}
else
{
@@ -82,9 +83,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
char const *v[envlen - n + 1] ;
if (!env_make(v, envlen-n, sa.s, sa.len)) strerr_diefu1sys(111, "env_make") ;
v[envlen-n] = 0 ;
- pathexec_run(argv[0], argv, v) ;
+ xpathexec_run(argv[0], argv, v) ;
}
- stralloc_free(&sa) ;
}
- strerr_dieexec(111, argv[0]) ;
}
diff --git a/src/execline/exec.c b/src/execline/exec.c
index e35d7ba..28c9fd8 100644
--- a/src/execline/exec.c
+++ b/src/execline/exec.c
@@ -41,8 +41,7 @@ int main (int argc, char const **argv, char const *const *envp)
dashed[0] = '-' ;
memcpy(dashed+1, argv[0], n+1) ;
argv[0] = (char const *)dashed ;
- pathexec_run(executable, argv, envp) ;
+ xpathexec_run(executable, argv, envp) ;
}
- else pathexec_run(executable, argv, envp) ;
- strerr_dieexec(111, executable) ;
+ else xpathexec_run(executable, argv, envp) ;
}
diff --git a/src/execline/execlineb.c b/src/execline/execlineb.c
index 31cc3ff..64b168d 100644
--- a/src/execline/execlineb.c
+++ b/src/execline/execlineb.c
@@ -133,7 +133,8 @@ int main (int argc, char const *const *argv, char const *const *envp)
{
char fmt[UINT_FMT] ;
fmt[uint_fmt(fmt, (unsigned int)flagstrict)] = 0 ;
- if (!env_addmodif(&modif, "EXECLINE_STRICT", flagstrict ? fmt : 0)) goto errenv ;
+ if (!env_addmodif(&modif, "EXECLINE_STRICT", flagstrict ? fmt : 0))
+ goto errenv ;
}
if (flagpushenv == 3 || flagpushenv == 4)
@@ -158,8 +159,8 @@ int main (int argc, char const *const *argv, char const *const *envp)
char fmt[UINT_FMT] ;
unsigned int i = 0 ;
fmt[uint_fmt(fmt, argc)] = 0 ;
- if (!env_addmodif(&modif, "#", fmt)) goto errenv ;
- if (!env_addmodif(&modif, "0", dollar0)) goto errenv ;
+ if (!env_addmodif(&modif, "#", fmt)
+ || !env_addmodif(&modif, "0", dollar0)) goto errenv ;
for (; i < (unsigned int)argc ; i++)
{
fmt[uint_fmt(fmt, i+1)] = 0 ;
@@ -177,18 +178,16 @@ int main (int argc, char const *const *argv, char const *const *envp)
static char const *const list[11] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "#" } ;
size_t envlen = env_len(envp) ;
char const *w[envlen] ;
- if (el_pushenv(&satmp, envp, envlen, list, 11) < 0) goto errenv ;
- if (!env_make(w, envlen, satmp.s, satmp.len)) goto errenv ;
- pathexec_r(v, w, envlen, modif.s, modif.len) ;
- stralloc_free(&satmp) ;
+ if (el_pushenv(&satmp, envp, envlen, list, 11) < 0
+ || !env_make(w, envlen, satmp.s, satmp.len))
+ goto errenv ;
+ xpathexec_r(v, w, envlen, modif.s, modif.len) ;
}
else if (modif.len)
- pathexec_r(v, envp, env_len(envp), modif.s, modif.len) ;
+ xpathexec_r(v, envp, env_len(envp), modif.s, modif.len) ;
else
- pathexec_run(v[0], v, envp) ;
+ xpathexec_run(v[0], v, envp) ;
}
- stralloc_free(&modif) ;
- strerr_dieexec(111, sa.s) ;
-errenv:
+ errenv:
strerr_diefu1sys(111, "update environment") ;
}
diff --git a/src/execline/export.c b/src/execline/export.c
index 5319c71..fde3adf 100644
--- a/src/execline/export.c
+++ b/src/execline/export.c
@@ -21,7 +21,6 @@ int main (int argc, char const *const *argv, char const *const *envp)
memcpy(fmt, argv[1], len1) ;
fmt[len1] = '=' ;
memcpy(fmt + len1 + 1, argv[2], len2 + 1) ;
- pathexec_r(argv+3, envp, env_len(envp), fmt, len1 + len2 + 2) ;
+ xpathexec_r(argv+3, envp, env_len(envp), fmt, len1 + len2 + 2) ;
}
- strerr_dieexec(111, argv[3]) ;
}
diff --git a/src/execline/fdblock.c b/src/execline/fdblock.c
index ec68900..0e912d0 100644
--- a/src/execline/fdblock.c
+++ b/src/execline/fdblock.c
@@ -29,6 +29,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
if ((argc < 2) || !uint0_scan(argv[0], &fd)) strerr_dieusage(100, USAGE) ;
if ((block ? ndelay_off(fd) : ndelay_on(fd)) < 0)
strerr_diefu1sys(111, block ? "ndelay_off" : "ndelay_on") ;
- pathexec_run(argv[1], argv+1, envp) ;
- strerr_dieexec(111, argv[1]) ;
+ xpathexec_run(argv[1], argv+1, envp) ;
}
diff --git a/src/execline/fdclose.c b/src/execline/fdclose.c
index 47780c9..e74c772 100644
--- a/src/execline/fdclose.c
+++ b/src/execline/fdclose.c
@@ -12,6 +12,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
PROG = "fdclose" ;
if ((argc < 3) || !uint0_scan(argv[1], &fd)) strerr_dieusage(100, USAGE) ;
fd_close(fd) ;
- pathexec_run(argv[2], argv+2, envp) ;
- strerr_dieexec(111, argv[2]) ;
+ xpathexec_run(argv[2], argv+2, envp) ;
}
diff --git a/src/execline/fdmove.c b/src/execline/fdmove.c
index 6f97b11..41e2cf1 100644
--- a/src/execline/fdmove.c
+++ b/src/execline/fdmove.c
@@ -30,6 +30,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
strerr_dieusage(100, USAGE) ;
if ((flagcopy ? fd_copy(to, from) : fd_move(to, from)) == -1)
strerr_diefu4sys(111, "move fd ", argv[1], " to fd ", argv[0]) ;
- pathexec_run(argv[2], argv+2, envp) ;
- strerr_dieexec(111, argv[2]) ;
+ xpathexec_run(argv[2], argv+2, envp) ;
}
diff --git a/src/execline/fdreserve.c b/src/execline/fdreserve.c
index 00d5c7d..2c3fc15 100644
--- a/src/execline/fdreserve.c
+++ b/src/execline/fdreserve.c
@@ -58,7 +58,6 @@ int main (int argc, char const *const *argv, char const *const *envp)
j += doit(modif + j, (i<<1)|1, fd[i][1]) ;
}
}
- pathexec_r(argv+2, envp, env_len(envp), modif, j) ;
+ xpathexec_r(argv+2, envp, env_len(envp), modif, j) ;
}
- strerr_dieexec(111, argv[2]) ;
}
diff --git a/src/execline/fdswap.c b/src/execline/fdswap.c
index b19494e..57cf4f6 100644
--- a/src/execline/fdswap.c
+++ b/src/execline/fdswap.c
@@ -13,6 +13,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
if ((argc < 4) || !uint0_scan(argv[1], &fd1) || !uint0_scan(argv[2], &fd2))
strerr_dieusage(100, USAGE) ;
if (fd_move2(fd1, fd2, fd2, fd1) < 0) strerr_diefu1sys(111, "swap fds") ;
- pathexec_run(argv[3], argv+3, envp) ;
- strerr_dieexec(111, argv[3]) ;
+ xpathexec_run(argv[3], argv+3, envp) ;
}
diff --git a/src/execline/forbacktickx.c b/src/execline/forbacktickx.c
index b1b49fa..8b31d92 100644
--- a/src/execline/forbacktickx.c
+++ b/src/execline/forbacktickx.c
@@ -110,7 +110,6 @@ int main (int argc, char const *const *argv, char const *const *envp)
}
while (argv[i]) newargv[m++] = argv[i++] ;
newargv[m++] = 0 ;
- pathexec_run(newargv[0], newargv, envp) ;
- strerr_dieexec(111, newargv[0]) ;
+ xpathexec_run(newargv[0], newargv, envp) ;
}
}
diff --git a/src/execline/getcwd.c b/src/execline/getcwd.c
index aeb6691..0548aa8 100644
--- a/src/execline/getcwd.c
+++ b/src/execline/getcwd.c
@@ -19,6 +19,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
strerr_diefu1sys(111, "stralloc_catb") ;
if (sagetcwd(&sa) < 0) strerr_diefu1sys(111, "getcwd") ;
if (!stralloc_0(&sa)) strerr_diefu1sys(111, "stralloc_catb") ;
- pathexec_r(argv + 2, envp, env_len(envp), sa.s, sa.len) ;
- strerr_dieexec(111, argv[2]) ;
+ xpathexec_r(argv + 2, envp, env_len(envp), sa.s, sa.len) ;
}
diff --git a/src/execline/getpid.c b/src/execline/getpid.c
index dd9623a..0272b16 100644
--- a/src/execline/getpid.c
+++ b/src/execline/getpid.c
@@ -23,7 +23,6 @@ int main (int argc, char const *const *argv, char const *const *envp)
memcpy(fmt, argv[1], len) ;
fmt[len] = '=' ;
i += uint_fmt(fmt+i, getpid()) ; fmt[i++] = 0 ;
- pathexec_r(argv+2, envp, env_len(envp), fmt, i) ;
+ xpathexec_r(argv+2, envp, env_len(envp), fmt, i) ;
}
- strerr_dieexec(111, argv[2]) ;
}
diff --git a/src/execline/heredoc.c b/src/execline/heredoc.c
index 77e69da..d28d765 100644
--- a/src/execline/heredoc.c
+++ b/src/execline/heredoc.c
@@ -55,6 +55,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
if (fd_move(fdr, fd[0]) == -1)
strerr_diefu2sys(111, "read on fd ", argv[0]) ;
}
- pathexec_run(argv[2], argv+2, envp) ;
- strerr_dieexec(111, argv[2]) ;
+ xpathexec_run(argv[2], argv+2, envp) ;
}
diff --git a/src/execline/if.c b/src/execline/if.c
index 012d9f2..037d4a2 100644
--- a/src/execline/if.c
+++ b/src/execline/if.c
@@ -47,6 +47,5 @@ int main (int argc, char const **argv, char const *const *envp)
strerr_dief2x(128 + WTERMSIG(wstat), "child crashed with signal ", fmt) ;
}
if (not == !wait_estatus(wstat)) return e ;
- pathexec0_run(argv+argc1+1, envp) ;
- strerr_dieexec(111, argv[argc1+1]) ;
+ xpathexec0_run(argv+argc1+1, envp) ;
}
diff --git a/src/execline/ifelse.c b/src/execline/ifelse.c
index c1a2e80..eb10feb 100644
--- a/src/execline/ifelse.c
+++ b/src/execline/ifelse.c
@@ -49,6 +49,5 @@ int main (int argc, char const **argv, char const *const *envp)
strerr_dief2x(128 + WTERMSIG(wstat), "child crashed with signal ", fmt) ;
}
if (not != !wait_estatus(wstat)) argv[argc2] = 0 ; else argv += argc2+1 ;
- pathexec0_run(argv, envp) ;
- strerr_dieexec(111, *argv) ;
+ xpathexec0_run(argv, envp) ;
}
diff --git a/src/execline/ifte.c b/src/execline/ifte.c
index 1bb499e..786621c 100644
--- a/src/execline/ifte.c
+++ b/src/execline/ifte.c
@@ -53,6 +53,5 @@ int main (int argc, char const **argv, char const *const *envp)
argv[argc2] = 0 ;
}
else argv[argc1] = 0 ;
- pathexec0_run(argv, envp) ;
- strerr_dieexec(111, *argv) ;
+ xpathexec0_run(argv, envp) ;
}
diff --git a/src/execline/ifthenelse.c b/src/execline/ifthenelse.c
index b36f549..86dbfe7 100644
--- a/src/execline/ifthenelse.c
+++ b/src/execline/ifthenelse.c
@@ -64,8 +64,7 @@ int main (int argc, char const **argv, char const *const *envp)
unsigned int i = 0 ;
for (; remainder[i] ; i++) argv[argc2+i] = remainder[i] ;
argv[argc2+i] = 0 ;
- pathexec0_run(argv, envp) ;
- strerr_dieexec(111, argv[0]) ;
+ xpathexec0_run(argv, envp) ;
}
else
{
diff --git a/src/execline/pipeline.c b/src/execline/pipeline.c
index b07d495..3017ea2 100644
--- a/src/execline/pipeline.c
+++ b/src/execline/pipeline.c
@@ -68,8 +68,7 @@ int main (int argc, char const **argv, char const *const *envp)
char fmt[PID_FMT + 2] = "!=" ;
size_t i = 2 ;
i += pid_fmt(fmt+i, pid) ; fmt[i++] = 0 ;
- pathexec_r(argv + argc1 + 1, envp, env_len(envp), fmt, i) ;
+ xpathexec_r(argv + argc1 + 1, envp, env_len(envp), fmt, i) ;
}
- strerr_dieexec(111, argv[argc1 + 1]) ;
}
}
diff --git a/src/execline/piperw.c b/src/execline/piperw.c
index 8affbde..7f576e5 100644
--- a/src/execline/piperw.c
+++ b/src/execline/piperw.c
@@ -24,6 +24,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
|| (fd_move(fdr, p[0]) == -1)
|| (fd_move(fdw, p[1]) == -1))
strerr_diefu1sys(111, "move fds") ;
- pathexec_run(argv[3], argv+3, envp) ;
- strerr_dieexec(111, argv[3]) ;
+ xpathexec_run(argv[3], argv+3, envp) ;
}
diff --git a/src/execline/redirfd.c b/src/execline/redirfd.c
index 8a5c8ef..1539946 100644
--- a/src/execline/redirfd.c
+++ b/src/execline/redirfd.c
@@ -64,6 +64,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
if (((flags & O_NONBLOCK) ? ndelay_off(fd) : ndelay_on(fd)) < 0)
strerr_diefu1sys(111, "change blocking mode") ;
}
- pathexec_run(argv[2], argv+2, envp) ;
- strerr_dieexec(111, argv[2]) ;
+ xpathexec_run(argv[2], argv+2, envp) ;
}
diff --git a/src/execline/runblock.c b/src/execline/runblock.c
index 16fc52a..ab81bb3 100644
--- a/src/execline/runblock.c
+++ b/src/execline/runblock.c
@@ -129,7 +129,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
}
if (flagnopop) /* exec now */
- pathexec_run(genalloc_s(char const *, &v)[0], genalloc_s(char const *, &v), envp) ;
+ xpathexec_run(genalloc_s(char const *, &v)[0], genalloc_s(char const *, &v), envp) ;
else /* popenv, then exec */
{
char const *list[11] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "#" } ;
@@ -142,9 +142,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
if (!env_make(w, envlen - popped, satmp.s, satmp.len))
strerr_diefu1sys(111, "env_make") ;
w[envlen - popped] = 0 ;
- pathexec_run(genalloc_s(char const *, &v)[0], genalloc_s(char const *, &v), w) ;
- stralloc_free(&satmp) ;
+ xpathexec_run(genalloc_s(char const *, &v)[0], genalloc_s(char const *, &v), w) ;
}
}
- strerr_dieexec(111, genalloc_s(char const *, &v)[0]) ;
}
diff --git a/src/execline/shift.c b/src/execline/shift.c
index e936f23..3ca3ede 100644
--- a/src/execline/shift.c
+++ b/src/execline/shift.c
@@ -116,6 +116,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
strerr_diefu1sys(111, "pathexec_env") ;
}
}
- pathexec(argv) ;
- strerr_dieexec(111, argv[0]) ;
+ xpathexec(argv) ;
}
diff --git a/src/execline/tryexec.c b/src/execline/tryexec.c
index 9ba2008..0b1ca87 100644
--- a/src/execline/tryexec.c
+++ b/src/execline/tryexec.c
@@ -58,6 +58,5 @@ int main (int argc, char const **argv, char const *const *envp)
}
else pathexec_run(executable, dom, dom_envp) ;
- pathexec0_run(sub, envp) ;
- strerr_dieexec(111, sub[0]) ;
+ xpathexec0_run(sub, envp) ;
}
diff --git a/src/execline/umask.c b/src/execline/umask.c
index ab91b37..f74f845 100644
--- a/src/execline/umask.c
+++ b/src/execline/umask.c
@@ -14,6 +14,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
if (argc < 3) strerr_dieusage(100, USAGE) ;
if (!uint_oscan(argv[1], &m)) strerr_dieusage(100, USAGE) ;
umask(m) ;
- pathexec_run(argv[2], argv+2, envp) ;
- strerr_dieexec(111, argv[2]) ;
+ xpathexec_run(argv[2], argv+2, envp) ;
}
diff --git a/src/execline/unexport.c b/src/execline/unexport.c
index e7350e8..0ef46d2 100644
--- a/src/execline/unexport.c
+++ b/src/execline/unexport.c
@@ -15,6 +15,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
len = strlen(argv[1]) ;
if (memchr(argv[1], '=', len))
strerr_dief2x(100, "invalid variable name: ", argv[1]) ;
- pathexec_r(argv+2, envp, env_len(envp), argv[1], len+1) ;
- strerr_dieexec(111, argv[2]) ;
+ xpathexec_r(argv+2, envp, env_len(envp), argv[1], len+1) ;
}
diff --git a/src/execline/wait.c b/src/execline/wait.c
index 7233304..a7fe22f 100644
--- a/src/execline/wait.c
+++ b/src/execline/wait.c
@@ -128,6 +128,5 @@ int main (int argc, char const **argv, char const *const *envp)
mainloop(&tto, insist, f, tab, &n) ;
}
- pathexec0_run(argv + argc1 + 1, envp) ;
- strerr_dieexec(111, argv[argc1 + 1]) ;
+ xpathexec0_run(argv + argc1 + 1, envp) ;
}
diff --git a/src/execline/withstdinas.c b/src/execline/withstdinas.c
index 5f62261..da24c8f 100644
--- a/src/execline/withstdinas.c
+++ b/src/execline/withstdinas.c
@@ -66,6 +66,5 @@ int main (int argc, char const **argv, char const *const *envp)
modif.s[--modif.len - 1] = 0 ;
}
if (!argv[1]) return 0 ;
- pathexec_r(argv + 1, envp, env_len(envp), modif.s, modif.len) ;
- strerr_dieexec(111, argv[1]) ;
+ xpathexec_r(argv + 1, envp, env_len(envp), modif.s, modif.len) ;
}
diff --git a/src/libexecline/el_execsequence.c b/src/libexecline/el_execsequence.c
index 42ef104..5adbe49 100644
--- a/src/libexecline/el_execsequence.c
+++ b/src/libexecline/el_execsequence.c
@@ -18,6 +18,5 @@ void el_execsequence (char const *const *argv1, char const *const *argv2, char c
strerr_diefu2sys(111, "wait for ", argv1[0]) ;
if (!argv2[0]) _exit(0) ;
j += uint_fmt(fmt + j, wait_status(wstat)) ; fmt[j++] = 0 ;
- pathexec_r(argv2, envp, env_len(envp), fmt, j) ;
- strerr_dieexec(111, argv2[0]) ;
+ xpathexec_r(argv2, envp, env_len(envp), fmt, j) ;
}
diff --git a/src/libexecline/el_substandrun_str.c b/src/libexecline/el_substandrun_str.c
index 6680957..3f6b8e3 100644
--- a/src/libexecline/el_substandrun_str.c
+++ b/src/libexecline/el_substandrun_str.c
@@ -20,7 +20,6 @@ void el_substandrun_str (stralloc *src, size_t srcbase, char const *const *envp,
char const *v[r + 1] ;
if (!env_make(v, r, dst.s, dst.len)) strerr_diefu1sys(111, "env_make") ;
v[r] = 0 ;
- pathexec_r(v, envp, env_len(envp), info->modifs.s, info->modifs.len) ;
+ xpathexec_r(v, envp, env_len(envp), info->modifs.s, info->modifs.len) ;
}
- strerr_dieexec(111, dst.s) ;
}