diff --git a/Makefile b/Makefile index abdcf15..558ba18 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ LDLIBS = -fPIC -shared -ldl all: $(NAME) $(NAME): $(OBJECTS) - $(CC) $(CFLAGS) $(OBJECTS) $(LDLIBS) -o $(NAME) + $(CC) $(CFLAGS) $(OBJECTS) -o $(NAME) $(LDLIBS) -include ${DEPENDS} @@ -41,7 +41,7 @@ $(OBJ_PATH): mkdir -p $@ $(OBJ_PATH)/%.o: %.c | $(OBJ_PATH) - $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ + $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ -fPIC clean: $(RM) $(OBJECTS) $(OBJ_PATH) diff --git a/inc/funfail.h b/inc/funfail.h new file mode 100644 index 0000000..5499574 --- /dev/null +++ b/inc/funfail.h @@ -0,0 +1,10 @@ +#ifndef FUNFAIL_H +#define FUNFAIL_H + +# define _GNU_SOURCE +#include +#include +#include +#include +#include +#endif diff --git a/src/calloc.c b/src/calloc.c index 8a6ade6..9a8f056 100644 --- a/src/calloc.c +++ b/src/calloc.c @@ -1,6 +1,4 @@ -#include -#include -#include +#include "funfail.h" typedef void *(*f)(size_t __nmemb, size_t __size); @@ -22,4 +20,4 @@ void *calloc(size_t __nmemb, size_t __size) } errno = ENOMEM; return NULL; -} \ No newline at end of file +} diff --git a/src/malloc.c b/src/malloc.c index 238caec..708711c 100644 --- a/src/malloc.c +++ b/src/malloc.c @@ -1,23 +1,23 @@ -#include -#include -#include +#include "funfail.h" +typedef void *(*f)(size_t size); -typedef void* (*f)(size_t size); +void *malloc(size_t size) +{ + static f og_malloc = NULL; + static int calls = 0; + const int MAX_CALLS = getenv("MAX_MALLOC_CALLS") ? atoi(getenv("MAX_MALLOC_CALLS")) : -1; -void* malloc(size_t size) { - static f og_malloc = NULL; - static int calls = 0; - const int MAX_CALLS = getenv("MAX_MALLOC_CALLS") ? atoi(getenv("MAX_MALLOC_CALLS")) : -1; + if (!og_malloc) + { + og_malloc = (f)dlsym(RTLD_NEXT, "malloc"); + } - if (!og_malloc) { - og_malloc = (f)dlsym(RTLD_NEXT, "malloc"); - } - - calls++; - if (MAX_CALLS < 0 || calls <= MAX_CALLS) { - return og_malloc(size); - } - errno = ENOMEM; - return NULL; -} \ No newline at end of file + calls++; + if (MAX_CALLS < 0 || calls <= MAX_CALLS) + { + return og_malloc(size); + } + errno = ENOMEM; + return NULL; +} diff --git a/src/read.c b/src/read.c index 2794d26..e7b93f5 100644 --- a/src/read.c +++ b/src/read.c @@ -1,7 +1,4 @@ -#include -#include -#include -#include +#include "funfail.h" typedef ssize_t (*f)(int fd, void *buf, size_t count); @@ -23,4 +20,4 @@ ssize_t read(int fd, void *buf, size_t count) } errno = EBADF; return -1; -} \ No newline at end of file +} diff --git a/src/write.c b/src/write.c index 6e912cf..44ea538 100644 --- a/src/write.c +++ b/src/write.c @@ -1,7 +1,4 @@ -#include -#include -#include -#include +#include "funfail.h" typedef ssize_t (*f)(int fd, const void *buf, size_t count); @@ -23,4 +20,4 @@ ssize_t write(int fd, const void *buf, size_t count) } errno = EBADF; return -1; -} \ No newline at end of file +}