X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=secnet.git;a=blobdiff_plain;f=util.h;h=de1aaa51b8fd99ed0ecc8afbcc32b1ed5eae95ea;hp=d4663dbf6c98a65de699c23312e926c8d42e335c;hb=5e7a63be9a512bf979e5538e6a694d5fd66b9380;hpb=5f37eb107bd4370ee0ed1c1c185abb06ee873ac2 diff --git a/util.h b/util.h index d4663db..de1aaa5 100644 --- a/util.h +++ b/util.h @@ -89,7 +89,20 @@ void string_item_to_iaddr(const item_t *item, uint16_t port, union iaddr *ia, const char *desc); -#define SBUF (bufs[b]) /* temporary macro */ +/* + * 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 -----*/