about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore5
-rw-r--r--NEWS9
-rwxr-xr-xconfigure5
-rw-r--r--doc/cd.html50
-rw-r--r--doc/execline-cd.html54
-rw-r--r--doc/execline-umask.html50
-rw-r--r--doc/index.html4
-rw-r--r--doc/posix-cd.html23
-rw-r--r--doc/posix-umask.html22
-rw-r--r--doc/umask.html48
-rw-r--r--doc/upgrade.html6
-rw-r--r--package/deps.mak12
-rw-r--r--package/targets.mak22
-rw-r--r--src/execline/deps-exe/execline-cd (renamed from src/execline/deps-exe/cd)0
-rw-r--r--src/execline/deps-exe/execline-umask (renamed from src/execline/deps-exe/umask)0
-rw-r--r--src/execline/execline-cd.c (renamed from src/execline/cd.c)2
-rw-r--r--src/execline/execline-umask.c (renamed from src/execline/umask.c)2
-rw-r--r--src/execline/wait.c10
18 files changed, 183 insertions, 141 deletions
diff --git a/.gitignore b/.gitignore
index 0631586..7103ade 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,7 +6,6 @@
 /src/include/execline/config.h
 /background
 /backtick
-/cd
 /define
 /dollarat
 /elgetopt
@@ -16,6 +15,8 @@
 /envfile
 /exec
 /execlineb
+/execline-cd
+/execline-umask
 /exit
 /export
 /fdblock
@@ -43,6 +44,7 @@
 /pipeline
 /piperw
 /posix-cd
+/posix-umask
 /redirfd
 /runblock
 /shift
@@ -52,4 +54,3 @@
 /unexport
 /wait
 /withstdinas
-
diff --git a/NEWS b/NEWS
index 7ae513e..6e42862 100644
--- a/NEWS
+++ b/NEWS
@@ -5,9 +5,12 @@ In 2.6.0.0
 
  - The dollarat program now has its conflicting -0 and -d options
 handled in the conventional way, with rightmost priority.
- - New binary: posix-umask. With --enable-pedantic-posix,
-umask is a symbolic link to posix-umask. And, hopefully, this
-completes the "make execline POSIX-compliant" chapter.
+ - New binary: posix-umask.
+ - cd renamed to execline-cd, umask renamed to execline-umask
+ - With --enable-pedantic-posix, umask is a symbolic link to
+posix-umask and cd is a symbolic link to posix-cd. Without this
+option, umask is a symbolic link to execline-umask and cd is
+a symbolic link to execline-cd.
 
 
 In 2.5.3.0
diff --git a/configure b/configure
index 39777fe..f2fb757 100755
--- a/configure
+++ b/configure
@@ -494,6 +494,11 @@ fi
 echo "#define ${package_macro_name}_LIBEXECPREFIX \"$libexecdir/\""
 echo "#define ${package_macro_name}_SHEBANGPREFIX \"$shebangdir/\""
 echo
+echo "#undef ${package_macro_name}_PEDANTIC_POSIX"
+if $pposix ; then
+echo "#define ${package_macro_name}_PEDANTIC_POSIX"
+fi
+echo
 echo "#endif"
 exec 1>&3 3>&-
 echo "  ... done."
