Appends a formatted string to the current string buffer, using the format and argument list provided.
Returns -1 on error, check errno for reasons, documented in the printf man page.
Definition at line 201 of file stringbuffer.c.
202{
203 int maxlen = (
s->capacity - (
s->str_end -
s->str_start));
204 int len = 0;
205 va_list ap2;
206
207
208
209 va_copy(ap2, ap);
210 len = vsnprintf(
s->str_end, maxlen, fmt, ap2);
211 va_end(ap2);
212
213
214 if ( len < 0 )
215 #if defined(__MINGW64_VERSION_MAJOR)
216 {
217 va_copy(ap2, ap);
218 len = _vscprintf(fmt, ap2);
219 va_end(ap2);
220 }
221 #else
222 return len;
223 #endif
224
225
226
227
228 if ( len >= maxlen )
229 {
231 maxlen = (
s->capacity - (
s->str_end -
s->str_start));
232
233
234 len = vsnprintf(
s->str_end, maxlen, fmt, ap);
235
236
237 if ( len < 0 ) return len;
238
239 if ( len >= maxlen ) return -1;
240 }
241
242
244 return len;
245}
static void stringbuffer_makeroom(stringbuffer_t *s, size_t size_to_add)
If necessary, expand the stringbuffer_t internal buffer to accommodate the specified additional size.
References s, and stringbuffer_makeroom().
Referenced by stringbuffer_aprintf().