diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-02 17:27:28 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-08-02 17:27:28 +0200 |
| commit | 84ea60ed65f6ea6fd3b2170e44bbff5de410a78b (patch) | |
| tree | 54837341ed6ed021d9b20400b8a8a5aea7bd3b62 /libbb | |
| parent | dd4b446f76736c0a13a61a38d7d816b6e6b5fca2 (diff) | |
| download | busybox-w32-84ea60ed65f6ea6fd3b2170e44bbff5de410a78b.tar.gz busybox-w32-84ea60ed65f6ea6fd3b2170e44bbff5de410a78b.tar.bz2 busybox-w32-84ea60ed65f6ea6fd3b2170e44bbff5de410a78b.zip | |
line editing: make read_line_input() not take timeout param
It's almost always -1.
function old new delta
read_line_input 3902 3912 +10
new_line_input_t 24 31 +7
pgetc 583 585 +2
save_command_ps_at_cur_history 80 78 -2
read_line 76 74 -2
fgetc_interactive 246 244 -2
addLines 84 82 -2
doCommands 2226 2222 -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/5 up/down: 19/-12) Total: 7 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
| -rw-r--r-- | libbb/lineedit.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/libbb/lineedit.c b/libbb/lineedit.c index e5721b063..0106093a1 100644 --- a/libbb/lineedit.c +++ b/libbb/lineedit.c | |||
| @@ -1267,6 +1267,7 @@ line_input_t* FAST_FUNC new_line_input_t(int flags) | |||
| 1267 | { | 1267 | { |
| 1268 | line_input_t *n = xzalloc(sizeof(*n)); | 1268 | line_input_t *n = xzalloc(sizeof(*n)); |
| 1269 | n->flags = flags; | 1269 | n->flags = flags; |
| 1270 | n->timeout = -1; | ||
| 1270 | #if MAX_HISTORY > 0 | 1271 | #if MAX_HISTORY > 0 |
| 1271 | n->max_history = MAX_HISTORY; | 1272 | n->max_history = MAX_HISTORY; |
| 1272 | #endif | 1273 | #endif |
| @@ -2130,7 +2131,7 @@ enum { | |||
| 2130 | * Backspace deletes last matched char. | 2131 | * Backspace deletes last matched char. |
| 2131 | * Control keys exit search and return to normal editing (at current history line). | 2132 | * Control keys exit search and return to normal editing (at current history line). |
| 2132 | */ | 2133 | */ |
| 2133 | static int32_t reverse_i_search(void) | 2134 | static int32_t reverse_i_search(int timeout) |
| 2134 | { | 2135 | { |
| 2135 | char match_buf[128]; /* for user input */ | 2136 | char match_buf[128]; /* for user input */ |
| 2136 | char read_key_buffer[KEYCODE_BUFFER_SIZE]; | 2137 | char read_key_buffer[KEYCODE_BUFFER_SIZE]; |
| @@ -2152,8 +2153,8 @@ static int32_t reverse_i_search(void) | |||
| 2152 | int h; | 2153 | int h; |
| 2153 | unsigned match_buf_len = strlen(match_buf); | 2154 | unsigned match_buf_len = strlen(match_buf); |
| 2154 | 2155 | ||
| 2155 | //FIXME: correct timeout? | 2156 | //FIXME: correct timeout? (i.e. count it down?) |
| 2156 | ic = lineedit_read_key(read_key_buffer, -1); | 2157 | ic = lineedit_read_key(read_key_buffer, timeout); |
| 2157 | 2158 | ||
| 2158 | switch (ic) { | 2159 | switch (ic) { |
| 2159 | case CTRL('R'): /* searching for the next match */ | 2160 | case CTRL('R'): /* searching for the next match */ |
| @@ -2256,9 +2257,10 @@ static int32_t reverse_i_search(void) | |||
| 2256 | * (in both cases the cursor remains on the input line, '\n' is not printed) | 2257 | * (in both cases the cursor remains on the input line, '\n' is not printed) |
| 2257 | * >0 length of input string, including terminating '\n' | 2258 | * >0 length of input string, including terminating '\n' |
| 2258 | */ | 2259 | */ |
| 2259 | int FAST_FUNC read_line_input(line_input_t *st, const char *prompt, char *command, int maxsize, int timeout) | 2260 | int FAST_FUNC read_line_input(line_input_t *st, const char *prompt, char *command, int maxsize) |
| 2260 | { | 2261 | { |
| 2261 | int len; | 2262 | int len; |
| 2263 | int timeout; | ||
| 2262 | #if ENABLE_FEATURE_TAB_COMPLETION | 2264 | #if ENABLE_FEATURE_TAB_COMPLETION |
| 2263 | smallint lastWasTab = 0; | 2265 | smallint lastWasTab = 0; |
| 2264 | #endif | 2266 | #endif |
| @@ -2297,8 +2299,15 @@ int FAST_FUNC read_line_input(line_input_t *st, const char *prompt, char *comman | |||
| 2297 | maxsize = MAX_LINELEN; | 2299 | maxsize = MAX_LINELEN; |
| 2298 | S.maxsize = maxsize; | 2300 | S.maxsize = maxsize; |
| 2299 | 2301 | ||
| 2300 | /* With zero flags, no other fields are ever used */ | 2302 | timeout = -1; |
| 2301 | state = st ? st : (line_input_t*) &const_int_0; | 2303 | /* Make state->flags == 0 if st is NULL. |
| 2304 | * With zeroed flags, no other fields are ever referenced. | ||
| 2305 | */ | ||
| 2306 | state = (line_input_t*) &const_int_0; | ||
| 2307 | if (st) { | ||
| 2308 | state = st; | ||
| 2309 | timeout = st->timeout; | ||
| 2310 | } | ||
| 2302 | #if MAX_HISTORY > 0 | 2311 | #if MAX_HISTORY > 0 |
| 2303 | # if ENABLE_FEATURE_EDITING_SAVEHISTORY | 2312 | # if ENABLE_FEATURE_EDITING_SAVEHISTORY |
| 2304 | if (state->hist_file) | 2313 | if (state->hist_file) |
| @@ -2510,7 +2519,7 @@ int FAST_FUNC read_line_input(line_input_t *st, const char *prompt, char *comman | |||
| 2510 | } | 2519 | } |
| 2511 | #if ENABLE_FEATURE_REVERSE_SEARCH | 2520 | #if ENABLE_FEATURE_REVERSE_SEARCH |
| 2512 | case CTRL('R'): | 2521 | case CTRL('R'): |
| 2513 | ic = ic_raw = reverse_i_search(); | 2522 | ic = ic_raw = reverse_i_search(timeout); |
| 2514 | goto again; | 2523 | goto again; |
| 2515 | #endif | 2524 | #endif |
| 2516 | 2525 | ||
