mirror of https://github.com/svaarala/duktape.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.4 KiB
47 lines
1.4 KiB
name: duk_push_vsprintf
|
|
|
|
proto: |
|
|
const char *duk_push_vsprintf(duk_context *ctx, const char *fmt, va_list ap);
|
|
|
|
stack: |
|
|
[ ... ] -> [ ... str! ]
|
|
|
|
summary: |
|
|
<p>Format a string like <code>vsprintf()</code> (but safely) and push the result
|
|
value to the value stack. Returns a non-<code>NULL</code> pointer to the
|
|
resulting string.</p>
|
|
|
|
<p>If <code>fmt</code> is <code>NULL</code>, an empty string is pushed to the stack
|
|
and a non-<code>NULL</code> pointer to an empty string is returned (this
|
|
behavior mimics what <code>vsprintf()</code> does for a <code>NULL</code> format
|
|
string, at least on Linux). The returned pointer can be dereferenced and a
|
|
NUL terminator character is guaranteed.</p>
|
|
|
|
<p>Unlike <code>vsprintf()</code> the string formatting is safe. Concretely,
|
|
the implementation will try increasing temporary buffer sizes until a
|
|
large enough buffer is found for the temporary formatted value.</p>
|
|
|
|
<div class="note">
|
|
<p>The <code>ap</code> argument cannot be safely reused for multiple calls.
|
|
This is a limitation of the vararg mechanism.</p>
|
|
</div>
|
|
|
|
example: |
|
|
void test_vsprintf(duk_context *ctx, ...) {
|
|
va_list ap;
|
|
|
|
va_start(ap, ctx);
|
|
duk_push_vsprintf(ctx, "test: %d+%d=%d", ap);
|
|
va_end(ap);
|
|
}
|
|
|
|
void test(duk_context *ctx) {
|
|
test_vsprintf(ctx, 2, 3, 5);
|
|
}
|
|
|
|
tags:
|
|
- stack
|
|
- string
|
|
- vararg
|
|
|
|
introduced: 1.0.0
|
|
|