diff options
author | Jason Molenda <jmolenda@apple.com> | 1999-08-02 23:48:02 +0000 |
---|---|---|
committer | Jason Molenda <jmolenda@apple.com> | 1999-08-02 23:48:02 +0000 |
commit | 30727aa6d12fb866494020c0b62ab265a2bdcdfe (patch) | |
tree | 9db60d4f61ec0c8c25c06e9a8118d29b2bfc1cb1 /readline/input.c | |
parent | 1fa0ddb30b4401475d6a055946cc20909d0a9c21 (diff) | |
parent | c862e87b3ec8647ab6c1bb08443088ea81c74225 (diff) | |
download | binutils-gdb-30727aa6d12fb866494020c0b62ab265a2bdcdfe.tar.gz |
This commit was generated by cvs2svn to track changes on a CVS vendor
branch.
Diffstat (limited to 'readline/input.c')
-rw-r--r-- | readline/input.c | 66 |
1 files changed, 38 insertions, 28 deletions
diff --git a/readline/input.c b/readline/input.c index 7e3c0feb5ce..3b48483d262 100644 --- a/readline/input.c +++ b/readline/input.c @@ -124,38 +124,13 @@ _rl_any_typein () return any_typein; } -/* Add KEY to the buffer of characters to be read. */ -int -rl_stuff_char (key) - int key; -{ - if (key == EOF) - { - key = NEWLINE; - rl_pending_input = EOF; - } - ibuffer[push_index++] = key; - if (push_index >= ibuffer_len) - push_index = 0; - return push_index; -} - -/* Make C be the next command to be executed. */ -int -rl_execute_next (c) - int c; -{ - rl_pending_input = c; - return 0; -} - -/* Return the amount of space available in the - buffer for stuffing characters. */ +/* Return the amount of space available in the buffer for stuffing + characters. */ static int ibuffer_space () { if (pop_index > push_index) - return (pop_index - push_index); + return (pop_index - push_index - 1); else return (ibuffer_len - (push_index - pop_index)); } @@ -341,6 +316,36 @@ _rl_insert_typein (c) free (string); } +/* Add KEY to the buffer of characters to be read. Returns 1 if the + character was stuffed correctly; 0 otherwise. */ +int +rl_stuff_char (key) + int key; +{ + if (ibuffer_space () == 0) + return 0; + + if (key == EOF) + { + key = NEWLINE; + rl_pending_input = EOF; + } + ibuffer[push_index++] = key; + if (push_index >= ibuffer_len) + push_index = 0; + + return 1; +} + +/* Make C be the next command to be executed. */ +int +rl_execute_next (c) + int c; +{ + rl_pending_input = c; + return 0; +} + /* **************************************************************** */ /* */ /* Character Input */ @@ -409,6 +414,11 @@ rl_getc (stream) if (result == 0) return (EOF); +#if defined (__BEOS__) + if (errno == EINTR) + continue; +#endif + #if defined (EWOULDBLOCK) if (errno == EWOULDBLOCK) { |