bash 0.5.13: breaks buiding of inetutils
I'm using dash 0.5.13 with the two patches
[PATCH] expand: Fix off-by-one bug in expmeta [PATCH] expand: Fix typo in pmatch for wildcard search
as /bin/sh and get the folling breaking while building GNU inetutils:
...
make[2]: Entering directory '/tmp/inetutils/src/inetutils-2.6/src'
CC hostname.o
CC traceroute.o
CC inetd.o
<command-line>: error: expected expression before '/' token
inetd.c:166:31: note: in expansion of macro 'PATH_INETDPID'
166 | static const char *pid_file = PATH_INETDPID;
| ^~~~~~~~~~~~~
<command-line>: error: 'var' undeclared here (not in a function)
inetd.c:193:36: note: in expansion of macro 'PATH_INETDPID'
193 | "override pidfile (default: \"" PATH_INETDPID "\")",
| ^~~~~~~~~~~~~
<command-line>: error: 'run' undeclared here (not in a function)
inetd.c:193:36: note: in expansion of macro 'PATH_INETDPID'
193 | "override pidfile (default: \"" PATH_INETDPID "\")",
| ^~~~~~~~~~~~~
<command-line>: error: 'inetd' undeclared here (not in a function); did you mean 'int'?
inetd.c:193:36: note: in expansion of macro 'PATH_INETDPID'
193 | "override pidfile (default: \"" PATH_INETDPID "\")",
| ^~~~~~~~~~~~~inetd.c:193:50: error: expected '}' before string constant
193 | "override pidfile (default: \"" PATH_INETDPID "\")",
| ^~~~~
inetd.c:192:3: note: to match this '{'
192 | {"pidfile", 'p', "PIDFILE", OPTION_ARG_OPTIONAL,
| ^
inetd.c: In function 'main':
<command-line>: error: expected expression before '/' token
inetd.c:1955:33: note: in expansion of macro 'PATH_INETDCONF'
1955 | config_files[0] = newstr (PATH_INETDCONF);
| ^~~~~~~~~~~~~~
<command-line>: error: expected expression before '/' token
inetd.c:1956:33: note: in expansion of macro 'PATH_INETDDIR'
1956 | config_files[1] = newstr (PATH_INETDDIR);
| ^~~~~~~~~~~~~make[2]: *** [Makefile:2440: inetd.o] Error 1
Note: dash 0.5.12 works as expected with inetutils.
Greetings
Juergen
PATCH 1/1 builtin: Keep backslash on quotes outside of dollarsq
Quoted 10 lines · Juergen Daubert
I'm using dash 0.5.13 with the two patches
[PATCH] expand: Fix off-by-one bug in expmeta [PATCH] expand: Fix typo in pmatch for wildcard search
as
/bin/shand get the folling breaking while building GNU inetutils:...
make[2]: Entering directory '/tmp/inetutils/src/inetutils-2.6/src'
Quoted 7 lines
CC hostname.o
CC traceroute.o
CC inetd.o
<command-line>: error: expected expression before '/' token
inetd.c:166:31: note: in expansion of macro 'PATH_INETDPID'
166 | static const char *pid_file = PATH_INETDPID;
| ^~~~~~~~~~~~~Thanks for the report! This is due to an unintended change in behaviour of echo '\"'. Thie patch should fix the problem.
---8<---
Only dollar single quote should eat the backslash character before a quote. Make the skipping of the backslash conditional on mbchar in conv_escape.
src/bltin/printf.c +1 -1
@@ -339,7 +339,7 @@ unsigned conv_escape(char *str0, char *out0, bool mbchar)switch (ch) {default : -if (ch =='"' || ch =='\'' ) +if (mbchar && (ch =='"' || ch =='\'' ))break ;if (ch =='U' ) {
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Re: [PATCH] builtin: Keep backslash on quotes outside of dollarsq
Thanks, the patch fixes the build problem of inetutils for me.
Am 06.10.2025 05:26 schrieb Herbert Xu:
Quoted 45 lines
Quoted 10 lines · Juergen Daubert
I'm using dash 0.5.13 with the two patches
[PATCH] expand: Fix off-by-one bug in expmeta [PATCH] expand: Fix typo in pmatch for wildcard search
as
/bin/shand get the folling breaking while building GNU inetutils:...
make[2]: Entering directory '/tmp/inetutils/src/inetutils-2.6/src'Quoted 7 lines
CC hostname.o CC traceroute.o CC inetd.o <command-line>: error: expected expression before '/' token inetd.c:166:31: note: in expansion of macro 'PATH_INETDPID' 166 | static const char *pid_file = PATH_INETDPID; | ^~~~~~~~~~~~~Thanks for the report! This is due to an unintended change in behaviour of echo '\"'. Thie patch should fix the problem.
---8<---
Only dollar single quote should eat the backslash character before a quote. Make the skipping of the backslash conditional on mbchar inconv_escape.Reported-by Juergen Daubert <[email protected]>Fixes 776424a8f915 ("parser: Add dollar single quote")Signed-off-by Herbert Xu <[email protected]>src/bltin/printf.c +1
-1@@ -339,7 +339,7 @@ unsigned conv_escape(char *str0, char *out0, bool mbchar)switch (ch) {default : -if (ch =='"' || ch =='\'' ) +if (mbchar && (ch =='"' || ch =='\'' ))break ;if (ch == 'U') {