X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fmempool.h;h=6f6a7ffe1387a161428d583e69d560656172d014;hb=16df176fa4667d17146479219ba8816d89d1d78b;hp=8d964e4d30f174e60b94ab538fa40c12f3d0560e;hpb=cad27e97e6370f96903d42aaf345c099af0a03bd;p=libucw.git diff --git a/lib/mempool.h b/lib/mempool.h index 8d964e4d..6f6a7ffe 100644 --- a/lib/mempool.h +++ b/lib/mempool.h @@ -1,7 +1,7 @@ /* * UCW Library -- Memory Pools * - * (c) 1997--2004 Martin Mares + * (c) 1997--2005 Martin Mares * * This software may be freely distributed and used according to the terms * of the GNU Lesser General Public License. @@ -29,7 +29,7 @@ void *mp_alloc_zero(struct mempool *, uns); static inline void *mp_alloc_fast(struct mempool *p, uns l) { - byte *f = (void *) (((uns) p->free + POOL_ALIGN - 1) & ~(POOL_ALIGN - 1)); + byte *f = (void *) (((addr_int_t) p->free + POOL_ALIGN - 1) & ~(addr_int_t)(POOL_ALIGN - 1)); byte *ee = f + l; if (ee > p->last) return mp_alloc(p, l); @@ -60,14 +60,21 @@ mp_end_string(struct mempool *p, void *stop) p->free = stop; } -/* pool-str.c */ +/* mempool-str.c */ char *mp_strdup(struct mempool *, char *); +void *mp_memdup(struct mempool *, void *, uns); char *mp_multicat(struct mempool *, ...); static inline char * mp_strcat(struct mempool *mp, char *x, char *y) { return mp_multicat(mp, x, y, NULL); } +char *mp_strjoin(struct mempool *p, char **a, uns n, uns sep); + +/* mempool-fmt.c */ + +char *mp_printf(struct mempool *p, char *fmt, ...) FORMAT_CHECK(printf,2,3); +char *mp_vprintf(struct mempool *p, char *fmt, va_list args); #endif