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 168 of file stringbuffer.c.
169{
170 int maxlen = (
s->capacity - (
s->str_end -
s->str_start));
171 int len = 0;
172 va_list ap2;
173
174
175
176 va_copy(ap2, ap);
177 len = vsnprintf(
s->str_end, maxlen, fmt, ap2);
178 va_end(ap2);
179
180
181 if ( len < 0 )
182 #if defined(__MINGW64_VERSION_MAJOR)
183 len = _vscprintf(fmt, ap2);
184 #else
185 return len;
186 #endif
187
188
189
190
191 if ( len >= maxlen )
192 {
194 maxlen = (
s->capacity - (
s->str_end -
s->str_start));
195
196
197 len = vsnprintf(
s->str_end, maxlen, fmt, ap);
198
199
200 if ( len < 0 ) return len;
201
202 if ( len >= maxlen ) return -1;
203 }
204
205
207 return len;
208}
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().