#ifndef BTPD_IOBUF_H #define BTPD_IOBUF_H struct iobuf { uint8_t *buf; size_t size; size_t off; size_t skip; int error; }; struct iobuf iobuf_init(size_t size); void iobuf_free(struct iobuf *iob); int iobuf_accommodate(struct iobuf *iob, size_t size); int iobuf_write(struct iobuf *iob, const void *data, size_t size); __attribute__((format (printf, 2, 3))) int iobuf_print(struct iobuf *iob, const char *fmt, ...); void *iobuf_find(struct iobuf *iob, const void *p, size_t plen); void iobuf_consumed(struct iobuf *iob, size_t count); #define iobuf_swrite(iob, s) iobuf_write(iob, s, sizeof(s) - 1) #endif