#ifndef __VXGG_REWRITE___SHARED_H___3880294315821___ #define __VXGG_REWRITE___SHARED_H___3880294315821___ #include #include #define STATICARR_SIZE(arr) (sizeof((arr))/sizeof((arr)[0])) // Defines how `x___alloc()` functions should exit. `___VXGG___XALLOC_EXIT_ON_ERROR___ > 0` calls `error()`, and thus functions // registered with `atexit()` and `on_exit()`. `___VXGG___XALLOC_EXIT_ON_ERROR___ <= 0` calls `abort()` on error. `x___alloc()` // type functions will ALWAYS 'abort', doing otherwise defeats the purpose of the function type #define ___VXGG___XALLOC_EXIT_ON_ERROR___ 1 // `calloc()` with error checking. Calls `error()` or `abort()` on error, depending on the value of `___VXGG___XALLOC_EXIT_ON_ERROR___` void* xcalloc(size_t nmemb, size_t size); // `reallocarray()` with error checking. Calls `error()` or `abort()` on error, depending on the value of `___VXGG___XALLOC_EXIT_ON_ERROR___` void* xreallocarray(void *ptr, size_t nmemb, size_t size); // Read the entire contents of a file descriptor into a malloc()'ed buffer int readwholebuffer(char **str, unsigned long int initsize, int fd); #endif