From 843ea34efc2c5ea10edc4d534304f8287f97fbbc Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Fri, 4 Sep 2026 16:29:31 -0400 Subject: pit: printf --- pit/src/runtime/dump.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'pit/src/runtime/dump.c') diff --git a/pit/src/runtime/dump.c b/pit/src/runtime/dump.c index 9627a36..4d67bb6 100644 --- a/pit/src/runtime/dump.c +++ b/pit/src/runtime/dump.c @@ -183,3 +183,24 @@ i64 pit_dump(pit_runtime *rt, char *buf, i64 len, pit_value v, bool readable) { pit_dump_with_callback(rt, v, readable, pit_dump_to_buf_callback, &cl); return cl.off; } + +i64 pit_dump_printf_callback(va_list ap, char *buf, size_t len, void *data) { + pit_runtime *rt = (pit_runtime *) data; + pit_value arg = va_arg(ap, pit_value); + return pit_dump(rt, buf, (i64) len, arg, false); +} +i64 pit_vsnprintf(pit_runtime *rt, char *buf, i64 len, char *format, va_list ap) { + if (len == 0) return 0; + pit_printf_handler h[1]; + h[0].specifier = 'v'; h[0].callback = pit_dump_printf_callback; + i64 ret = pit_vsnprintf_helper(buf, (size_t) (len - 1), format, ap, h, 1, rt); + buf[ret] = 0; + return ret; +} +i64 pit_snprintf(pit_runtime *rt, char *buf, i64 len, char *format, ...) { + va_list ap; + va_start(ap, format); + i64 ret = pit_vsnprintf(rt, buf, len, format, ap); + va_end(ap); + return ret; +} -- cgit v1.3.1