summaryrefslogtreecommitdiff
path: root/readline/input.c
diff options
context:
space:
mode:
authorJason Molenda <jmolenda@apple.com>1999-08-02 23:48:02 +0000
committerJason Molenda <jmolenda@apple.com>1999-08-02 23:48:02 +0000
commit30727aa6d12fb866494020c0b62ab265a2bdcdfe (patch)
tree9db60d4f61ec0c8c25c06e9a8118d29b2bfc1cb1 /readline/input.c
parent1fa0ddb30b4401475d6a055946cc20909d0a9c21 (diff)
parentc862e87b3ec8647ab6c1bb08443088ea81c74225 (diff)
downloadbinutils-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.c66
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)
{