#ifndef util_h #define util_h #include #include #include bool starts_with_any_impl(const char *str, ...); #define starts_with_any(str, ...) starts_with_any_impl(str, __VA_ARGS__, NULL) noreturn void die_impl(const char *file, int line, const char *fmt, ...); // Simple FNV-1a hash for strings size_t hash_buffer(const char *buf, size_t len); size_t hash_string(const char *str); // Macro to capture file and line automatically #define die(...) die_impl(__FILE__, __LINE__, __VA_ARGS__) #endif