diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2015-11-01 22:21:33 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2015-11-01 22:21:33 -0700 |
| commit | 34f8d80eac87a5e3bdf495163d8bc0fbd80ae83f (patch) | |
| tree | edb9b9d81a0d6552a2ac7e7de0df0f5a85288535 /src/buffer.cpp | |
| parent | 5f48463bdd843a9d8dfd55cfc389637b39fc1074 (diff) | |
| download | zig-34f8d80eac87a5e3bdf495163d8bc0fbd80ae83f.tar.gz zig-34f8d80eac87a5e3bdf495163d8bc0fbd80ae83f.zip | |
tokenizing hello.zig
Diffstat (limited to 'src/buffer.cpp')
| -rw-r--r-- | src/buffer.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/buffer.cpp b/src/buffer.cpp index 7bcd1b3783..ab22a87afd 100644 --- a/src/buffer.cpp +++ b/src/buffer.cpp @@ -23,3 +23,24 @@ Buf *buf_sprintf(const char *format, ...) { return buf; } + +void buf_appendf(Buf *buf, const char *format, ...) { + va_list ap, ap2; + va_start(ap, format); + va_copy(ap2, ap); + + int len1 = vsnprintf(nullptr, 0, format, ap); + assert(len1 >= 0); + + size_t required_size = len1 + 1; + + int orig_len = buf_len(buf); + + buf_resize(buf, orig_len + required_size); + + int len2 = vsnprintf(buf_ptr(buf) + orig_len, required_size, format, ap2); + assert(len2 == len1); + + va_end(ap2); + va_end(ap); +} |
