From e3be059d4da38aa36f1aee1d56f8ceb943d92f1c Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 14 Apr 2024 22:34:44 +0200 Subject: Adding upstream version 2:4.0.4. Signed-off-by: Daniel Baumann --- local/xalloc.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 local/xalloc.h (limited to 'local/xalloc.h') diff --git a/local/xalloc.h b/local/xalloc.h new file mode 100644 index 0000000..a804689 --- /dev/null +++ b/local/xalloc.h @@ -0,0 +1,60 @@ +/* + * This header was copied from util-linux at fall 2011. + */ + +/* + * General memory allocation wrappers for malloc, realloc, calloc + * and strdup. + */ + +#ifndef PROCPS_NG_XALLOC_H +#define PROCPS_NG_XALLOC_H + +#include +#include + +#include "c.h" + +#ifndef XALLOC_EXIT_CODE +# define XALLOC_EXIT_CODE EXIT_FAILURE +#endif + +static inline __ul_alloc_size(1) +void *xmalloc(const size_t size) +{ + void *ret = malloc(size); + if (!ret && size) + xerrx(XALLOC_EXIT_CODE, "cannot allocate %zu bytes", size); + return ret; +} + +static inline __ul_alloc_size(2) +void *xrealloc(void *ptr, const size_t size) +{ + void *ret = realloc(ptr, size); + if (!ret && size) + xerrx(XALLOC_EXIT_CODE, "cannot allocate %zu bytes", size); + return ret; +} + +static inline __ul_calloc_size(1, 2) +void *xcalloc(const size_t nelems, const size_t size) +{ + void *ret = calloc(nelems, size); + if (!ret && size && nelems) + xerrx(XALLOC_EXIT_CODE, "cannot allocate %zu bytes", nelems*size); + return ret; +} + +static inline char *xstrdup(const char *str) +{ + char *ret; + if (!str) + return NULL; + ret = strdup(str); + if (!ret) + xerrx(XALLOC_EXIT_CODE, "cannot duplicate string"); + return ret; +} + +#endif /* PROCPS_NG_XALLOC_H */ -- cgit v1.2.3