8#ifndef CLIBS_STRING_UTILS_H
9#define CLIBS_STRING_UTILS_H
27#if __STDC_VERSION__ < 202311L && !defined( __APPLE__ )
30#define strndup string_nduplicate
31#define strdup string_duplicate
36 str_t n = malloc( l + 1 );
48 size_t l = strlen( s );
49 str_t n = malloc( l + 1 );
59#if ( !defined( _GNU_SOURCE ) && !defined( __APPLE__ ) ) \
60 || defined( _POSIX_C_SOURCE )
67int vsnprintf(
char *str,
size_t size,
const char *restrict format, va_list ap );
77 va_copy( vaList, args );
79 int size =
vsnprintf( NULL, (
size_t ) 0, fmt, args );
84 *strp = malloc( size + 1 );
88 const int result =
vsnprintf( *strp, (
size_t ) size + 1, fmt, vaList );
102 const int rv =
vasprintf( strp, fmt, va );
158#define ESCAPED_CHARS "\n\t\r\f\v\"\\"
244#define STRSPLIT_EXCLUDE_EMPTY ( 1 << 0 )
245#define STRSPLIT_KEEP_DELIM_BEFORE ( 1 << 1 )
246#define STRSPLIT_KEEP_DELIM_AFTER ( 1 << 2 )
249#define STRSPLIT_STRIP_RESULTS ( 1 << 3 )
307 const regex_t *__restrict regexp,
Function and variable attributes.
#define LibraryDefined
Definition attributes.h:107
#define UseResult
Function's return value must be used.
Definition attributes.h:52
void string_split_destroy(size_t size, str_t **str_arr_cont)
UseResult char * mul_uint_strings(const char *, const char *)
unsigned int strsplit_mode_t
Definition string_utils.h:269
UseResult str_t string_stripped_l(string_t, size_t length)
UseResult str_t string_stripped(string_t)
bool string_is_empty(string_t s)
LibraryDefined int asprintf(str_t *strp, const string_t fmt,...)
Definition string_utils.h:98
UseResult str_t hex_to_decimal(string_t)
bool string_is_blank(string_t)
ssize_t string_split(str_t **str_arr_cont, string_t string, string_t split_tok, strsplit_mode_t mode)
const string_t * strjoin_strarr_t
String array being passed to string_join may be typecast to this.
Definition string_utils.h:330
void string_strip_lead_zeroes(str_t)
LibraryDefined UseResult str_t string_nduplicate(string_t s, size_t l)
strndup implementation (standard in POSIX and C23+)
Definition string_utils.h:34
UseResult str_t string_reversed(string_t)
void string_to_lower(str_t)
UseResult str_t string_replaced(string_t, string_t old, string_t new)
UseResult char * add_uint_strings(const char *, const char *)
UseResult str_t string_escaped(string_t)
int vsnprintf(char *str, size_t size, const char *restrict format, va_list ap)
va_list version of snprintf()
LibraryDefined UseResult str_t string_duplicate(string_t s)
strdup implementation (standard in POSIX and C23+)
Definition string_utils.h:46
char * str_t
Mutable string.
Definition string_utils.h:24
const char * string_t
Immutable string.
Definition string_utils.h:22
LibraryDefined int vasprintf(str_t *strp, const string_t fmt, va_list args)
Definition string_utils.h:74
bool string_is_blank_l(string_t, size_t len)
int string_replace(str_t string, string_t old, string_t new)
ssize_t string_split_regex(str_t **str_arr_cont, string_t string, const regex_t *__restrict regexp, strsplit_mode_t mode)
void string_to_upper(str_t)
UseResult str_t string_as_lower(string_t)
void string_reverse(str_t)
UseResult str_t string_unescaped(string_t)
Opposite of string_escaped()
UseResult str_t string_join(size_t len, const string_t strarr[len], string_t joiner)
UseResult str_t string_as_upper(string_t)