summary refs log tree commit diff
path: root/src/mystring.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2011-03-11 11:07:42 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2011-03-11 11:07:42 +0800
commit6e1c8399e82c015f4e9d7d67e98d70541a3ef2d0 (patch)
tree3f0360309fb374bca544a4527f4f63897a8a0418 /src/mystring.c
parent[BUILTIN] Dotcmd should exit with zero when doing nothing (diff)
downloaddash-6e1c8399e82c015f4e9d7d67e98d70541a3ef2d0.tar.gz
dash-6e1c8399e82c015f4e9d7d67e98d70541a3ef2d0.zip
[BUILTIN] Fix backslash handling in read(1)
The new read(1) implementation incorrectly assumes that ifsbreakup
ignores characters escaped by CTLESC.  As such it fails to handle
backslashes except for escaping newlines.

This patch makes it use recordregion for every part that isn't
escaped by a backslash.

Reported-by: Jilles Tjoelker <jilles@stack.nl>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r--src/mystring.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/mystring.c b/src/mystring.c
index ce48c82..bbb6b77 100644
--- a/src/mystring.c
+++ b/src/mystring.c
@@ -62,6 +62,7 @@ const char spcstr[] = " ";
 const char snlfmt[] = "%s\n";
 const char dolatstr[] = { CTLQUOTEMARK, CTLVAR, VSNORMAL, '@', '=',
 			  CTLQUOTEMARK, '\0' };
+const char qchars[] = { CTLESC, CTLQUOTEMARK, 0 };
 const char illnum[] = "Illegal number: %s";
 const char homestr[] = "HOME";