Command line editing give a wrong result for me on hush shell 1.9.1

Martinb_ARM_NOMMU_KISSDVD martinb at zeelandnet.nl
Thu Feb 14 21:52:31 UTC 2008


(repost with the 1.9.1 results)

After reading the README, TODO and some part of the source I want to report
the following behaviour

I’m still using the lash (1.2) and I’m starting to switch to hush
(I already need hush for scripting and I want to remove lash so I can spare
some space on the flashrom)

Problem is a bit hard to explain but in general I just see strange
characters if I use the backspace and cursor keys

To make it simple to explain I give some output on strace
1e output is strace attached to a working lash (1.2.0)
and I do type the keys <a> <b> <cursor left> <backspace>

read(0, "a", 1)                         = 1
write(1, "a", 1)                        = 1
read(0, "b", 1)                         = 1
write(1, "b", 1)                        = 1
read(0, "\33", 1)                       = 1
read(0, "[", 1)                         = 1
read(0, "D", 1)                         = 1
write(1, "\10", 1)                      = 1
read(0, "\177", 1)                      = 1
write(1, "\10b \10\10", 5)              = 5
read(0,

so this is giving me the correct results

If I do the exact same thing from hush (1.9.1) I get:

/ # strace -p66
Process 66 attached - interrupt to quit
select(4, [0 3], [], NULL, NULL)        = 1 (in [0])
read(0, "a", 4000)                      = 1
select(4, [0 3], [3], NULL, NULL)       = 1 (out [3])
write(3, "a", 1)                        = 1
select(4, [0 3], [], NULL, NULL)        = 1 (in [3])
read(3, "a", 4000)                      = 1
select(4, [0 3], [1], NULL, NULL)       = 1 (out [1])
write(1, "a", 1)                        = 1
select(4, [0 3], [], NULL, NULL)        = 1 (in [0])
read(0, "b", 4000)                      = 1
select(4, [0 3], [3], NULL, NULL)       = 1 (out [3])
write(3, "b", 1)                        = 1
select(4, [0 3], [], NULL, NULL)        = 1 (in [3])
read(3, "b", 4000)                      = 1
select(4, [0 3], [1], NULL, NULL)       = 1 (out [1])
write(1, "b", 1)                        = 1
select(4, [0 3], [], NULL, NULL)        = 1 (in [0])
read(0, "\33[D", 4000)                  = 3
select(4, [0 3], [3], NULL, NULL)       = 1 (out [3])
write(3, "\33[D", 3)                    = 3
select(4, [0 3], [], NULL, NULL)        = 1 (in [3])
read(3, " \377\377\277\377\376\377\177\320\363\237\345N\354 \205"..., 4000)
= 25
select(4, [0 3], [1], NULL, NULL)       = 1 (out [1])
write(1, " \377\377\277\377\376\377\177\320\363\237\345N\354 \205"..., 25) =
25
select(4, [0 3], [], NULL, NULL)        = 1 (in [0])
read(0, "\377\374\377", 4000)           = 3
select(4, [0 3], [3], NULL, NULL)       = 1 (out [3])
write(3, "", 0)                         = 0
select(4, [0 3], [], NULL, NULL)        = 1 (in [0])
read(0, "\10", 4000)                    = 1
select(4, [0 3], [3], NULL, NULL)       = 1 (out [3])
write(3, "\10", 1)                      = 1
select(4, [0 3], [], NULL, NULL)        = 1 (in [3])
read(3, " \377\377\277\377\376\377\177\320\363\237\345N\354 \205"..., 4000)
= 52
select(4, [0 3], [1], NULL, NULL)       = 1 (out [1])
write(1, " \377\377\277\377\376\377\177\320\363\237\345N\354 \205"..., 52) =
52
select(4, [0 3], [], NULL, NULL)        = 1 (in [0])
read(0, "\377\374\377\377\374\377", 4000) = 6
select(4, [0 3], [3], NULL, NULL)       = 1 (out [3])
write(3, "", 0)                         = 0
select(4, [0 3], [], NULL, NULL

So I get garbage on my console

Its possible I make some error like I did on the hush compilation (sorry)
but why does lash give me the correct results with lineediting on the same
toolchain?

I do understand that most people will comment "update toolchain" but that’s
not a option at this time (I’m working on this)
I do want to report this and I don’t mind for a "good old workaround"

It would be great if this can be solved
If i disable "line editing" then the problem is gone (but I really like to
keep the tab completion)

If anyone want me to give more debuginfo please tell me exactly what to do
because I’m no coder




[*@martinb]# arm-uclinux-elf-gcc -v
Reading specs from
/usr/local/cross-arm/20050902/bin/../lib/gcc/arm-uclinux-elf/3.4.3/specs
Configured with:
/newtoolchain/gcc-3.4.3/configure --target=arm-uclinux-elf --prefix=/usr/loc
al/cross-arm/20070902 --enable-languages=c,c++ --enable-multilib --enable-ta
rget-optspace --with-gnu-ld --disable-nls --disable-__cxa_atexit --disable-c
99 --disable-clocale --disable-c-mbchar --disable-long-long --disable-checki
ng --enable-threads=posix --disable-libstdcxx-pch --enable-cxx-flags=-D_ISOC
99_SOURCE -D_BSD_SOURCE
Thread model: posix
gcc version 3.4.3




More information about the busybox mailing list