diff options
author | Paul LeoNerd Evans <leonerd@leonerd.org.uk> | 2012-02-13 23:40:42 +0000 |
---|---|---|
committer | Paul LeoNerd Evans <leonerd@leonerd.org.uk> | 2012-02-13 23:40:42 +0000 |
commit | e252c497ae20351882d8b98a5c59ca19e479c5a8 (patch) | |
tree | d11076c7f28d8afba90996c6c42eedb6e7deddc2 | |
parent | 5779ec3cd1e2a286265837bad264125c55875be8 (diff) | |
download | termo-e252c497ae20351882d8b98a5c59ca19e479c5a8.tar.gz termo-e252c497ae20351882d8b98a5c59ca19e479c5a8.tar.xz termo-e252c497ae20351882d8b98a5c59ca19e479c5a8.zip |
Added (undocumented) termkey_set_buffer_size()
-rw-r--r-- | t/06buffer.c | 32 | ||||
-rw-r--r-- | termkey.c | 12 | ||||
-rw-r--r-- | termkey.h.in | 1 |
3 files changed, 45 insertions, 0 deletions
diff --git a/t/06buffer.c b/t/06buffer.c new file mode 100644 index 0000000..fa1dada --- /dev/null +++ b/t/06buffer.c @@ -0,0 +1,32 @@ +#include <stdio.h> +#include "../termkey.h" +#include "taplib.h" + +int main(int argc, char *argv[]) +{ + TermKey *tk; + TermKeyKey key; + + plan_tests(9); + + tk = termkey_new_abstract("vt100", 0); + + is_int(termkey_get_buffer_remaining(tk), 256, "buffer free initially 256"); + is_int(termkey_get_buffer_size(tk), 256, "buffer size initially 256"); + + is_int(termkey_push_bytes(tk, "h", 1), 1, "push_bytes returns 1"); + + is_int(termkey_get_buffer_remaining(tk), 255, "buffer free 255 after push_bytes"); + is_int(termkey_get_buffer_size(tk), 256, "buffer size 256 after push_bytes"); + + ok(!!termkey_set_buffer_size(tk, 512), "buffer set size OK"); + + is_int(termkey_get_buffer_remaining(tk), 511, "buffer free 511 after push_bytes"); + is_int(termkey_get_buffer_size(tk), 512, "buffer size 512 after push_bytes"); + + is_int(termkey_getkey(tk, &key), TERMKEY_RES_KEY, "buffered key still useable after resize"); + + termkey_destroy(tk); + + return exit_status(); +} @@ -466,6 +466,18 @@ size_t termkey_get_buffer_size(TermKey *tk) return tk->buffsize; } +int termkey_set_buffer_size(TermKey *tk, size_t size) +{ + unsigned char *buffer = realloc(tk->buffer, size); + if(!buffer) + return 0; + + tk->buffer = buffer; + tk->buffsize = size; + + return 1; +} + size_t termkey_get_buffer_remaining(TermKey *tk) { /* Return the total number of free bytes in the buffer, because that's what diff --git a/termkey.h.in b/termkey.h.in index 6c1af1e..d7317b0 100644 --- a/termkey.h.in +++ b/termkey.h.in @@ -173,6 +173,7 @@ int termkey_get_canonflags(TermKey *tk); void termkey_set_canonflags(TermKey *tk, int); size_t termkey_get_buffer_size(TermKey *tk); +int termkey_set_buffer_size(TermKey *tk, size_t size); size_t termkey_get_buffer_remaining(TermKey *tk); |