| 231 | } |
| 232 | |
| 233 | int pn_string_vaddf(pn_string_t *string, const char *format, va_list ap) |
| 234 | { |
| 235 | va_list copy; |
| 236 | |
| 237 | if (string->size == PNI_NULL_SIZE) { |
| 238 | return PN_ERR; |
| 239 | } |
| 240 | |
| 241 | while (true) { |
| 242 | va_copy(copy, ap); |
| 243 | int err = vsnprintf(string->bytes + string->size, string->capacity - string->size, format, copy); |
| 244 | va_end(copy); |
| 245 | if (err < 0) { |
| 246 | return err; |
| 247 | } else if ((size_t) err >= string->capacity - string->size) { |
| 248 | pn_string_grow(string, string->size + err); |
| 249 | } else { |
| 250 | string->size += err; |
| 251 | return 0; |
| 252 | } |
| 253 | } |
| 254 | } |
| 255 | |
| 256 | char *pn_string_buffer(pn_string_t *string) |
| 257 | { |
no test coverage detected