diff options
| author | LLLL Colonq <llll@colonq> | 2026-09-04 16:29:31 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2026-09-04 16:29:31 -0400 |
| commit | 843ea34efc2c5ea10edc4d534304f8287f97fbbc (patch) | |
| tree | 65c2b676b650413a6154ffa7b319d4d0b6f9cff4 /pit/src/native.c | |
| parent | c01f847b68a7fcd48eb0f3d456aa993a6f69ea8d (diff) | |
pit: printf
Diffstat (limited to 'pit/src/native.c')
| -rw-r--r-- | pit/src/native.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/pit/src/native.c b/pit/src/native.c index dbb461d..2d28679 100644 --- a/pit/src/native.c +++ b/pit/src/native.c @@ -31,6 +31,20 @@ void pit_dump_to_file(pit_runtime *rt, void *vf, pit_value v, bool readable) { pit_dump_with_callback(rt, v, readable, pit_dump_to_file_callback, vf); } +i64 pit_fprintf(pit_runtime *rt, void *vf, char *format, ...) { + FILE *f = (FILE *) vf; + va_list ap; + va_start(ap, format); + char buf[8192]; + pit_printf_handler h[1]; + h[0].specifier = 'v'; h[0].callback = pit_dump_printf_callback; + int ret = pit_vsnprintf_helper(buf, sizeof(buf) - 1, format, ap, h, 1, rt); + buf[ret] = 0; + va_end(ap); + fputs(buf, f); + return ret; +} + bool pit_runtime_print_error(pit_runtime *rt) { if (!pit_value_eq(rt->error, PIT_NIL)) { for (i64 i = 0; i < rt->callstack->next; ++i) { @@ -54,7 +68,7 @@ void pit_debug_trace_(pit_runtime *rt, char *format, pit_value v) { char buf[1024] = {0}; i64 end = pit_dump(rt, buf, sizeof(buf) - 1, v, true); buf[end] = 0; - fprintf(stderr, format, buf); + pit_fprintf(rt, stderr, format, buf); } pit_value pit_value_bytes_new_file(pit_runtime *rt, char *path) { |
