From 9491e3e67f9dd7a1112049690b512bd5356f975b Mon Sep 17 00:00:00 2001 From: sammyette Date: Sat, 27 Apr 2024 13:49:22 -0400 Subject: [PATCH] feat: add pipe function --- golibs/fs/fs.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/golibs/fs/fs.go b/golibs/fs/fs.go index 5bd22c6..8ec0235 100644 --- a/golibs/fs/fs.go +++ b/golibs/fs/fs.go @@ -18,6 +18,7 @@ import ( rt "github.com/arnodel/golua/runtime" "github.com/arnodel/golua/lib/packagelib" + "github.com/arnodel/golua/lib/iolib" ) var Loader = packagelib.Loader{ @@ -36,6 +37,7 @@ func loaderFunc(rtm *rt.Runtime) (rt.Value, func()) { "dir": util.LuaExport{fdir, 1, false}, "glob": util.LuaExport{fglob, 1, false}, "join": util.LuaExport{fjoin, 0, true}, + "pipe": util.LuaExport{fpipe, 0, false}, } mod := rt.NewTable() util.SetExports(rtm, mod, exports) @@ -226,6 +228,17 @@ func fmkdir(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) { return c.Next(), err } +func fpipe(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) { + rf, wf, err := os.Pipe() + if err != nil { + return nil, err + } + + rfLua := iolib.NewFile(rf, 0) + wfLua := iolib.NewFile(wf, 0) + + return c.PushingNext(t.Runtime, rfLua.Value(t.Runtime), wfLua.Value(t.Runtime)), nil +} // readdir(path) -> table[string] // Returns a list of all files and directories in the provided path. // #param dir string