From: Brendan Hansen Date: Sat, 11 Dec 2021 21:48:49 +0000 (-0600) Subject: fixed linux bugs with onyx fs X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=a7873517ab1ee297cd3515001c9391c1ed94a4cf;p=onyx.git fixed linux bugs with onyx fs --- diff --git a/modules/onyx_runtime/onyx_runtime.c b/modules/onyx_runtime/onyx_runtime.c index f8d52d11..1c26f0f7 100644 --- a/modules/onyx_runtime/onyx_runtime.c +++ b/modules/onyx_runtime/onyx_runtime.c @@ -105,28 +105,36 @@ ONYX_DEF(__file_tell, (WASM_I64), (WASM_I32)) { ONYX_DEF(__file_read, (WASM_I64, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) { i64 fd = params->data[0].of.i64; bh_file file = { (bh_file_descriptor) fd }; + + i32 curr_pos = bh_file_tell(&file); b32 success = bh_file_read_at(&file, bh_file_tell(&file), ONYX_PTR(params->data[1].of.i32), params->data[2].of.i32, (i64 *) ONYX_PTR(params->data[3].of.i32)); + bh_file_seek_to(&file, curr_pos + *(i32 *) ONYX_PTR(params->data[3].of.i32)); + results->data[0] = WASM_I32_VAL(0); - if (!success) results->data[0] = WASM_I32_VAL(6); + if (!success) results->data[0] = WASM_I32_VAL(2); return NULL; } ONYX_DEF(__file_write, (WASM_I64, WASM_I32, WASM_I32, WASM_I32), (WASM_I32)) { i64 fd = params->data[0].of.i64; bh_file file = { (bh_file_descriptor) fd }; + + i32 curr_pos = bh_file_tell(&file); b32 success = bh_file_write_at(&file, bh_file_tell(&file), ONYX_PTR(params->data[1].of.i32), params->data[2].of.i32, (i64 *) ONYX_PTR(params->data[3].of.i32)); + bh_file_seek_to(&file, curr_pos + *(i32 *) ONYX_PTR(params->data[3].of.i32)); + results->data[0] = WASM_I32_VAL(0); - if (!success) results->data[0] = WASM_I32_VAL(6); + if (!success) results->data[0] = WASM_I32_VAL(2); return NULL; }