luad

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 9d91c35caed66a8c6e5b6f3f93a07833e8936861
parent 56c7d48e654fe00e1e118a7c91a9fb91fc813456
Author: Daniel Barlow <dan@telent.net>
Date:   Fri,  8 May 2026 23:04:02 +0100

set up arg array in lua

Diffstat:
Msrc/main.rs | 10+++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/main.rs b/src/main.rs @@ -44,14 +44,22 @@ extern "C" fn handle_sigchld(_: libc::c_int) { fn fork_lua(lua : &Lua, args: Vec<String>, fds: Vec<i32>) -> Option<i32> { let pathname = &args[0]; - let path = Path::new(pathname); + match fork() { Ok(Fork::Parent(pid)) => Some(pid), Ok(Fork::Child) => { for (i, fd) in fds.iter().enumerate() { unsafe { libc::dup2(*fd, i.try_into().unwrap()); } }; + let globals = lua.globals(); + if let Ok(arg_table) = lua.create_table() { + for (i, arg) in args.iter().enumerate() { + arg_table.set(i, arg.clone()); + } + globals.set("arg".to_string(), arg_table); + } + let chunk = lua.load(path); match chunk.exec() { Ok(()) => { exit(0); },