summary refs log tree commit diff
path: root/misc/iobuf.h
blob: fb14835bf0072d36677710a3ccbc00ef80329ff9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#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