Skip to contentSkip to conversation

bash 0.5.13: breaks buiding of inetutils

PATCH In review Juergen Daubert 2 participants 3 messages Oct 4, 2025 – Oct 6, 2025

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw

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/sh and 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.

Fixes 776424a8f915 ("parser: Add dollar single quote")
src/bltin/printf.c +1 -1
index ff576ff..106aecd 100644
@@ -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
#2 lore raw

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/sh and 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.

Fixes 776424a8f915 ("parser: Add dollar single quote")
src/bltin/printf.c +1 -1
index ff576ff..106aecd 100644
@@ -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') {