#ifndef foobuffiohfoo #define foobuffiohfoo #include #include struct buffio { int ifd; int ofd; uint8_t *input_buf; size_t input_max_length, input_index, input_length, input_watermark; uint8_t *output_buf; size_t output_max_length, output_index, output_length, output_watermark; int b_read_cb, b_write_cb; void *user; void (*eof_cb) (struct buffio *b, void *user); void (*output_empty_cb) (struct buffio *b, void *user); void (*input_ready_cb) (struct buffio *b, void *user); }; struct buffio* buffio_new(int ifd, int ofd); void buffio_free(struct buffio *b); int buffio_write(struct buffio *b, const uint8_t *d, size_t l); int buffio_print(struct buffio *b, const char *s); int buffio_command(struct buffio *b, const char *c); void buffio_flush_input(struct buffio *b); int buffio_find_input(struct buffio *b, const char *c); char *buffio_read_line(struct buffio *b, char *c, size_t l); void buffio_dump(struct buffio *b); #endif