Lines Matching refs:str
45 struct strbuf *str;
47 str = new0(struct strbuf, 1);
48 if (!str)
51 str->buf = new0(char, 1);
52 if (!str->buf)
54 str->len = 1;
56 str->root = new0(struct strbuf_node, 1);
57 if (!str->root)
59 str->nodes_count = 1;
60 return str;
62 free(str->buf);
63 free(str->root);
64 free(str);
78 void strbuf_complete(struct strbuf *str) {
79 if (!str)
81 if (str->root)
82 strbuf_node_cleanup(str->root);
83 str->root = NULL;
87 void strbuf_cleanup(struct strbuf *str) {
88 if (!str)
90 if (str->root)
91 strbuf_node_cleanup(str->root);
92 free(str->buf);
93 free(str);
127 ssize_t strbuf_add_string(struct strbuf *str, const char *s, size_t len) {
136 if (!str->root)
142 str->in_count++;
143 str->in_len += len;
145 node = str->root;
152 if (depth == len || (node->value_len >= len && memcmp(str->buf + off, s, len) == 0)) {
153 str->dedup_len += len;
154 str->dedup_count++;
169 buf_new = realloc(str->buf, str->len + len+1);
172 str->buf = buf_new;
173 off = str->len;
174 memcpy(str->buf + off, s, len);
175 str->len += len;
176 str->buf[str->len++] = '\0';
192 str->nodes_count++;