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:
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); },