#include "lib.h" #include #include #include #include __attribute__((__noreturn__)) static void die() { exit(1); } void error_and_die(char *format, ...) { va_list list; va_start(list, format); vfprintf(stderr, format, list); die(); } __attribute__((__noreturn__, format(printf, 1, 2))) void perror_and_die(char *format, ...) { va_list list; va_start(list, format); vfprintf(stderr, format, list); perror(": "); die(); } void *xalloc(size_t amount) { void *res = malloc(amount); if (res == NULL) error_and_die("failed to allocate memory"); return res; } void *xzalloc(size_t amount) { void *res = xalloc(amount); memset(res, 0, sizeof(amount)); return res; } void *xrealloc(void *ptr, size_t amount) { void *res = realloc(ptr, amount); if (res == NULL) error_and_die("failed to allocate memory"); return res; }