X-Git-Url: https://git.sesse.net/?p=fjl;a=blobdiff_plain;f=input.c;h=6c4630f075a4fee47751a149752ac415d10f7d6d;hp=603eb6da31bf42e924a0ab83b713d38b7bc36602;hb=f6111465adacc2840f4cd25d55b3017cbf0593b2;hpb=71b4fae2b31acf415c3b07a019ae252f4d128952 diff --git a/input.c b/input.c index 603eb6d..6c4630f 100644 --- a/input.c +++ b/input.c @@ -1,13 +1,17 @@ #include #include +#include #include #include "input.h" +#define MARKER_CHAR 0xff +#define STUFF_MARKER 0x00 + void init_bit_source(struct bit_source* source, input_func_t* input_func, void* userdata) { memset(source, 0, sizeof(*source)); - source->bytes = (uint8_t*)malloc(bytereservoir_size); + source->bytes = (uint8_t*)malloc(BYTERESERVOIR_SIZE); source->input_func = input_func; source->userdata = userdata; } @@ -15,16 +19,16 @@ void init_bit_source(struct bit_source* source, input_func_t* input_func, void* void possibly_refill_slow_path(struct bit_source* source, unsigned num_bits) { // First, make sure there's stuff in the byte reservoir if we can. - assert(source->bytes_available <= bytereservoir_size); + assert(source->bytes_available <= BYTERESERVOIR_SIZE); // Read data from the source until we have enough to satisfy the request. while (source->bits_available + 8 * source->bytes_available < num_bits) { - const size_t bytes_to_read = bytereservoir_size - source->bytes_available; + const size_t bytes_to_read = BYTERESERVOIR_SIZE - source->bytes_available; const ssize_t bytes_read = (*source->input_func)(source->userdata, source->bytes + source->bytes_available, bytes_to_read); - assert(bytes_read <= bytes_to_read); + assert(bytes_read <= (ssize_t)bytes_to_read); assert(bytes_read >= (ssize_t)-1); // TODO: We need better error handling here. setjmp()/longjmp() @@ -45,11 +49,11 @@ void possibly_refill_slow_path(struct bit_source* source, unsigned num_bits) // Fill the bit reservoir one by one byte until we have enough. while (source->bits_available < num_bits) { assert(source->bytes_available > 0); - assert(source->bits_available + 8 <= bitreservoir_size); + assert(source->bits_available + 8 <= BITRESERVOIR_SIZE); uint8_t byte = *(source->bytes); ++source->bytes; --source->bytes_available; - source->bits |= ((bitreservoir_t)byte << (bitreservoir_size - source->bits_available - 8)); + source->bits |= ((bitreservoir_t)byte << (BITRESERVOIR_SIZE - source->bits_available - 8)); source->bits_available += 8; } }