33 #ifndef _STRING_UTIL_H 34 #define _STRING_UTIL_H 65 char *
sprintf_alloc(
const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
78 #define str_concat(...) _str_concat_private(__VA_ARGS__, NULL) 108 static inline bool streq(
const char *str1,
const char* str2)
111 for (i = 0 ; str1[i] !=
'\0' ; i++) {
112 if (str1[i] != str2[i])
116 return str2[i] ==
'\0';
123 static inline bool strcaseeq(
const char *str1,
const char* str2)
126 for (i = 0 ; str1[i] !=
'\0' ; i++) {
127 if (str1[i] == str2[i])
129 else if (islower(str1[i]) && (str1[i] - 32) == str2[i])
131 else if (isupper(str1[i]) && (str1[i] + 32) == str2[i])
137 return str2[i] ==
'\0';
172 bool str_ends_with(
const char *haystack,
const char *needle);
191 bool str_matches_any(
const char *haystack,
const char **needles,
int num_needles);
207 char *
str_substring(
const char *str,
size_t startidx,
long endidx);
215 int str_indexof(
const char *haystack,
const char *needle);
217 static inline int str_contains(
const char *haystack,
const char *needle) {
254 char *
str_replace(
const char *haystack,
const char *needle,
const char *replacement);
char * str_touppercase(char *s)
zarray_t * str_split_spaces(const char *str)
void bool string_buffer_ends_with(string_buffer_t *sb, const char *str)
char * _str_concat_private(const char *first,...)
int str_diff_idx(const char *a, const char *b)
char * str_rstrip(char *str)
string_feeder_t * string_feeder_create(const char *str)
char * str_lstrip(char *str)
int string_feeder_get_column(string_feeder_t *sf)
bool str_starts_with(const char *haystack, const char *needle)
char * str_trim(char *str)
void string_buffer_reset(string_buffer_t *sb)
bool str_ends_with(const char *haystack, const char *needle)
static bool strcaseeq(const char *str1, const char *str2)
char * string_feeder_peek_length(string_feeder_t *sf, size_t length)
void string_buffer_append(string_buffer_t *sb, char c)
string_buffer_t * string_buffer_create()
char string_buffer_pop_back(string_buffer_t *sb)
void string_buffer_appendf(string_buffer_t *sb, const char *fmt,...) __attribute__((format(printf
void string_buffer_append_string(string_buffer_t *sb, const char *str)
size_t string_buffer_size(string_buffer_t *sb)
void str_split_destroy(zarray_t *s)
char * sprintf_alloc(const char *fmt,...) __attribute__((format(printf
static bool streq(const char *str1, const char *str2)
void string_feeder_destroy(string_feeder_t *sf)
char string_feeder_peek(string_feeder_t *sf)
char * str_replace_many(const char *_haystack,...)
char * str_replace(const char *haystack, const char *needle, const char *replacement)
bool str_starts_with_any(const char *haystack, const char **needles, int num_needles)
bool string_feeder_has_next(string_feeder_t *sf)
char char * vsprintf_alloc(const char *fmt, va_list args)
char * str_substring(const char *str, size_t startidx, long endidx)
char * str_expand_envs(const char *in)
int string_feeder_get_line(string_feeder_t *sf)
int str_indexof(const char *haystack, const char *needle)
char string_feeder_next(string_feeder_t *sf)
void string_buffer_destroy(string_buffer_t *sb)
zarray_t * str_split(const char *str, const char *delim)
bool string_feeder_starts_with(string_feeder_t *sf, const char *str)
void string_feeder_require(string_feeder_t *sf, const char *str)
int str_last_indexof(const char *haystack, const char *needle)
char * string_buffer_to_string(string_buffer_t *sb)
char * str_tolowercase(char *s)
char * string_feeder_next_length(string_feeder_t *sf, size_t length)
static int str_contains(const char *haystack, const char *needle)
bool str_matches_any(const char *haystack, const char **needles, int num_needles)