hush: fix \<newline> handling on NOMMU
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
19679784c0
commit
cbfe6ad4c6
@ -6038,6 +6038,8 @@ static struct pipe *parse_stream(char **pstring,
|
|||||||
dest.o_assignment = NOT_ASSIGNMENT;
|
dest.o_assignment = NOT_ASSIGNMENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Note: nommu_addchr(&ctx.as_string, ch) is already done */
|
||||||
|
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '#':
|
case '#':
|
||||||
if (dest.length == 0) {
|
if (dest.length == 0) {
|
||||||
@ -6061,12 +6063,17 @@ static struct pipe *parse_stream(char **pstring,
|
|||||||
ch = i_getch(input);
|
ch = i_getch(input);
|
||||||
if (ch != '\n') {
|
if (ch != '\n') {
|
||||||
o_addchr(&dest, '\\');
|
o_addchr(&dest, '\\');
|
||||||
nommu_addchr(&ctx.as_string, '\\');
|
/*nommu_addchr(&ctx.as_string, '\\'); - already done */
|
||||||
o_addchr(&dest, ch);
|
o_addchr(&dest, ch);
|
||||||
nommu_addchr(&ctx.as_string, ch);
|
nommu_addchr(&ctx.as_string, ch);
|
||||||
/* Example: echo Hello \2>file
|
/* Example: echo Hello \2>file
|
||||||
* we need to know that word 2 is quoted */
|
* we need to know that word 2 is quoted */
|
||||||
dest.o_quoted = 1;
|
dest.o_quoted = 1;
|
||||||
|
} else {
|
||||||
|
#if !BB_MMU
|
||||||
|
/* It's "\<newline>". Remove trailing '\' from ctx.as_string */
|
||||||
|
ctx.as_string.data[--ctx.as_string.length] = '\0';
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '$':
|
case '$':
|
||||||
|
7
shell/hush_test/hush-misc/nommu1.right
Normal file
7
shell/hush_test/hush-misc/nommu1.right
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Ok
|
||||||
|
Ok
|
||||||
|
Ok
|
||||||
|
Ok
|
||||||
|
Ok
|
||||||
|
Ok
|
||||||
|
Done
|
12
shell/hush_test/hush-misc/nommu1.tests
Executable file
12
shell/hush_test/hush-misc/nommu1.tests
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
(echo \
|
||||||
|
Ok)
|
||||||
|
( (echo \
|
||||||
|
Ok) )
|
||||||
|
( ( (echo \
|
||||||
|
Ok) ) )
|
||||||
|
|
||||||
|
(echo \Ok)
|
||||||
|
( (echo \Ok) )
|
||||||
|
( ( (echo \Ok) ) )
|
||||||
|
|
||||||
|
echo Done
|
@ -38,16 +38,16 @@ do_test()
|
|||||||
tret=0
|
tret=0
|
||||||
cd "$1" || { echo "cannot cd $1!"; exit 1; }
|
cd "$1" || { echo "cannot cd $1!"; exit 1; }
|
||||||
for x in run-*; do
|
for x in run-*; do
|
||||||
test -f "$x" || continue
|
test -f "$x" || continue
|
||||||
case "$x" in
|
case "$x" in
|
||||||
"$0"|run-minimal|run-gprof) ;;
|
"$0"|run-minimal|run-gprof) ;;
|
||||||
*.orig|*~) ;;
|
*.orig|*~) ;;
|
||||||
#*) echo $x ; sh $x ;;
|
#*) echo $x ; sh $x ;;
|
||||||
*)
|
*)
|
||||||
sh "$x" >"../$1-$x.fail" 2>&1 && \
|
sh "$x" >"../$1-$x.fail" 2>&1 && \
|
||||||
{ echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail";
|
{ echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail";
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
# Many bash run-XXX scripts just do this,
|
# Many bash run-XXX scripts just do this,
|
||||||
# no point in duplication it all over the place
|
# no point in duplication it all over the place
|
||||||
|
Loading…
x
Reference in New Issue
Block a user