diff --git a/doc/cd.html b/doc/cd.html
deleted file mode 100644
index fe64c19..0000000
--- a/doc/cd.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>
-  <head>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta http-equiv="Content-Language" content="en" />
- <title>execline: the cd command</title>
- <meta name="Description" content="execline: the cd command" />
- <meta name="Keywords" content="execline command cd chdir" />
- <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
-</head>
-<body>
-
-<p>
-<a href="index.html">execline</a><br />
-<a href="//skarnet.org/software/">Software</a><br />
-<a href="//skarnet.org/">skarnet.org</a>
-</p>
-
-<h1> The <tt>cd</tt> program </h1>
-
-<p>
-<tt>cd</tt> changes the current working directory to a
-given directory, then executes a program.
-</p>
-
-<h2> Interface </h2>
-
-<pre>
-     cd <em>dir</em> <em>prog...</em>
-</pre>
-
-<p>
-<tt>cd</tt> performs a
-<a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html">chdir()</a>
-system call on <em>dir</em>, then execs into <em>prog...</em>.
-</p>
-
-<h2> Notes </h2>
-
-<ul>
- <li> <tt>cd</tt> is a standard shell builtin. Be careful if you want to
-use the <tt>cd</tt> command outside of an <tt>execline</tt> script </li>
- <li> When execline has been configured with the <tt>--enable-pedantic-posix</tt>
-option, the <tt>cd</tt> binary is actually a symbolic link to the
-<a href="posix-cd.html">posix-cd</a> binary. </li>
-</ul>
-
-
-</body>
-</html>
diff --git a/doc/execline-cd.html b/doc/execline-cd.html
new file mode 100644
index 0000000..911eb2a
--- /dev/null
+++ b/doc/execline-cd.html
@@ -0,0 +1,54 @@
+<html>
+  <head>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta http-equiv="Content-Language" content="en" />
+ <title>execline: the execline-cd command</title>
+ <meta name="Description" content="execline: the execline-cd command" />
+ <meta name="Keywords" content="execline command cd chdir execline-cd" />
+ <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
+</head>
+<body>
+
+<p>
+<a href="index.html">execline</a><br />
+<a href="//skarnet.org/software/">Software</a><br />
+<a href="//skarnet.org/">skarnet.org</a>
+</p>
+
+<h1> The <tt>execline-cd</tt> program </h1>
+
+<p>
+<tt>execline-cd</tt> changes the current working directory to a
+given directory, then executes a program.
+</p>
+
+<h2> Interface </h2>
+
+<pre>
+     execline-cd <em>dir</em> <em>prog...</em>
+</pre>
+
+<p>
+<tt>execline-cd</tt> performs a
+<a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html">chdir()</a>
+system call on <em>dir</em>, then execs into <em>prog...</em>.
+</p>
+
+<h2> Notes </h2>
+
+<ul>
+ <li> By default, <tt>execline-cd</tt> can also be invoked as <tt>cd</tt>:
+there is a <tt>cd</tt> program which is a symbolic link to <tt>execline-cd</tt>. </li>
+ <li> When execline has been configured with the <tt>--enable-pedantic-posix</tt>
+option, the <tt>cd</tt> binary is a symbolic link to the
+<a href="posix-cd.html">posix-cd</a> binary instead, so a <tt>cd</tt> command
+in an execline script will invoke <a href="posix-cd.html">posix-cd</a> instead
+of <tt>execline-cd</tt>. </li>
+ <li> Existing scripts that call <tt>cd</tt> will keep working no matter the
+chosen configuration. </li>
+</ul>
+
+
+</body>
+</html>
diff --git a/doc/execline-umask.html b/doc/execline-umask.html
new file mode 100644
index 0000000..f01343d
--- /dev/null
+++ b/doc/execline-umask.html
@@ -0,0 +1,50 @@
+<html>
+  <head>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  <meta http-equiv="Content-Language" content="en" />
+  <title>execline: the execline-umask command</title>
+  <meta name="Description" content="execline: the execline-umask command" />
+  <meta name="Keywords" content="execline command umask execline-umask" />
+  <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
+ </head>
+<body>
+
+<p>
+<a href="index.html">execline</a><br />
+<a href="//skarnet.org/software/">Software</a><br />
+<a href="//skarnet.org/">skarnet.org</a>
+</p>
+
+<h1> The <tt>execline-umask</tt> program </h1>
+
+<p>
+<tt>execline-umask</tt> sets the umask (file creation mask),
+then executes a program.
+</p>
+
+<h2> Interface </h2>
+
+<pre>
+     execline-umask <em>mask</em> <em>prog...</em>
+</pre>
+
+<p>
+<tt>execline-umask</tt> sets the current umask to <em>mask</em>,
+then execs into <em>prog...</em>.
+</p>
+
+<h2> Notes </h2>
+
+<ul>
+<li> By default, at execline installation time, a <tt>umask</tt>
+symbolic link is created, pointing to <tt>execline-umask</tt>.
+ <li> When execline has been configured with the <tt>--enable-pedantic-posix</tt>
+option, the <tt>umask</tt> symbolic link points to the
+<a href="posix-umask.html">posix-umask</a> binary instead. </li>
+ <li> Existing execline scripts calling <tt>umask</tt> will keep working
+no matter the chosen configuration. </li>
+</ul>
+
+</body>
+</html>
diff --git a/doc/index.html b/doc/index.html
index d93f704..498bb13 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -125,9 +125,9 @@ to your installation: the shebang lines for your system might be something like
  (Process state control)
 </p>
 <ul>
