28 size_t new_buffer_size;
35 if (new_buffer_size == 0)
38 while (buffer->
used_size + size > new_buffer_size)
41 memcpy (new_buffer + buffer->
used_size, data, size);
42 buffer->
buffer = new_buffer;
62 memset (buffer, 0,
sizeof (*buffer));
68 char *ret = buffer->
buffer;
83 va_start (ap, format);
86 for (f = format; *f; f++)
93 const char *f_old = f;
98 str = va_arg (ap,
char *);
101 sprintf (str,
"%d", va_arg (ap,
int));
104 sprintf (str,
"%u", va_arg (ap,
unsigned int));
107 sprintf (str,
"%x", va_arg (ap,
unsigned int));
110 sprintf (str,
"%o", va_arg (ap,
unsigned int));
117 sprintf (str,
"%ld", va_arg (ap,
long));
120 sprintf (str,
"%lu", va_arg (ap,
unsigned long));
123 sprintf (str,
"%lx", va_arg (ap,
unsigned long));
126 sprintf (str,
"%lo", va_arg (ap,
unsigned long));
133 sprintf (str,
"%" PRId64,
134 (int64_t) va_arg (ap,
long long));
137 sprintf (str,
"%" PRIu64,
138 (uint64_t) va_arg (ap,
unsigned long long));
141 sprintf (str,
"%" PRIx64,
142 (uint64_t) va_arg (ap,
unsigned long long));
145 sprintf (str,
"%" PRIo64,
146 (uint64_t) va_arg (ap,
unsigned long long));
void buffer_free(struct buffer *buffer)
char * xml_escape_text(const char *text)
void buffer_xml_printf(struct buffer *buffer, const char *format,...)
#define buffer_grow_str(BUFFER, STRING)
PTR xrealloc(PTR ptr, size_t size)
void buffer_init(struct buffer *buffer)
char * buffer_finish(struct buffer *buffer)
void buffer_grow(struct buffer *buffer, const char *data, size_t size)