From 392d5b378ceae5e1fd7c91ca545fcf4cd105744a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 31 Mar 2013 16:16:37 +0200 Subject: bus: parse matches locally and allow registration of callbacks for them This includes code to parse and split up match strings which will also be useful to calculate bloom filter masks when the time comes. --- src/shared/util.c | 17 +++++++++++++++++ src/shared/util.h | 2 ++ 2 files changed, 19 insertions(+) (limited to 'src/shared') diff --git a/src/shared/util.c b/src/shared/util.c index 873c95820a..760013c1fb 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5855,3 +5855,20 @@ char *strrep(const char *s, unsigned n) { *p = 0; return r; } + +void* greedy_realloc(void **p, size_t *allocated, size_t need) { + size_t a; + void *q; + + if (*allocated >= need) + return *p; + + a = MAX(64, need * 2); + q = realloc(*p, a); + if (!q) + return NULL; + + *p = q; + *allocated = a; + return q; +} diff --git a/src/shared/util.h b/src/shared/util.h index 0d05cd6653..d1cdd901a0 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -613,3 +613,5 @@ void *unhexmem(const char *p, size_t l); char *strextend(char **x, ...); char *strrep(const char *s, unsigned n); + +void* greedy_realloc(void **p, size_t *allocated, size_t need); -- cgit v1.2.3-54-g00ecf