#ifndef ASTR_H_INCLUDED #define ASTR_H_INCLUDED #include #include #include #include char * astr_alloc_formatted(char const *format, ...); size_t astr_formatted_length(char const *format, ...); size_t astr_formatted_length_from_va_list(char const *format, va_list const arguments); int astr_realloc_append_formatted(char **s, char const *format, ...); int astr_realloc_append_formatted_from_va_list(char **s, char const *format, va_list const arguments); inline char * astr_alloc_empty(void) { return calloc(1, sizeof(char)); } inline char * astr_alloc_formatted_from_va_list(char const *format, const va_list arguments) { char *s = NULL; int result = astr_realloc_append_formatted_from_va_list(&s, format, arguments); return (0 == result) ? s : NULL; } inline int astr_cmp(char const *s1, char const *s2) { if (s1 == s2) return 0; if (!s1) return -1; if (!s2) return 1; return strcmp(s1, s2); } inline bool astr_empty(char const *s) { return !s || !s[0]; } inline bool astr_eq(char const *s1, char const *s2) { return 0 == astr_cmp(s1, s2); } #endif