aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2026-07-30 03:21:52 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2026-07-30 03:21:52 +0000
commitbca250b0b2a1df4ceb939b71a269f71501fda024 (patch)
treef5e068250593ab854c215a0ec471e12b2295de0a /doc
parenta78b3ea2b9097b0c40d7f7cfb8c03723c0d1273d (diff)
downloadexecline-bca250b0b2a1df4ceb939b71a269f71501fda024.tar.gz
Prepare for 2.10.0.0; remove pedantic posix; support loopwhilex -x ""
Diffstat (limited to 'doc')
-rw-r--r--doc/cd.html60
-rw-r--r--doc/execline-cd.html55
-rw-r--r--doc/execline-umask.html51
-rw-r--r--doc/index.html10
-rw-r--r--doc/loopwhilex.html10
-rw-r--r--doc/posix-cd.html66
-rw-r--r--doc/posix-umask.html74
-rw-r--r--doc/umask.html61
-rw-r--r--doc/upgrade.html10
9 files changed, 141 insertions, 256 deletions
diff --git a/doc/cd.html b/doc/cd.html
new file mode 100644
index 0000000..fbd6687
--- /dev/null
+++ b/doc/cd.html
@@ -0,0 +1,60 @@
+<html>
+ <head>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="color-scheme" content="dark light" />
+ <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 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>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="https://pubs.opengroup.org/onlinepubs/9799919799/functions/chdir.html">chdir()</a>
+system call on <em>dir</em>, then execs into <em>prog...</em>.
+</p>
+
+<h2> Notes </h2>
+
+<ul>
+ <li> This <tt>cd</tt> program will never be invoked by a shell, unless its full path
+is explicitly given to the shell command line. So it is perfectly acceptable and valid
+to have a <tt>cd</tt> binary in the filesystem. No confusion will be possible: shells
+will invoke their builtin
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/cd.html">cd</a>
+utility, and execline scripts will invoke the <tt>cd</tt> binary. </li>
+ <li> Previous versions of POSIX also required a conformant <tt>cd</tt> binary to exist
+in the filesystem, for no reason at all. So, in previous execline versions,
+a <tt>posix-cd</tt> binary was present, and <tt>cd</tt> could be installed as a symlink
+to it when execline was configured with the <tt>--enable-pedantic-posix</tt> option.
+This allowed distributions to make execline binaries, including <tt>cd</tt>, available
+in PATH, while strictly conforming to POSIX. This requirement has now been relaxed by
+POSIX, so the needlessly complex <tt>posix-cd</tt> program was replaced with this
+simpler <tt>cd</tt>, that can now be made available in PATH without breaking strict
+conformance. </li>
+</ul>
+
+</body>
+</html>
diff --git a/doc/execline-cd.html b/doc/execline-cd.html
deleted file mode 100644
index 6d55142..0000000
--- a/doc/execline-cd.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<html>
- <head>
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="color-scheme" content="dark light" />
- <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="https://pubs.opengroup.org/onlinepubs/9799919799/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
deleted file mode 100644
index e0aa76f..0000000
--- a/doc/execline-umask.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<html>
- <head>
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="color-scheme" content="dark light" />
- <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 e57e4af..075fcf9 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -78,8 +78,8 @@ want nsswitch-like functionality:
<h3> Download </h3>
<ul>
- <li> The current released version of execline is <a href="execline-2.9.9.2.tar.gz">2.9.9.2</a>.
-You can access its checksum <a href="execline-2.9.9.2.tar.gz.sha256">here</a>. </li>
+ <li> The current released version of execline is <a href="execline-2.10.0.0.tar.gz">2.10.0.0</a>.
+You can access its checksum <a href="execline-2.10.0.0.tar.gz.sha256">here</a>. </li>
<li> Alternatively, you can checkout a copy of the
<a href="//git.skarnet.org/cgit/execline/">execline
git repository</a>:
@@ -128,10 +128,8 @@ the previous versions of execline and the current one. </li>
(Process state control)
</p>
<ul>
-<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="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="cd.html">The <tt>cd</tt> program</a></li>
+<li><a href="umask.html">The <tt>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>
<li><a href="export.html">The <tt>export</tt> program</a></li>
diff --git a/doc/loopwhilex.html b/doc/loopwhilex.html
index 3fd6f08..860c4d8 100644
--- a/doc/loopwhilex.html
+++ b/doc/loopwhilex.html
@@ -26,7 +26,7 @@
<h2> Interface </h2>
<pre>
- loopwhilex [ -n ] [ -o <em>okcodes</em> | -x <em>breakcodes</em> ] <em>prog...</em>
+ loopwhilex [ -o <em>okcodes</em> | -x <em>breakcodes</em> ] <em>prog...</em>
</pre>
<ul>
@@ -48,9 +48,11 @@ looping as long as <em>prog</em> exits with one of the codes in
<li> <tt>-x</tt>&nbsp;<em>breakcodes</em>&nbsp;: like the previous
option, but with inverted meaning - the listed exit codes are codes
that will break the loop and exit, and the unlisted exit codes will keep
-the loop running. </li>
- <li> <tt>-n</tt>&nbsp;: negate the test. This option is now redundant,
-and may disappear soon. </li>
+the loop running. <tt>-x ""</tt> will make <tt>loopwhilex</tt> loop
+forever. </li>
+ <li> If both <tt>-o</tt> and <tt>-x</tt> options are given <tt>-o</tt>
+has priority and the list given by <tt>-x</tt> is ignored. If none of
+these options is given, <tt>-o 0</tt> is the default. </li>
</ul>
<h2> Notes </h2>
diff --git a/doc/posix-cd.html b/doc/posix-cd.html
deleted file mode 100644
index 6419d0a..0000000
--- a/doc/posix-cd.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<html>
- <head>
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="color-scheme" content="dark light" />
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta http-equiv="Content-Language" content="en" />
- <title>execline: the posix-cd command</title>
- <meta name="Description" content="execline: the posix-cd command" />
- <meta name="Keywords" content="execline command cd chdir posix posix-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>posix-cd</tt> program </h1>
-
-<p>
-<tt>posix-cd</tt> changes the current working directory to a
-given directory, then executes a program.
-</p>
-
-<h2> Interface </h2>
-
-<pre>
- posix-cd [ -L | -P ] <em>dir</em> <em>prog...</em>
-</pre>
-
-<p>
-<tt>posix-cd</tt> changes the current working directory to <em>dir</em>
-according to the
-<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/cd.html">POSIX
-specification for a <tt>cd</tt> external utility</a>. Then, if <em>prog...</em> is
-not empty, it execs into it.
-</p>
-
-<h2> Notes </h2>
-
-<ul>
- <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/9799919799/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="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 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
deleted file mode 100644
index f3ab05f..0000000
--- a/doc/posix-umask.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<html>
- <head>
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="color-scheme" content="dark light" />
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <meta http-equiv="Content-Language" content="en" />
- <title>execline: the posix-umask command</title>
- <meta name="Description" content="execline: the posix-umask command" />
- <meta name="Keywords" content="execline command umask mask posix posix-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>posix-umask</tt> program </h1>
-
-<p>
-<tt>posix-umask</tt> changes its file mode creation mask, then executes a program.
-</p>
-
-<h2> Interface </h2>
-
-<pre>
- posix-umask [ -S ] [ <em>mask</em> ] [ <em>prog...</em> ]
-</pre>
-
-<p>
-When called with no argument, <tt>posix-umask</tt> prints the value of the
-file mode creation mask of the invoking process, then exits 0.
-</p>
-
-<p>
- When called with a <em>mask</em> argument, <tt>posix-umask</tt> changes
-its file mode creation mask; then, if <em>prog...</em> is not empty, it execs
-into it.
-</p>
-
-<p>
- <tt>posix-umask</tt> interprets <em>mask</em> as specified by the
-<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/umask.html">POSIX
-specification for a <tt>umask</tt> external utility</a>.
-</p>
-
-<h2> Notes </h2>
-
-<ul>
- <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/9799919799/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="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 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>
-</html>
diff --git a/doc/umask.html b/doc/umask.html
new file mode 100644
index 0000000..d837130
--- /dev/null
+++ b/doc/umask.html
@@ -0,0 +1,61 @@
+<html>
+ <head>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="color-scheme" content="dark light" />
+ <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 mask" />
+ <!-- <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> changes its file mode creation mask, then executes a program.
+Alternatively, it can print the current mask.
+</p>
+
+<h2> Interface </h2>
+
+<pre>
+ umask [ -S ] [ <em>mask</em> ] [ <em>prog...</em> ]
+</pre>
+
+<p>
+When called with no argument, <tt>umask</tt> prints the value of the
+file mode creation mask of the invoking process, then exits 0.
+</p>
+
+<p>
+ When called with a <em>mask</em> argument, <tt>umask</tt> changes
+its file mode creation mask; then, if <em>prog...</em> is not empty, it execs
+into it.
+</p>
+
+<p>
+ <tt>umask</tt> interprets <em>mask</em> as specified by the
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/umask.html">POSIX
+specification for a <tt>umask</tt> external utility</a>.
+</p>
+
+<h2> Notes </h2>
+
+<ul>
+ <li> <tt>umask</tt> fully conforms to the
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/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>umask</tt> extends
+the spec to be actually useful and usable in an execline program. </li>
+</ul>
+
+</body>
+</html>
diff --git a/doc/upgrade.html b/doc/upgrade.html
index e814afa..31de4b9 100644
--- a/doc/upgrade.html
+++ b/doc/upgrade.html
@@ -19,6 +19,16 @@
<h1> What has changed in execline </h1>
+<h2> in 2.10.0.0 </h2>
+
+<ul>
+ <li> The <tt>--enable-pedantic-posix</tt> configuration option has
+been removed, due to POSIX relaxing requirements on intrinsic utilities. </li>
+ <li> The <a href="cd.html">cd</a> binary is now what was previously <tt>execline-cd</tt>. </li>
+ <li> The <a href="umask.html">umask</a> binary is now what was previously <tt>posix-umask</tt>,
+(without locale support, not that it had much to start with) </li>
+</ul>
+
<h2> in 2.9.9.2 </h2>
<ul>