aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2025-04-28 08:43:53 +0000
committerLaurent Bercot <ska@appnovation.com>2025-04-28 08:43:53 +0000
commitff3a5ecf6f6bf9bb87682272f3eb800329572833 (patch)
treeeb3c4a810eca139fce134a40abc517be7198e78f
parent7365249a1460289f0a047e12a0575ef326df194b (diff)
downloadexecline-ff3a5ecf6f6bf9bb87682272f3eb800329572833.tar.gz
Latest batch of fixes
Signed-off-by: Laurent Bercot <ska@appnovation.com>
-rw-r--r--INSTALL4
-rw-r--r--doc/case.html12
-rw-r--r--doc/dieshdiedie.html6
-rw-r--r--doc/elglob.html2
-rw-r--r--doc/eltest.html10
-rw-r--r--doc/execline-cd.html2
-rw-r--r--doc/exitcodes.html4
-rw-r--r--doc/getcwd.html2
-rw-r--r--doc/posix-cd.html4
-rw-r--r--doc/posix-umask.html4
-rw-r--r--doc/wait.html2
-rw-r--r--package/configure-snippets/configure_extra_checks1
-rwxr-xr-xtools/configure.template16
-rwxr-xr-xtools/gen-configure.el1
-rwxr-xr-xtools/gen-dotpc.sh2
15 files changed, 42 insertions, 30 deletions
diff --git a/INSTALL b/INSTALL
index 867a438..309ef22 100644
--- a/INSTALL
+++ b/INSTALL
@@ -10,8 +10,8 @@ Build Instructions
- Optional: nsss version 0.2.1.0 or later: https://skarnet.org/software/nsss/
This software will run on any operating system that implements
-POSIX.1-2008, available at:
- https://pubs.opengroup.org/onlinepubs/9699919799/
+POSIX.1-2024, available at:
+ https://pubs.opengroup.org/onlinepubs/9799919799/
* Standard usage
diff --git a/doc/case.html b/doc/case.html
index 8ae817b..5cbca2c 100644
--- a/doc/case.html
+++ b/doc/case.html
@@ -59,16 +59,16 @@ is empty. </li>
<ul>
<li> <tt>-s</tt>&nbsp;: Shell matching. The <em>regex</em> words will not be
interpreted as regular expressions, but as shell expressions to be interpreted
-via <a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/fnmatch.html">fnmatch()</a>.
+via <a href="https://pubs.opengroup.org/onlinepubs/9799919799/functions/fnmatch.html">fnmatch()</a>.
The other options also change meanings, see the <em>Shell matching</em> section below. </li>
<li> <tt>-S</tt>&nbsp;: Regular expression matching. This is the default. This
section, and all of the sections below except the <em>Shell matching</em> one,
assumes that it is the case. </li>
<li> <tt>-e</tt>&nbsp;: Interpret the <em>regex</em> words as
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03">basic
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap09.html#tag_09_03">basic
regular expressions</a>. </li>
<li> <tt>-E</tt>&nbsp;: Interpret the <em>regex</em> words as
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04">extended
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap09.html#tag_09_04">extended
regular expressions</a>. This is the default. </li>
<li> <tt>-i</tt>&nbsp;: Perform case-insensitive matches. </li>
<li> <tt>-N</tt>&nbsp;: Make the matching expression and
@@ -129,7 +129,7 @@ to the output of the <tt>/usr/bin/env</tt> command:
If the <tt>-s</tt> option has been given to <tt>case</tt>, then the <em>regex</em>
words are not interpreted as regular expressions, but as shell patterns, as is
performed by the shell's
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_04_05">case</a>
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html#tag_18_09_04_05">case</a>
conditional construct. This has the following consequences:
</p>
@@ -138,10 +138,10 @@ conditional construct. This has the following consequences:
<li> <em>prog...</em> is always executed with an unmodified environment. </li>
<li> The options to the <tt>case</tt> command change meanings: instead of
controlling how the <em>regex</em> regular expressions are interpreted by the
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/regcomp.html">regcomp()</a>
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/functions/regcomp.html">regcomp()</a>
primitive, they now control how <em>value</em> is matched against the <em>regex</em> patterns
(which are not regular expressions!) via the
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/fnmatch.html">fnmatch()</a>
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/functions/fnmatch.html">fnmatch()</a>
primitive. Namely:
<ul>
<li> <tt>-e</tt>&nbsp;: Treat a backslash as an ordinary character; do not allow
diff --git a/doc/dieshdiedie.html b/doc/dieshdiedie.html
index 383bcea..a84df31 100644
--- a/doc/dieshdiedie.html
+++ b/doc/dieshdiedie.html
@@ -34,7 +34,7 @@ on the subject</a>, section 5.)
But shells parse all the time. Worse, the <em>essence</em>
of the shell is parsing: the parser and the runner are intimately
interleaved and cannot be clearly separated, thanks to the
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html">specification</a>.
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html">specification</a>.
The shell performs several kinds of expansions, automatic filename
globbing, and automatic word splitting, in an unintuitive order,
requiring users to memorize numerous arbitrary quoting rules in
@@ -143,7 +143,7 @@ can be configured to follow the slashpackage convention.
I originally wanted a shell that could be used on an embedded system.
Even the <tt>ash</tt> shell seemed big, so I thought of writing my
own. Hence I had a look at the
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html">sh
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html">sh
specification</a>... and ran away screaming.
This specification
is <em>insane</em>. It goes against every good programming
@@ -155,7 +155,7 @@ to wannabe <tt>sh</tt> implementors.
POSIX cannot really be blamed for that: it only normalizes existing, historical
behaviour. One can argue whether it is a good idea to normalize atrocious
behaviour for historical reasons, as is the case with the infamous
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/gets.html">gets</a>
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/functions/gets.html">gets</a>
function, but this is the way it is.
</p>
diff --git a/doc/elglob.html b/doc/elglob.html
index e9e73b1..227a4ed 100644
--- a/doc/elglob.html
+++ b/doc/elglob.html
@@ -31,7 +31,7 @@ another program.
<ul>
<li> <tt>elglob</tt> performs
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/glob.html">globbing</a>
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/functions/glob.html">globbing</a>
on <em>pattern</em>. </li>
<li> It then performs
<a href="el_substitute.html">variable substitution</a> on
diff --git a/doc/eltest.html b/doc/eltest.html
index f2d5bf5..208b0ab 100644
--- a/doc/eltest.html
+++ b/doc/eltest.html
@@ -31,13 +31,13 @@ exit status.
<p>
<tt>eltest</tt> acts as the generic POSIX
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html">test</a> utility,
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html">test</a> utility,
but it diverges from the specification on how it parses ambiguous arguments: see below.
</p>
<p>
<tt>eltest</tt> supports all the standard
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html">test</a>
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html">test</a>
operands, plus all the extensions from
<a href="https://man7.org/linux/man-pages/man1/test.1.html">GNU test</a>, plus a few
extensions from the <tt>test</tt> builtin from
@@ -64,7 +64,7 @@ valid, always returns the result of the expression no matter how complex it is.
<p>
<tt>eltest</tt> <strong>is not</strong> suitable as a Single Unix
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html">test</a>
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html">test</a>
program, due to the way it disambiguates between arguments and operators, see below.
However, if you never use arguments that start with a backslash, or that have the
same name as an existing operator, then
@@ -108,7 +108,7 @@ in order to match whole strings, you must anchor <em>pattern</em> with
<h2> Argument disambiguation </h2>
<p>
- Unlike <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html">test</a>,
+ Unlike <a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html">test</a>,
which has different fixed syntax trees depending on the number of arguments it receives and
has undefined behaviour when called with more than 5 arguments, <tt>eltest</tt> accepts any
number of arguments and builds its syntax trees on the fly. This means that expressions such
@@ -122,7 +122,7 @@ when it reads the second <tt>-n</tt> it exits with a syntax error.
Doing otherwise would result in a combinatory explosion of possible syntax trees, making
it easy for users to trigger unbounded RAM consumption, and turning a simple utility into
a programming nightmare. This is why POSIX
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html">test</a>
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/test.html">test</a>
is so restricted. But we don't want the same restrictions.
</p>
diff --git a/doc/execline-cd.html b/doc/execline-cd.html
index 18759d1..1727407 100644
--- a/doc/execline-cd.html
+++ b/doc/execline-cd.html
@@ -31,7 +31,7 @@ given directory, then executes a program.
<p>
<tt>execline-cd</tt> performs a
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html">chdir()</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>
diff --git a/doc/exitcodes.html b/doc/exitcodes.html
index 3759ba7..1858b28 100644
--- a/doc/exitcodes.html
+++ b/doc/exitcodes.html
@@ -30,7 +30,7 @@ to <em>C</em>, with as much precision as possible?
<p>
The problem is, there's more information in a wstat (the
structure filled in by
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/functions/waitpid.html">waitpid()</a>)
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/functions/waitpid.html">waitpid()</a>)
than a process can report by
simply exiting. <em>P</em> could exit with the same exit code as <em>C</em>,
but then what should it do if C has been killed by a signal?
@@ -52,7 +52,7 @@ can report.
<p>
Shells have their own
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_08_02">convention</a>
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html#tag_18_08_02">convention</a>
for reporting crashes, but since any exit code greater than 127 is reported
as is, the information given by the shell is unreliable: "child exited 129"
and "child was killed by SIGHUP" are indistinguishable. When shells get
diff --git a/doc/getcwd.html b/doc/getcwd.html
index 62701c6..0301935 100644
--- a/doc/getcwd.html
+++ b/doc/getcwd.html
@@ -53,7 +53,7 @@ line instead of putting it into the environment. </li>
<li> <em>var</em> must be given without a dollar! </li>
<li> <em>var</em> must not contain <tt>=</tt>. </li>
<li> Unlike the
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pwd.html">pwd</a>
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/pwd.html">pwd</a>
POSIX command, <tt>getcwd</tt> does not depend on the PWD environment
variable and will exhibit a consistent behaviour no matter the environment. </li>
</ul>
diff --git a/doc/posix-cd.html b/doc/posix-cd.html
index fc40203..baa3cdd 100644
--- a/doc/posix-cd.html
+++ b/doc/posix-cd.html
@@ -32,7 +32,7 @@ given directory, then executes a program.
<p>
<tt>posix-cd</tt> changes the current working directory to <em>dir</em>
according to the
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/cd.html">POSIX
+<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>
@@ -47,7 +47,7 @@ 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
+<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
diff --git a/doc/posix-umask.html b/doc/posix-umask.html
index 0d89e58..5707108 100644
--- a/doc/posix-umask.html
+++ b/doc/posix-umask.html
@@ -41,7 +41,7 @@ into it.
<p>
<tt>posix-umask</tt> interprets <em>mask</em> as specified by the
-<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/umask.html">POSIX
+<a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/umask.html">POSIX
specification for a <tt>umask</tt> external utility</a>.
</p>
@@ -55,7 +55,7 @@ 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
+<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
diff --git a/doc/wait.html b/doc/wait.html
index a66cefc..8bf06f4 100644
--- a/doc/wait.html
+++ b/doc/wait.html
@@ -74,7 +74,7 @@ Do not touch the <tt>!</tt> or <tt>?</tt> variables. This is the default. </li>
<h2> Notes </h2>
<ul>
- <li> For <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/wait.html">POSIX
+ <li> For <a href="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/wait.html">POSIX
compatibility</a>, <tt>wait</tt> also works when it cannot find a block.
In that case, all the options are still supported and have the same
effect, but the rest of the command line is interpreted as <em>pids...</em>
diff --git a/package/configure-snippets/configure_extra_checks b/package/configure-snippets/configure_extra_checks
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/package/configure-snippets/configure_extra_checks
@@ -0,0 +1 @@
+
diff --git a/tools/configure.template b/tools/configure.template
index dd449d0..54e5ea1 100755
--- a/tools/configure.template
+++ b/tools/configure.template
@@ -23,6 +23,7 @@ Fine tuning of the installation directories:
--libexecdir=DIR package-scoped executables [EPREFIX/libexec]
--libdir=DIR static library files [PREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
+ --sysconfdir=DIR global configuration files [PREFIX/etc]
--pkgconfdir=DIR pkg-config .pc files [PREFIX/lib/pkgconfig]
${configure_help_install}
If no --prefix option is given, by default libdir (but not dynlibdir) will be
@@ -141,6 +142,7 @@ libexecdir='$exec_prefix/libexec'
bindir='$exec_prefix/bin'
libdir='$prefix/lib'
includedir='$prefix/include'
+sysconfdir='$prefix/etc'
pkgconfdir='$prefix/lib/pkgconfig'
shebangdir='$bindir'
sysdeps='$prefix/lib/skalibs/sysdeps'
@@ -177,10 +179,11 @@ for arg ; do
--bindir=*) bindir=${arg#*=} ;;
--libdir=*) libdir=${arg#*=} ;;
--includedir=*) includedir=${arg#*=} ;;
+ --sysconfdir=*) sysconfdir=${arg#*=} ;;
--pkgconfigdir=*) pkgconfigdir=${arg#*=} ;;
--with-sysdeps=*) sysdeps=${arg#*=} manualsysdeps=true ;;
--with-include=*) var=${arg#*=} ; stripdir var ; addincpath="$addincpath -I$var" ; depincpath="${depincpath}${depincpath:+ }-I$var" ;;
- --with-lib=*) var=${arg#*=} ; stripdir var ; addlibspath="$addlibspath -L$var" ; deplibpath="${deplibpath}${deplibpath:+ }-I$var" ; vpaths="$vpaths $var" ;;
+ --with-lib=*) var=${arg#*=} ; stripdir var ; addlibspath="$addlibspath -L$var" ; deplibpath="${deplibpath}${deplibpath:+ }-L$var" ; vpaths="$vpaths $var" ;;
--with-dynlib=*) var=${arg#*=} ; stripdir var ; addlibdpath="$addlibdpath -L$var" ; vpathd="$vpathd $var" ;;
--with-pkgconfig=*) pkgconf=${arg#*=} ;;
--with-pkgconfig) pkgconf=${PKG_CONFIG:-pkg-config} ;;
@@ -231,7 +234,7 @@ fi
# Expand installation directories
stripdir prefix
-for i in exec_prefix dynlibdir libexecdir bindir libdir includedir pkgconfdir sysdeps sproot ${configure_expand_dirs} ; do
+for i in exec_prefix dynlibdir libexecdir bindir libdir includedir sysconfdir pkgconfdir sysdeps sproot ${configure_expand_dirs} ; do
eval tmp=\${$i}
eval $i=$tmp
stripdir $i
@@ -240,7 +243,7 @@ done
# Process deps-build
if test -n "$pkgconf" || $pcw || $slashpackage ; then
oldifs="$IFS"
- while IFS=" " read cond usedinlibs pkg ver libs ; do
+ while IFS=" " read cond usedinlibs pkg ver libs ; do
IFS="$oldifs"
eval "cond=$cond; usedinlibs=$usedinlibs"
if $cond ; then
@@ -418,6 +421,8 @@ else
LDFLAGS_NOSHARED="${LDFLAGS_NOSHARED}${addlibdpath}"
fi
+${configure_extra_checks}
+
echo "Creating config.mak..."
cmdline=$(quote "$0")
for i ; do cmdline="$cmdline $(quote "$i")" ; done
@@ -436,6 +441,7 @@ libexecdir := $libexecdir
bindir := $bindir
libdir := $libdir
includedir := $includedir
+sysconfdir := $sysconfdir
pkgconfdir := $pkgconfdir
sysdeps := $sysdeps
slashpackage := $slashpackage
@@ -513,14 +519,18 @@ EOF
if $slashpackage ; then
echo "#define ${package_macro_name}_BINPREFIX \"$bindir/\""
echo "#define ${package_macro_name}_EXTBINPREFIX \"$extbinprefix/\""
+ echo "#define ${package_macro_name}_EXTLIBEXECPREFIX \"$extbinprefix/\""
elif $abspath ; then
echo "#define ${package_macro_name}_BINPREFIX \"$bindir/\""
echo "#define ${package_macro_name}_EXTBINPREFIX \"$bindir/\""
+ echo "#define ${package_macro_name}_EXTLIBEXECPREFIX \"$libexecdir/\""
else
echo "#define ${package_macro_name}_BINPREFIX \"\""
echo "#define ${package_macro_name}_EXTBINPREFIX \"\""
+ echo "#define ${package_macro_name}_EXTLIBEXECPREFIX \"$libexecdir/\""
fi
echo "#define ${package_macro_name}_LIBEXECPREFIX \"$libexecdir/\""
+echo "#define ${package_macro_name}_SYSCONFPREFIX \"$sysconfdir/\""
${configure_generate_configh}
echo
echo "#endif"
diff --git a/tools/gen-configure.el b/tools/gen-configure.el
index 2017dc2..577d86f 100755
--- a/tools/gen-configure.el
+++ b/tools/gen-configure.el
@@ -16,6 +16,7 @@ multisubstitute
importas -uS configure_case_lines
importas -uS configure_expand_dirs
importas -uS configure_slashpackage_other
+ importas -uS configure_extra_checks
importas -uS configure_generate_make
importas -uS configure_generate_configh
}
diff --git a/tools/gen-dotpc.sh b/tools/gen-dotpc.sh
index 63c8929..802c78e 100755
--- a/tools/gen-dotpc.sh
+++ b/tools/gen-dotpc.sh
@@ -85,7 +85,7 @@ echo "includedir=${includedir}"
echo "libdir=${libdir}"
echo "dynlibdir=${dynlibdir}"
echo
-echo "Name: ${library}"
+echo "Name: lib${library}"
echo "Version: ${version}"
echo "Description: ${description:-The ${library} library.}"
echo "URL: ${url:-https://skarnet.org/software/${package}/}"