diff options
author | Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> | 2024-09-25 13:16:10 +0200 |
---|---|---|
committer | Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> | 2024-09-27 11:16:22 +0200 |
commit | ee3a6cab09c8acaf6706b3710f5652e9be43b57e (patch) | |
tree | 67b0a477d132ea1347c4dd462e9d3b6cea3644e5 /xmalloc.c | |
parent | Mdmonitor: Fix startup with missing directory (diff) | |
download | mdadm-ee3a6cab09c8acaf6706b3710f5652e9be43b57e.tar.xz mdadm-ee3a6cab09c8acaf6706b3710f5652e9be43b57e.zip |
mdadm: add xmalloc.h
Move memory declaration helpers outside mdadm.h. They seems to be
useful so keep them but include separatelly. Rework them to not reffer
to Name[] declared internally in mdadm/mdmon.
This is first step to start decomplexing mdadm.h.
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Diffstat (limited to 'xmalloc.c')
-rw-r--r-- | xmalloc.c | 59 |
1 files changed, 26 insertions, 33 deletions
@@ -21,64 +21,57 @@ * Email: <neilb@suse.de> */ -#include "mdadm.h" -/*#include <sys/socket.h> -#include <sys/utsname.h> -#include <sys/wait.h> -#include <sys/un.h> -#include <ctype.h> -#include <dirent.h> -#include <signal.h> -*/ +#include "xmalloc.h" + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +static void *exit_memory_alloc_failure(void) +{ + fprintf(stderr, "Memory allocation failure - aborting\n"); + + /* TODO: replace with MDADM_STATUS_MEM_FAIL */ + exit(1); +} void *xmalloc(size_t len) { void *rv = malloc(len); - char *msg; - int n; + if (rv) return rv; - msg = ": memory allocation failure - aborting\n"; - n = write(2, Name, strlen(Name)); - n += write(2, msg, strlen(msg)); - exit(4+!!n); + + return exit_memory_alloc_failure(); } void *xrealloc(void *ptr, size_t len) { void *rv = realloc(ptr, len); - char *msg; - int n; + if (rv) return rv; - msg = ": memory allocation failure - aborting\n"; - n = write(2, Name, strlen(Name)); - n += write(2, msg, strlen(msg)); - exit(4+!!n); + + return exit_memory_alloc_failure(); } void *xcalloc(size_t num, size_t size) { void *rv = calloc(num, size); - char *msg; - int n; + if (rv) return rv; - msg = ": memory allocation failure - aborting\n"; - n = write(2, Name, strlen(Name)); - n += write(2, msg, strlen(msg)); - exit(4+!!n); + + return exit_memory_alloc_failure(); } char *xstrdup(const char *str) { char *rv = strdup(str); - char *msg; - int n; + if (rv) return rv; - msg = ": memory allocation failure - aborting\n"; - n = write(2, Name, strlen(Name)); - n += write(2, msg, strlen(msg)); - exit(4+!!n); + + return exit_memory_alloc_failure(); } |