diff options
Diffstat (limited to '')
| -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; |