-<li><a href="cd.html">The <tt>cd</tt> program</a></li>
+<li><a href="execline-cd.html">The <tt>execline-cd</tt> program</a></li>
 <li><a href="posix-cd.html">The <tt>posix-cd</tt> program</a></li>
-<li><a href="umask.html">The <tt>umask</tt> program</a></li>
+<li><a href="execline-umask.html">The <tt>execline-umask</tt> program</a></li>
 <li><a href="posix-umask.html">The <tt>posix-umask</tt> program</a></li>
 <li><a href="emptyenv.html">The <tt>emptyenv</tt> program</a></li>
 <li><a href="envfile.html">The <tt>envfile</tt> program</a></li>
diff --git a/doc/posix-cd.html b/doc/posix-cd.html
index 5074658..fc40203 100644
--- a/doc/posix-cd.html
+++ b/doc/posix-cd.html
@@ -40,23 +40,26 @@ not empty, it execs into it.
 <h2> Notes </h2>
 
 <ul>
- <li> <tt>posix-cd</tt> is only available when execline has been configured
-with the <tt>--enable-pedantic-posix</tt> option, and in this case, the
-<a href="cd.html">cd</a> binary is a symbolic link to it. </li>
+ <li> When execline has been configured
+with the <tt>--enable-pedantic-posix</tt> option, the <tt>cd</tt>
+command is a symbolic link to it. So scripts calling <tt>cd</tt>
+will use <tt>posix-cd</tt>. When this configuration option has not
+been given, <tt>cd</tt> is a symbolic link to
+<a href="execline-cd.html">execline-cd</a>. </li>
  <li> <tt>posix-cd</tt> fully conforms to the
 <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/cd.html">POSIX
 specification</a>. When <em>prog...</em> is not empty, the behaviour of a
 <tt>cd</tt> utility is not specified by POSIX, so <tt>posix-cd</tt> extends
 the spec to be actually useful and usable in an execline program with the same
-interface as the regular execline <a href="cd.html">cd</a> command. </li>
+interface as the regular execline <a href="execline-cd.html">cd</a> command. </li>
  <li> Nobody ever executes or needs the external version (i.e. not a shell
-builtin) of the POSIX <tt>cd</tt> command. Compared to the regular execline
-<a href="cd.html">cd</a>, <tt>posix-cd</tt> is uselessly bloated and slow.
-The only reason it exists is that some distributions refuse to package
-execline correctly unless it is strictly POSIX-compliant; the
-<tt>--enable-pedantic-posix</tt> configure option is there to appease them. </li> 
+builtin) of the POSIX <tt>cd</tt> command. Compared to execline's regular <tt>cd</tt>
+binary, <a href="execline-cd.html">execline-cd</a>, <tt>posix-cd</tt> is
+uselessly bloated and slow. The only reason it exists is that some
+distributions refuse to package execline correctly unless it is strictly
+POSIX-compliant; the <tt>--enable-pedantic-posix</tt> configure option is
+there to satisfy their requirements. </li> 
 </ul>
 
-
 </body>
 </html>
diff --git a/doc/posix-umask.html b/doc/posix-umask.html
index 4ee310d..0d89e58 100644
--- a/doc/posix-umask.html
+++ b/doc/posix-umask.html
@@ -48,21 +48,25 @@ specification for a <tt>umask</tt> external utility</a>.
 <h2> Notes </h2>
 
 <ul>
- <li> <tt>posix-umask</tt> is only available when execline has been configured
-with the <tt>--enable-pedantic-posix</tt> option, and in this case, the
-<a href="umask.html">cd</a> binary is a symbolic link to it. </li>
+ <li> When execline has been configured
+with the <tt>--enable-pedantic-posix</tt> option, the <tt>umask</tt>
+command is a symbolic link to it. So scripts calling <tt>umask</tt>
+will use <tt>posix-umask</tt>. When this configuration option has not
+been given, <tt>umask</tt> is a symbolic link to
+<a href="execline-umask.html">execline-umask</a>. </li>
  <li> <tt>posix-umask</tt> fully conforms to the
 <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/umask.html">POSIX
 specification</a>. When <em>prog...</em> is not empty, the behaviour of a
 <tt>umask</tt> utility is not specified by POSIX, so <tt>posix-umask</tt> extends
 the spec to be actually useful and usable in an execline program with the same
