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
Im still using the lash (1.2) and Im 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 thats
not a option at this time (Im working on this)
I do want to report this and I dont 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 Im 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