X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=mem.h;h=44630efc2ca6c187373e052e1754b355424e5cc7;hb=10b49f7af56977b8c27a26438b3cfb07ca63ae90;hp=cc171a711ac00295dd5afb298968074df0939cb9;hpb=fe76e81ddfdc066e5b20c2f02cbcaf70fb4f0cd2;p=apps%2Fpfixtools.git diff --git a/mem.h b/mem.h index cc171a7..44630ef 100644 --- a/mem.h +++ b/mem.h @@ -1,5 +1,5 @@ /******************************************************************************/ -/* postlicyd: a postfix policy daemon with a lot of features */ +/* pfixtools: a collection of postfix related tools */ /* ~~~~~~~~~ */ /* ________________________________________________________________________ */ /* */ @@ -33,8 +33,8 @@ * Copyright © 2006 Pierre Habouzit */ -#ifndef POSTLICYD_MEM_H -#define POSTLICYD_MEM_H +#ifndef PFIXTOOLS_MEM_H +#define PFIXTOOLS_MEM_H #include #include @@ -53,6 +53,19 @@ #define p_dupstr(p, len) xmemdupstr((p), (len)) #define p_realloc(pp, count) xrealloc((void*)(pp), sizeof(**(pp)) * (count)) +# define p_alloc_nr(x) (((x) + 16) * 3 / 2) +# define p_allocgrow(pp, goalnb, allocnb) \ + do { \ + if ((goalnb) > *(allocnb)) { \ + if (p_alloc_nr(goalnb) > *(allocnb)) { \ + *(allocnb) = (goalnb); \ + } else { \ + *(allocnb) = p_alloc_nr(goalnb); \ + } \ + p_realloc(pp, *(allocnb)); \ + } \ + } while (0) + #ifdef __GNUC__ # define p_delete(mem_pp) \ @@ -131,4 +144,4 @@ static inline void *xmemdupstr(const void *src, ssize_t len) { } \ } -#endif /* POSTLICYD_MEM_H */ +#endif /* PFIXTOOLS_MEM_H */