-interface as the regular execline <a href="umask.html">umask</a> command. </li>
+interface as the regular execline <a href="execline-umask.html">umask</a> command. </li>
  <li> Nobody ever executes or needs the external version (i.e. not a shell
-builtin) of the POSIX <tt>umask</tt> command. Compared to the regular execline
-<a href="umask.html">umask</a>, <tt>posix-umask</tt> is uselessly bloated and slow.
-The only reason it exists is that some distributions refuse to package
-execline correctly unless it is strictly POSIX-compliant; the
-<tt>--enable-pedantic-posix</tt> configure option is there to appease them. </li> 
+builtin) of the POSIX <tt>umask</tt> command. Compared to execline's regular <tt>umask</tt>
+binary, <a href="execline-umask.html">execline-umask</a>, <tt>posix-umask</tt> is
+uselessly bloated and slow. The only reason it exists is that some
+distributions refuse to package execline correctly unless it is strictly
+POSIX-compliant; the <tt>--enable-pedantic-posix</tt> configure option is
+there to satisfy their requirements. </li>
 </ul>
 
 </body>
diff --git a/doc/umask.html b/doc/umask.html
deleted file mode 100644
index 22ae137..0000000
--- a/doc/umask.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<html>
-  <head>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-  <meta http-equiv="Content-Language" content="en" />
-  <title>execline: the umask command</title>
-  <meta name="Description" content="execline: the umask command" />
-  <meta name="Keywords" content="execline command umask" />
-  <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
- </head>
-<body>
-
-<p>
-<a href="index.html">execline</a><br />
-<a href="//skarnet.org/software/">Software</a><br />
-<a href="//skarnet.org/">skarnet.org</a>
-</p>
-
-<h1> The <tt>umask</tt> program </h1>
-
-<p>
-<tt>umask</tt> sets the umask (file creation mask),
-then executes a program.
-</p>
-
-<h2> Interface </h2>
-
-<pre>
-     umask <em>mask</em> <em>prog...</em>
-</pre>
-
-<p>
-<tt>umask</tt> sets the current umask to <em>mask</em>,
-then execs into <em>prog...</em>.
-</p>
-
-<h2> Notes </h2>
-
-<ul>
-<li> <tt>umask</tt> is a standard shell builtin. Be careful if you want to
-use the <tt>umask</tt> command outside of an <tt>execline</tt> script. </li>
- <li> When execline has been configured with the <tt>--enable-pedantic-posix</tt>
-option, the <tt>umask</tt> binary is actually a symbolic link to the
-<a href="posix-umask.html">posix-umask</a> binary. </li>
-</ul>
-
-</body>
-</html>
diff --git a/doc/upgrade.html b/doc/upgrade.html
index bbb10aa..e286098 100644
--- a/doc/upgrade.html
+++ b/doc/upgrade.html
@@ -24,6 +24,12 @@
  <li> <a href="dollarat.html">dollarat</a> now has its <tt>-0</tt> and <tt>-d</tt>
 priority unified. (Rightmost priority.) </li>
  <li> New binary: <a href="posix-umask.html">posix-umask</a>. </li>
+ <li> <tt>cd</tt> has been renamed <a href="execline-cd.html">execline-cd</a>. </li>
+ <li> <tt>umask</tt> has been renamed <a href="execline-umask.html">execline-umask</a>. </li>
+ <li> At installation time, <tt>cd</tt> and <tt>umask</tt> symbolic links are created,
+pointing to either the <tt>posix-</tt> or <tt>execline-</tt> -prefixed version of the
+commands, depending on whether the <tt>--enable-pedantic-posix</tt> option
+was given or not. </li>
 </ul>
 
 <h2> in 2.5.3.0 </h2>
diff --git a/package/deps.mak b/package/deps.mak
index f944bc7..3aac760 100644
--- a/package/deps.mak
+++ b/package/deps.mak
@@ -4,7 +4,6 @@
 
 src/execline/background.o src/execline/background.lo: src/execline/background.c src/include/execline/execline.h
 src/execline/backtick.o src/execline/backtick.lo: src/execline/backtick.c src/include/execline/execline.h
-src/execline/cd.o src/execline/cd.lo: src/execline/cd.c
 src/execline/define.o src/execline/define.lo: src/execline/define.c src/include-local/exlsn.h
 src/execline/dollarat.o src/execline/dollarat.lo: src/execline/dollarat.c
 src/execline/elgetopt.o src/execline/elgetopt.lo: src/execline/elgetopt.c src/include/execline/execline.h
