From 7fd758bbcf7c9589e725fcaf032cf276c3242b61 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 2 Mar 2012 10:38:01 +0100 Subject: [PATCH] MINOR: buffers: provide simple pointer normalization functions Add buffer_wrap_sub() and buffer_wrap_add() to normalize buffer pointers after an addition or subtract. --- include/proto/buffers.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/proto/buffers.h b/include/proto/buffers.h index bb2dd45ee4..ec8eaab2ba 100644 --- a/include/proto/buffers.h +++ b/include/proto/buffers.h @@ -87,6 +87,22 @@ static inline int buffer_empty(const struct buffer *buf) return !buffer_not_empty(buf); } +/* Normalizes a pointer after a subtract */ +static inline char *buffer_wrap_sub(const struct buffer *buf, char *ptr) +{ + if (ptr < buf->data) + ptr += buf->size; + return ptr; +} + +/* Normalizes a pointer after an addition */ +static inline char *buffer_wrap_add(const struct buffer *buf, char *ptr) +{ + if (ptr - buf->size >= buf->data) + ptr -= buf->size; + return ptr; +} + /* Return the number of reserved bytes in the buffer, which ensures that once * all pending data are forwarded, the buffer still has global.tune.maxrewrite * bytes free. The result is between 0 and global.maxrewrite, which is itself -- 2.47.3