luaur_repl_cli/functions/
reset.rs1use crate::functions::convert_repl_requirer::{convert, luarequire_NavigateResult};
2use crate::records::repl_requirer::ReplRequirer;
3use core::ffi::{c_char, c_void, CStr};
4use luaur_cli_lib::methods::vfs_navigator_reset_to_std_in::vfs_navigator_reset_to_std_in;
5use luaur_vm::type_aliases::lua_state::lua_State;
6
7pub unsafe fn reset(
8 _l: *mut lua_State,
9 ctx: *mut c_void,
10 requirer_chunkname: *const c_char,
11) -> luarequire_NavigateResult {
12 let req = &mut *(ctx as *mut ReplRequirer);
13
14 let chunkname = CStr::from_ptr(requirer_chunkname).to_string_lossy();
15 if chunkname == "=stdin" {
16 convert(vfs_navigator_reset_to_std_in(&mut req.vfs))
17 } else if !chunkname.is_empty() && chunkname.as_bytes()[0] == b'@' {
18 convert(req.vfs.reset_to_path(&chunkname[1..]))
19 } else {
20 luarequire_NavigateResult::NAVIGATE_NOT_FOUND
21 }
22}