Esempio n. 1
0
void buffer_sprintf(BUFFER *wb, const char *fmt, ...)
{
    if(unlikely(!fmt || !*fmt)) return;

    buffer_need_bytes(wb, 2);

    size_t len = wb->size - wb->len - 1;
    size_t wrote;

    va_list args;
    va_start(args, fmt);
    wrote = (size_t) vsnprintfz(&wb->buffer[wb->len], len, fmt, args);
    va_end(args);

    if(unlikely(wrote >= len)) {
        // truncated
        buffer_overflow_check(wb);

        debug(D_WEB_BUFFER, "web_buffer_sprintf(): increasing web_buffer at position %zu, size = %zu\n", wb->len, wb->size);
        buffer_need_bytes(wb, len + WEB_DATA_LENGTH_INCREASE_STEP);

        va_start(args, fmt);
        buffer_vsprintf(wb, fmt, args);
        va_end(args);
    }
    else
        wb->len += wrote;

    // the buffer is \0 terminated by vsnprintf
}
Esempio n. 2
0
int snprintfz(char *dst, size_t n, const char *fmt, ...) {
    va_list args;

    va_start(args, fmt);
    int ret = vsnprintfz(dst, n, fmt, args);
    va_end(args);

    return ret;
}
Esempio n. 3
0
int snprintfz(char *buf, int size, const char *fmt,...)
{
	va_list	ap;
	va_start(ap, fmt);
	int len = vsnprintfz(buf, size, fmt, ap);
	va_end(ap);

	return	len;
}
Esempio n. 4
0
void buffer_vsprintf(BUFFER *wb, const char *fmt, va_list args)
{
    if(unlikely(!fmt || !*fmt)) return;

    buffer_need_bytes(wb, 2);

    size_t len = wb->size - wb->len - 1;

    wb->len += vsnprintfz(&wb->buffer[wb->len], len, fmt, args);

    buffer_overflow_check(wb);

    // the buffer is \0 terminated by vsnprintfz
}
Esempio n. 5
0
void buffer_snprintf(BUFFER *wb, size_t len, const char *fmt, ...)
{
    if(unlikely(!fmt || !*fmt)) return;

    buffer_need_bytes(wb, len + 1);

    va_list args;
    va_start(args, fmt);
    wb->len += vsnprintfz(&wb->buffer[wb->len], len, fmt, args);
    va_end(args);

    buffer_overflow_check(wb);

    // the buffer is \0 terminated by vsnprintfz
}