diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2025-04-28 08:43:53 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska@appnovation.com> | 2025-04-28 08:43:53 +0000 |
| commit | ff3a5ecf6f6bf9bb87682272f3eb800329572833 (patch) | |
| tree | eb3c4a810eca139fce134a40abc517be7198e78f | |
| parent | 7365249a1460289f0a047e12a0575ef326df194b (diff) | |
| download | execline-ff3a5ecf6f6bf9bb87682272f3eb800329572833.tar.gz | |
Latest batch of fixes
Signed-off-by: Laurent Bercot <ska@appnovation.com>
| -rw-r--r-- | INSTALL | 4 | ||||
| -rw-r--r-- | doc/case.html | 12 | ||||
| -rw-r--r-- | doc/dieshdiedie.html | 6 | ||||
| -rw-r--r-- | doc/elglob.html | 2 | ||||
| -rw-r--r-- | doc/eltest.html | 10 | ||||
| -rw-r--r-- | doc/execline-cd.html | 2 | ||||
| -rw-r--r-- | doc/exitcodes.html | 4 | ||||
| -rw-r--r-- | doc/getcwd.html | 2 | ||||
| -rw-r--r-- | doc/posix-cd.html | 4 | ||||
| -rw-r--r-- | doc/posix-umask.html | 4 | ||||
| -rw-r--r-- | doc/wait.html | 2 | ||||
| -rw-r--r-- | package/configure-snippets/configure_extra_checks | 1 | ||||
| -rwxr-xr-x | tools/configure.template | 16 | ||||
| -rwxr-xr-x | tools/gen-configure.el | 1 | ||||
| -rwxr-xr-x | tools/gen-dotpc.sh | 2 |
15 files changed, 42 insertions, 30 deletions
@@ -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> : 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> : 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> : 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> : 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> : Perform case-insensitive matches. </li> <li> <tt>-N</tt> : 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> : 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}/}" |
