aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/rc/lex.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@swtch.com>2020-05-04 23:20:08 -0400
committerRuss Cox <rsc@swtch.com>2020-05-04 23:41:15 -0400
commit7d6a248f2c68d70f58387afc69e73e695c3d940c (patch)
tree90dfff6deaf86185368433656b62dcc131bd07ef /src/cmd/rc/lex.c
parent3caf5c238a886d06b438ec6d42f2609b8625463f (diff)
downloadplan9port-7d6a248f2c68d70f58387afc69e73e695c3d940c.tar.gz
plan9port-7d6a248f2c68d70f58387afc69e73e695c3d940c.tar.bz2
plan9port-7d6a248f2c68d70f58387afc69e73e695c3d940c.zip
rc: move free carat handling into parser
This fixes at least one shell script (printfont) that expected 'x'`{y}'z' to mean 'x'^`{y}^'z' as it now does. Before it meant: 'x'^`{y} 'z' One surprise is that adjacent lists get a free carat: (x y z)(1 2 3) is (x1 y2 z3) This doesn't affect any rc script in Plan 9 or plan9port.
Diffstat (limited to 'src/cmd/rc/lex.c')
-rw-r--r--src/cmd/rc/lex.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/cmd/rc/lex.c b/src/cmd/rc/lex.c
index 58338479..48bd70de 100644
--- a/src/cmd/rc/lex.c
+++ b/src/cmd/rc/lex.c
@@ -202,7 +202,7 @@ yylex(void)
* if the next character is the first character of a simple or compound word,
* we insert a `^' before it.
*/
- if(lastword){
+ if(lastword && flag['Y']){
lastword = 0;
if(d=='('){
advance();
@@ -215,8 +215,8 @@ yylex(void)
}
}
inquote = 0;
- if(skipwhite() && flag['Z'])
- return SP;
+ if(skipwhite() && !flag['Y'])
+ return ' ';
switch(c = advance()){
case EOF:
lastdol = 0;