Lines Matching refs:str
28 expand_for_size(dynstring *str, size_t len)
32 if (len >= str->alloc_size * GROW_FACTOR) {
35 newlen = str->alloc_size * GROW_FACTOR;
38 str->data = realloc(str->data, newlen);
39 if (!str->data) {
40 str->alloc_size = 0;
41 str->actual_size = 0;
45 str->alloc_size = newlen;
52 * str -- a dynstring structure
59 dynstring_init(dynstring *str)
61 str->data = malloc(INITIAL_SIZE);
62 if (!str->data) return -1;
64 str->alloc_size = INITIAL_SIZE;
65 str->actual_size = 0;
66 str->data[0] = 0;
73 * str -- a dynstring structure
80 dynstring_free(dynstring *str)
82 if (str->data) {
83 free(str->data);
84 str->data = NULL;
86 str->alloc_size = 0;
87 str->actual_size = 0;
93 * str -- dynamic string
98 * Appends s2 to str
101 dynstring_append(dynstring *str, char const *s2)
103 return dynstring_append_len(str, s2, strlen(s2));
109 * str -- dynamic string
115 * Appends s2 to str
118 dynstring_append_len(dynstring *str, char const *s2, size_t len)
121 if (!str->data) return -1;
123 if (len + str->actual_size >= str->alloc_size) {
124 if (expand_for_size(str, str->actual_size + len) < 0) {
129 memcpy(str->data + str->actual_size, s2, len);
130 str->actual_size += len;
131 str->data[str->actual_size] = 0;
136 dynstring_data(dynstring *str)
138 return str->data;