aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul LeoNerd Evans <leonerd@leonerd.org.uk>2008-02-10 20:29:59 +0000
committerPaul LeoNerd Evans <leonerd@leonerd.org.uk>2008-02-10 20:29:59 +0000
commitc36c12b53aeae9ceecc6e4cccc1f4da72e35f9c1 (patch)
tree736852b98df887b51af000dc1dd640371bc5a3e9
parent53b0d0aca9d87361f6add5c1ff8380b8101ffceb (diff)
downloadtermo-c36c12b53aeae9ceecc6e4cccc1f4da72e35f9c1.tar.gz
termo-c36c12b53aeae9ceecc6e4cccc1f4da72e35f9c1.tar.xz
termo-c36c12b53aeae9ceecc6e4cccc1f4da72e35f9c1.zip
Implement growing the buffer after input
-rw-r--r--termkey.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/termkey.c b/termkey.c
index 644629f..2448833 100644
--- a/termkey.c
+++ b/termkey.c
@@ -640,8 +640,11 @@ termkey_result termkey_waitkey(termkey_t *tk, termkey_key *key)
void termkey_pushinput(termkey_t *tk, unsigned char *input, size_t inputlen)
{
if(tk->buffstart + tk->buffcount + inputlen > tk->buffsize) {
- fprintf(stderr, "TODO! Extend input buffer!\n");
- exit(0);
+ while(tk->buffstart + tk->buffcount + inputlen > tk->buffsize)
+ tk->buffsize *= 2;
+
+ unsigned char *newbuffer = realloc(tk->buffer, tk->buffsize);
+ tk->buffer = newbuffer;
}
// Not strcpy just in case of NUL bytes