diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-10-25 23:27:29 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-10-25 23:27:29 +0000 |
commit | 5f6aaf39cff31f5f679fe07449a9e363dd474216 (patch) | |
tree | 16dbc935b47dd2f5ebc817a7c36705566c39eb55 /libbb | |
parent | 39b0135c59555203a568bd9fb4fc4126dbdde992 (diff) | |
download | busybox-w32-5f6aaf39cff31f5f679fe07449a9e363dd474216.tar.gz busybox-w32-5f6aaf39cff31f5f679fe07449a9e363dd474216.tar.bz2 busybox-w32-5f6aaf39cff31f5f679fe07449a9e363dd474216.zip |
less: reuse former vi's key reading code. Improve SIGWINCH handling.
function old new delta
less_main 2056 2097 +41
getch_nowait 248 273 +25
read_key 310 321 +11
static.esccmds 61 69 +8
count_lines 72 74 +2
less_gets 166 142 -24
less_getch 172 43 -129
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 6/5 up/down: 91/-170) Total: -79 bytes
text data bss dec hex filename
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/read_key.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/libbb/read_key.c b/libbb/read_key.c index 598bd94f5..614e2f9e0 100644 --- a/libbb/read_key.c +++ b/libbb/read_key.c | |||
@@ -33,14 +33,16 @@ int FAST_FUNC read_key(int fd, smalluint *nbuffered, char *buffer) | |||
33 | '[','B' |0x80,KEYCODE_DOWN , | 33 | '[','B' |0x80,KEYCODE_DOWN , |
34 | '[','C' |0x80,KEYCODE_RIGHT , | 34 | '[','C' |0x80,KEYCODE_RIGHT , |
35 | '[','D' |0x80,KEYCODE_LEFT , | 35 | '[','D' |0x80,KEYCODE_LEFT , |
36 | '[','H' |0x80,KEYCODE_HOME , | 36 | '[','H' |0x80,KEYCODE_HOME , /* xterm */ |
37 | '[','F' |0x80,KEYCODE_END , | 37 | '[','F' |0x80,KEYCODE_END , /* xterm */ |
38 | '[','1','~' |0x80,KEYCODE_HOME , | 38 | '[','1','~' |0x80,KEYCODE_HOME , /* vt100? linux vt? or what? */ |
39 | '[','2','~' |0x80,KEYCODE_INSERT , | 39 | '[','2','~' |0x80,KEYCODE_INSERT , |
40 | '[','3','~' |0x80,KEYCODE_DELETE , | 40 | '[','3','~' |0x80,KEYCODE_DELETE , |
41 | '[','4','~' |0x80,KEYCODE_END , | 41 | '[','4','~' |0x80,KEYCODE_END , /* vt100? linux vt? or what? */ |
42 | '[','5','~' |0x80,KEYCODE_PAGEUP , | 42 | '[','5','~' |0x80,KEYCODE_PAGEUP , |
43 | '[','6','~' |0x80,KEYCODE_PAGEDOWN, | 43 | '[','6','~' |0x80,KEYCODE_PAGEDOWN, |
44 | '[','7','~' |0x80,KEYCODE_HOME , /* vt100? linux vt? or what? */ | ||
45 | '[','8','~' |0x80,KEYCODE_END , /* vt100? linux vt? or what? */ | ||
44 | #if 0 | 46 | #if 0 |
45 | '[','1','1','~'|0x80,KEYCODE_FUN1 , | 47 | '[','1','1','~'|0x80,KEYCODE_FUN1 , |
46 | '[','1','2','~'|0x80,KEYCODE_FUN2 , | 48 | '[','1','2','~'|0x80,KEYCODE_FUN2 , |
@@ -58,7 +60,9 @@ int FAST_FUNC read_key(int fd, smalluint *nbuffered, char *buffer) | |||
58 | 0 | 60 | 0 |
59 | }; | 61 | }; |
60 | 62 | ||
61 | n = *nbuffered; | 63 | n = 0; |
64 | if (nbuffered) | ||
65 | n = *nbuffered; | ||
62 | if (n == 0) { | 66 | if (n == 0) { |
63 | /* If no data, block waiting for input. If we read more | 67 | /* If no data, block waiting for input. If we read more |
64 | * than the minimal ESC sequence size, the "n=0" below | 68 | * than the minimal ESC sequence size, the "n=0" below |
@@ -141,6 +145,7 @@ int FAST_FUNC read_key(int fd, smalluint *nbuffered, char *buffer) | |||
141 | * by now. */ | 145 | * by now. */ |
142 | 146 | ||
143 | ret: | 147 | ret: |
144 | *nbuffered = n; | 148 | if (nbuffered) |
149 | *nbuffered = n; | ||
145 | return c; | 150 | return c; |
146 | } | 151 | } |