@@ -13,6 +12,8 @@ src/execline/elglob.o src/execline/elglob.lo: src/execline/elglob.c src/include-
 src/execline/emptyenv.o src/execline/emptyenv.lo: src/execline/emptyenv.c src/include/execline/execline.h
 src/execline/envfile.o src/execline/envfile.lo: src/execline/envfile.c
 src/execline/exec.o src/execline/exec.lo: src/execline/exec.c
+src/execline/execline-cd.o src/execline/execline-cd.lo: src/execline/execline-cd.c
+src/execline/execline-umask.o src/execline/execline-umask.lo: src/execline/execline-umask.c
 src/execline/execlineb.o src/execline/execlineb.lo: src/execline/execlineb.c src/include/execline/execline.h src/include-local/exlsn.h
 src/execline/exit.o src/execline/exit.lo: src/execline/exit.c
 src/execline/export.o src/execline/export.lo: src/execline/export.c
@@ -44,7 +45,6 @@ src/execline/runblock.o src/execline/runblock.lo: src/execline/runblock.c src/in
 src/execline/shift.o src/execline/shift.lo: src/execline/shift.c src/include/execline/execline.h
 src/execline/trap.o src/execline/trap.lo: src/execline/trap.c src/include/execline/execline.h
 src/execline/tryexec.o src/execline/tryexec.lo: src/execline/tryexec.c src/include/execline/execline.h
-src/execline/umask.o src/execline/umask.lo: src/execline/umask.c
 src/execline/unexport.o src/execline/unexport.lo: src/execline/unexport.c
 src/execline/wait.o src/execline/wait.lo: src/execline/wait.c src/include/execline/execline.h
 src/execline/withstdinas.o src/execline/withstdinas.lo: src/execline/withstdinas.c
@@ -78,8 +78,6 @@ background: EXTRA_LIBS := -lskarnet ${SPAWN_LIB}
 background: src/execline/background.o ${LIBEXECLINE}
 backtick: EXTRA_LIBS := -lskarnet ${SPAWN_LIB}
 backtick: src/execline/backtick.o ${LIBEXECLINE}
-cd: EXTRA_LIBS := -lskarnet
-cd: src/execline/cd.o
 define: EXTRA_LIBS := -lskarnet
 define: src/execline/define.o ${LIBEXECLINE}
 dollarat: EXTRA_LIBS := -lskarnet
@@ -96,6 +94,10 @@ envfile: EXTRA_LIBS := -lskarnet
 envfile: src/execline/envfile.o
 exec: EXTRA_LIBS := -lskarnet
 exec: src/execline/exec.o
+execline-cd: EXTRA_LIBS := -lskarnet
+execline-cd: src/execline/execline-cd.o
+execline-umask: EXTRA_LIBS := -lskarnet
+execline-umask: src/execline/execline-umask.o
 execlineb: EXTRA_LIBS := -lskarnet
 execlineb: src/execline/execlineb.o ${LIBEXECLINE}
 exit: EXTRA_LIBS := -lskarnet
@@ -158,8 +160,6 @@ trap: EXTRA_LIBS := -lskarnet ${SPAWN_LIB}
 trap: src/execline/trap.o ${LIBEXECLINE}
 tryexec: EXTRA_LIBS := -lskarnet
 tryexec: src/execline/tryexec.o ${LIBEXECLINE}
-umask: EXTRA_LIBS := -lskarnet
-umask: src/execline/umask.o
 unexport: EXTRA_LIBS := -lskarnet
 unexport: src/execline/unexport.o
 wait: EXTRA_LIBS := -lskarnet
diff --git a/package/targets.mak b/package/targets.mak
index b502988..be4764d 100644
--- a/package/targets.mak
+++ b/package/targets.mak
@@ -1,7 +1,6 @@
 BIN_TARGETS := \
 background \
 backtick \
-cd \
 define \
 dollarat \
 elgetopt \
@@ -11,6 +10,8 @@ emptyenv \
 envfile \
 exec \
 execlineb \
+execline-cd \
+execline-umask \
 exit \
 export \
 fdblock \
@@ -36,12 +37,13 @@ multidefine \
 multisubstitute \
 pipeline \
 piperw \
+posix-cd \
+posix-umask \
 redirfd \
 runblock \
 shift \
 trap \
 tryexec \
-umask \
 unexport \
 wait \
 withstdinas
