diff --git a/lib/str.h b/lib/str.h index ca0ff69ad..9a19982fd 100644 --- a/lib/str.h +++ b/lib/str.h @@ -8,6 +8,7 @@ #include #include #include "compat.h" +#include "containers.h" @@ -18,6 +19,8 @@ struct _str { typedef struct _str str; +TYPED_GQUEUE(str, str) + #define STR_FORMAT "%.*s" @@ -104,9 +107,12 @@ INLINE str *str_alloc(size_t len); __attribute__((nonnull(1))) ACCESS(read_only, 1) INLINE str *str_dup(const str *s); -/* shifts pointer by len chars and decrements len. returns -1 if buffer too short, 0 otherwise */ +/* free function corresponding to str_dup() */ __attribute__((nonnull(1))) ACCESS(read_write, 1) +INLINE void str_free(str *s); +/* shifts pointer by len chars and decrements len. returns -1 if buffer too short, 0 otherwise */ +ACCESS(read_write, 1) INLINE int str_shift(str *s, size_t len); /* to revert a previously successful str_shift(). no error checking */ __attribute__((nonnull(1))) @@ -346,6 +352,9 @@ INLINE str *str_dup(const str *s) { r->s[s->len] = '\0'; return r; } +INLINE void str_free(str *s) { + free(s); +} INLINE str *str_slice_dup(const str *s) { str *r; r = g_slice_alloc(sizeof(*r));