diff options
-rw-r--r-- | lib.c | 4 | ||||
-rw-r--r-- | types.h | 1 | ||||
-rw-r--r-- | vm.c | 8 |
3 files changed, 8 insertions, 5 deletions
@@ -292,7 +292,7 @@ uc_print_common(uc_vm *vm, size_t nargs, FILE *fh) static uc_value_t * uc_print(uc_vm *vm, size_t nargs) { - return uc_print_common(vm, nargs, stdout); + return uc_print_common(vm, nargs, vm->output); } static uc_value_t * @@ -1495,7 +1495,7 @@ uc_printf(uc_vm *vm, size_t nargs) uc_printf_common(vm, nargs, buf); - len = fwrite(buf->buf, 1, printbuf_length(buf), stdout); + len = fwrite(buf->buf, 1, printbuf_length(buf), vm->output); printbuf_free(buf); @@ -259,6 +259,7 @@ struct uc_vm { size_t spread_values; uint8_t trace; uc_stringbuf_t *strbuf; + FILE *output; }; @@ -118,6 +118,8 @@ void uc_vm_init(uc_vm *vm, uc_parse_config *config) vm->strbuf = NULL; + vm->output = stdout; + uc_vm_reset_stack(vm); } @@ -1896,12 +1898,12 @@ uc_vm_insn_print(uc_vm *vm, enum insn_type insn) case UC_OBJECT: case UC_ARRAY: p = ucv_to_jsonstring(vm, v); - fwrite(p, 1, strlen(p), stdout); + fwrite(p, 1, strlen(p), vm->output); free(p); break; case UC_STRING: - fwrite(ucv_string_get(v), 1, ucv_string_length(v), stdout); + fwrite(ucv_string_get(v), 1, ucv_string_length(v), vm->output); break; case UC_NULL: @@ -1909,7 +1911,7 @@ uc_vm_insn_print(uc_vm *vm, enum insn_type insn) default: p = ucv_to_string(vm, v); - fwrite(p, 1, strlen(p), stdout); + fwrite(p, 1, strlen(p), vm->output); free(p); } |