Lines Matching refs:s
44 void strbuf_init(strbuf_t *s, int len) in strbuf_init() argument
53 s->buf = NULL; in strbuf_init()
54 s->size = size; in strbuf_init()
55 s->length = 0; in strbuf_init()
56 s->increment = STRBUF_DEFAULT_INCREMENT; in strbuf_init()
57 s->dynamic = 0; in strbuf_init()
58 s->reallocs = 0; in strbuf_init()
59 s->debug = 0; in strbuf_init()
61 s->buf = malloc(size); in strbuf_init()
62 if (!s->buf) in strbuf_init()
65 strbuf_ensure_null(s); in strbuf_init()
70 strbuf_t *s; in strbuf_new() local
72 s = malloc(sizeof(strbuf_t)); in strbuf_new()
73 if (!s) in strbuf_new()
76 strbuf_init(s, len); in strbuf_new()
79 s->dynamic = 1; in strbuf_new()
81 return s; in strbuf_new()
84 void strbuf_set_increment(strbuf_t *s, int increment) in strbuf_set_increment() argument
91 s->increment = increment; in strbuf_set_increment()
94 static inline void debug_stats(strbuf_t *s) in debug_stats() argument
96 if (s->debug) { in debug_stats()
98 (long)s, s->reallocs, s->length, s->size); in debug_stats()
104 void strbuf_free(strbuf_t *s) in strbuf_free() argument
106 debug_stats(s); in strbuf_free()
108 if (s->buf) { in strbuf_free()
109 free(s->buf); in strbuf_free()
110 s->buf = NULL; in strbuf_free()
112 if (s->dynamic) in strbuf_free()
113 free(s); in strbuf_free()
116 char *strbuf_free_to_string(strbuf_t *s, int *len) in strbuf_free_to_string() argument
120 debug_stats(s); in strbuf_free_to_string()
122 strbuf_ensure_null(s); in strbuf_free_to_string()
124 buf = s->buf; in strbuf_free_to_string()
126 *len = s->length; in strbuf_free_to_string()
128 if (s->dynamic) in strbuf_free_to_string()
129 free(s); in strbuf_free_to_string()
134 static int calculate_new_size(strbuf_t *s, int len) in calculate_new_size() argument
145 if (s->size > reqsize) in calculate_new_size()
148 newsize = s->size; in calculate_new_size()
149 if (s->increment < 0) { in calculate_new_size()
152 newsize *= -s->increment; in calculate_new_size()
155 newsize = ((newsize + s->increment - 1) / s->increment) * s->increment; in calculate_new_size()
164 void strbuf_resize(strbuf_t *s, int len) in strbuf_resize() argument
168 newsize = calculate_new_size(s, len); in strbuf_resize()
170 if (s->debug > 1) { in strbuf_resize()
172 (long)s, s->size, newsize); in strbuf_resize()
175 s->size = newsize; in strbuf_resize()
176 s->buf = realloc(s->buf, s->size); in strbuf_resize()
177 if (!s->buf) in strbuf_resize()
179 s->reallocs++; in strbuf_resize()
182 void strbuf_append_string(strbuf_t *s, const char *str) in strbuf_append_string() argument
186 space = strbuf_empty_length(s); in strbuf_append_string()
190 strbuf_resize(s, s->length + 1); in strbuf_append_string()
191 space = strbuf_empty_length(s); in strbuf_append_string()
194 s->buf[s->length] = str[i]; in strbuf_append_string()
195 s->length++; in strbuf_append_string()
202 void strbuf_append_fmt(strbuf_t *s, int len, const char *fmt, ...) in strbuf_append_fmt() argument
207 strbuf_ensure_empty_length(s, len); in strbuf_append_fmt()
210 fmt_len = vsnprintf(s->buf + s->length, len, fmt, arg); in strbuf_append_fmt()
216 s->length += fmt_len; in strbuf_append_fmt()
221 void strbuf_append_fmt_retry(strbuf_t *s, const char *fmt, ...) in strbuf_append_fmt_retry() argument
234 empty_len = strbuf_empty_length(s); in strbuf_append_fmt_retry()
236 fmt_len = vsnprintf(s->buf + s->length, empty_len + 1, fmt, arg); in strbuf_append_fmt_retry()
244 strbuf_resize(s, s->length + fmt_len); in strbuf_append_fmt_retry()
247 s->length += fmt_len; in strbuf_append_fmt_retry()