diff options
Diffstat (limited to 'strbuf.c')
-rw-r--r-- | strbuf.c | 25 |
1 files changed, 18 insertions, 7 deletions
@@ -175,13 +175,6 @@ void strbuf_resize(strbuf_t *s, int len) | |||
175 | s->reallocs++; | 175 | s->reallocs++; |
176 | } | 176 | } |
177 | 177 | ||
178 | void strbuf_append_mem(strbuf_t *s, const char *c, int len) | ||
179 | { | ||
180 | strbuf_ensure_empty_length(s, len); | ||
181 | memcpy(s->buf + s->length, c, len); | ||
182 | s->length += len; | ||
183 | } | ||
184 | |||
185 | void strbuf_append_string(strbuf_t *s, const char *str) | 178 | void strbuf_append_string(strbuf_t *s, const char *str) |
186 | { | 179 | { |
187 | int space, i; | 180 | int space, i; |
@@ -200,6 +193,24 @@ void strbuf_append_string(strbuf_t *s, const char *str) | |||
200 | } | 193 | } |
201 | } | 194 | } |
202 | 195 | ||
196 | void strbuf_append_number(strbuf_t *s, double number) | ||
197 | { | ||
198 | int len; | ||
199 | |||
200 | /* Lowest double printed with %.14g is 21 characters long: | ||
201 | * -1.7976931348623e+308 | ||
202 | * | ||
203 | * Use 32 to include the \0, and a few extra just in case.. | ||
204 | */ | ||
205 | strbuf_ensure_empty_length(s, 32); | ||
206 | |||
207 | len = sprintf(s->buf + s->length, "%.14g", number); | ||
208 | if (len < 0) | ||
209 | die("BUG: Unable to convert number"); /* This should never happen.. */ | ||
210 | |||
211 | s->length += len; | ||
212 | } | ||
213 | |||
203 | void strbuf_append_fmt(strbuf_t *s, const char *fmt, ...) | 214 | void strbuf_append_fmt(strbuf_t *s, const char *fmt, ...) |
204 | { | 215 | { |
205 | va_list arg; | 216 | va_list arg; |