@@ -51,13 +53,15 @@ LIBEXEC_TARGETS :=
 LIB_DEFS := EXECLINE=execline
 
 ifeq ($(PEDANTIC_POSIX),1)
+PEDANTIC_PREFIX := posix
+else
+PEDANTIC_PREFIX := execline
+endif
 
-BIN_TARGETS += posix-cd posix-umask
-
-$(DESTDIR)$(bindir)/cd: $(DESTDIR)$(bindir)/posix-cd
-	exec ./tools/install.sh -l posix-cd $(DESTDIR)$(bindir)/cd
+install-bin: $(DESTDIR)$(bindir)/cd $(DESTDIR)$(bindir)/umask
 
-$(DESTDIR)$(bindir)/umask: $(DESTDIR)$(bindir)/posix-umask
-	exec ./tools/install.sh -l posix-umask $(DESTDIR)$(bindir)/umask
+$(DESTDIR)$(bindir)/cd: $(DESTDIR)$(bindir)/$(PEDANTIC_PREFIX)-cd
+	exec ./tools/install.sh -l $(PEDANTIC_PREFIX)-cd $(DESTDIR)$(bindir)/cd
 
-endif
+$(DESTDIR)$(bindir)/umask: $(DESTDIR)$(bindir)/$(PEDANTIC_PREFIX)-umask
+	exec ./tools/install.sh -l $(PEDANTIC_PREFIX)-umask $(DESTDIR)$(bindir)/umask
diff --git a/src/execline/deps-exe/cd b/src/execline/deps-exe/execline-cd
index e7187fe..e7187fe 100644
--- a/src/execline/deps-exe/cd
+++ b/src/execline/deps-exe/execline-cd
diff --git a/src/execline/deps-exe/umask b/src/execline/deps-exe/execline-umask
index e7187fe..e7187fe 100644
--- a/src/execline/deps-exe/umask
+++ b/src/execline/deps-exe/execline-umask
diff --git a/src/execline/cd.c b/src/execline/execline-cd.c
index 62b877c..8f308f3 100644
--- a/src/execline/cd.c
+++ b/src/execline/execline-cd.c
@@ -8,7 +8,7 @@
 
 int main (int argc, char const *const *argv, char const *const *envp)
 {
-  PROG = "cd" ;
+  PROG = "execline-cd" ;
   if (argc < 3) strerr_dieusage(100, USAGE) ;
   if (chdir(argv[1]) == -1)
     strerr_diefu2sys(111, "chdir to ", argv[1]) ;
diff --git a/src/execline/umask.c b/src/execline/execline-umask.c
index f74f845..a7888a6 100644
--- a/src/execline/umask.c
+++ b/src/execline/execline-umask.c
@@ -10,7 +10,7 @@
 int main (int argc, char const *const *argv, char const *const *envp)
 {
   unsigned int m ;
-  PROG = "umask" ;
+  PROG = "execline-umask" ;
   if (argc < 3) strerr_dieusage(100, USAGE) ;
   if (!uint_oscan(argv[1], &m)) strerr_dieusage(100, USAGE) ;
   umask(m) ;
diff --git a/src/execline/wait.c b/src/execline/wait.c
index 2a2ead2..726cd52 100644
--- a/src/execline/wait.c
+++ b/src/execline/wait.c
@@ -1,7 +1,13 @@
 /* ISC license. */
 
+#include <execline/config.h>
+
 #include <sys/wait.h>
 #include <errno.h>
+#ifdef EXECLINE_PEDANTIC_POSIX
+#include <locale.h>
+#endif
+
 #include <skalibs/types.h>
 #include <skalibs/sgetopt.h>
 #include <skalibs/strerr2.h>
@@ -9,6 +15,7 @@
 #include <skalibs/djbunix.h>
 #include <skalibs/selfpipe.h>
 #include <skalibs/iopause.h>
+
 #include <execline/execline.h>
 
 #define USAGE "wait [ -I | -i ] [ -r | -t timeout ] { pids... }"
@@ -109,6 +116,9 @@ int main (int argc, char const **argv, char const *const *envp)
   int r ;
   int hasblock ;
   PROG = "wait" ;
+#ifdef EXECLINE_PEDANTIC_POSIX
+  setlocale(LC_ALL, "") ;  /* but of course, dear POSIX */
+#endif
   {
     subgetopt_t l = SUBGETOPT_ZERO ;
     unsigned int t = 0 ;