From 6708f705ee39d92f36537a2c7b84c3881be8dcbb Mon Sep 17 00:00:00 2001 From: roboogg133 Date: Sat, 2 Aug 2025 16:29:42 -0300 Subject: [PATCH] os.mkdir(path, perm) lua function added --- cmd/packets/main.go | 3 +++ internal/internal.go | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/cmd/packets/main.go b/cmd/packets/main.go index 7c8d9f0..fa59f8c 100644 --- a/cmd/packets/main.go +++ b/cmd/packets/main.go @@ -546,6 +546,7 @@ func Install(packagepath string, serial uint) error { osObject.RawSetString("rename", L.NewFunction(internal.SafeRename)) osObject.RawSetString("copy", L.NewFunction(internal.SafeCopy)) osObject.RawSetString("symlink", L.NewFunction(internal.SymbolicLua)) + osObject.RawSetString("mkdir", L.NewFunction(internal.LMkdir)) ioObject.RawSetString("input", lua.LNil) ioObject.RawSetString("output", lua.LNil) @@ -1196,6 +1197,7 @@ func Unninstall(realname string) error { osObject.RawSetString("rename", L.NewFunction(internal.SafeRename)) osObject.RawSetString("copy", L.NewFunction(internal.SafeCopy)) osObject.RawSetString("symlink", L.NewFunction(internal.SymbolicLua)) + osObject.RawSetString("mkdir", L.NewFunction(internal.LMkdir)) ioObject.RawSetString("input", lua.LNil) ioObject.RawSetString("output", lua.LNil) @@ -1474,6 +1476,7 @@ func Upgrade(packagepath string, og_realname string, serial uint) error { osObject.RawSetString("rename", L.NewFunction(internal.SafeRename)) osObject.RawSetString("copy", L.NewFunction(internal.SafeCopy)) osObject.RawSetString("symlink", L.NewFunction(internal.SymbolicLua)) + osObject.RawSetString("mkdir", L.NewFunction(internal.LMkdir)) ioObject.RawSetString("input", lua.LNil) ioObject.RawSetString("output", lua.LNil) diff --git a/internal/internal.go b/internal/internal.go index fffb72e..90e98d7 100644 --- a/internal/internal.go +++ b/internal/internal.go @@ -366,3 +366,22 @@ func Ljoin(L *lua.LState) int { L.Push(lua.LString(result)) return 1 } + +func LMkdir(L *lua.LState) int { + path := L.CheckString(1) + perm := L.CheckInt(2) + + if !IsSafe(path) { + L.Push(lua.LFalse) + L.Push(lua.LString("[packets] unsafe filepath\n")) + } + + if err := os.MkdirAll(path, os.FileMode(perm)); err != nil { + L.Push(lua.LFalse) + L.Push(lua.LString("[packets] mkdir failed\n" + err.Error())) + } + + L.Push(lua.LTrue) + L.Push(lua.LNil) + return 2 +}