← Commit list

76db5adbf

Denis Vlasenko
Denis Vlasenko
2008-06-12
FAILED Duration: 20s

Subject

hush: fix for nested $()s with escapes + testsuite

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

shell/hush.c+11 -1
@@ -3498,6 +3498,13 @@ static void add_till_closing_curly_brace(o_string *dest, struct in_str *input)
o_addqchr(dest, ch, 1);
continue;
}
+ if (ch == '\\') { /* \x. Copy verbatim. Important for \(, \) */
+ ch = i_getch(input);
+ if (ch == EOF)
+ break;
+ o_addqchr(dest, ch, 1);
+ continue;
+ }
}
}
#endif /* ENABLE_HUSH_TICK */
@@ -3556,13 +3563,16 @@ static int handle_dollar(o_string *dest, struct in_str *input)
o_addchr(dest, SPECIAL_VAR_SYMBOL);
break;
#if ENABLE_HUSH_TICK
- case '(':
+ case '(': {
+ //int pos = dest->length;
i_getch(input);
o_addchr(dest, SPECIAL_VAR_SYMBOL);
o_addchr(dest, quote_mask | '`');
add_till_closing_curly_brace(dest, input);
+ //bb_error_msg("RES '%s'", dest->data + pos);
o_addchr(dest, SPECIAL_VAR_SYMBOL);
break;
+ }
#endif
case '-':
case '_':
shell/hush_test/hush-psubst/tick3.tests+0 -1
@@ -1,4 +1,3 @@
-#!/bin/sh
TEST=Q
# \` is special
echo `echo '\'TEST\`echo ZZ\`BEST`
shell/hush_test/hush-psubst/tick4.right+7 -0
@@ -0,0 +1,7 @@
+(TEST) BEST
+TEST) BEST
+((TEST) BEST
+)
+abc
+a)c
+OK: 0
shell/hush_test/hush-psubst/tick4.tests+7 -0
@@ -0,0 +1,7 @@
+echo $(echo '(TEST)' BEST)
+echo $(echo 'TEST)' BEST)
+echo $(echo \(\(TEST\) BEST)
+echo $(echo \))
+echo $(echo a"`echo "b"`"c )
+echo $(echo a"`echo ")"`"c )
+echo OK: $?