X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/ae5ae3bf5c5709938e3a2bb6203094ede8af45e6..84dcd42dbf0f412cb0daffc44ceb9c2baf25657e:/util.h diff --git a/util.h b/util.h index 63ceef6..de1aaa5 100644 --- a/util.h +++ b/util.h @@ -89,6 +89,21 @@ void string_item_to_iaddr(const item_t *item, uint16_t port, union iaddr *ia, const char *desc); +/* + * SBUF_DEFINE(int nbufs, size_t size); + * // Generates a number of definitions and statements organising + * // nbufs rotating char[size] buffers such that subsequent code + * // may refer to: + * char *const SBUF; + */ +#define SBUF_DEFINE(nbufs, size) \ + static int static_bufs__bufnum; \ + static char static_bufs__bufs[(nbufs)][(size)]; \ + static_bufs__bufnum++; \ + static_bufs__bufnum %= (nbufs); \ + static_bufs__bufs[static_bufs__bufnum] +#define SBUF (static_bufs__bufs[static_bufs__bufnum]) + /*----- line-buffered asynch input -----*/ enum async_linebuf_result {