aboutsummaryrefslogtreecommitdiff
path: root/src/base/string/makef.c
blob: 8fb9c38672a33b66e96c72fe01c7f4a5753a29ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "internal.h"

// Newf returns a new dynamic string object
string
str·makef(const byte *fmt, ...)
{
    vlong  n;
    string s;
    va_list args;

    va_start(args, fmt);
    n = vsnprintf(nil, 0, fmt, args);
    va_end(args);

    s = str·makecap(nil, 0, n);

    va_start(args, fmt);
    vsnprintf(s, n + 1, fmt, args);
    va_end(args);

    Hdr* h = (Hdr*)(s - sizeof(Hdr));
    h->len = n;

    return s;
}