Instead of popen and run external executable dirname we implement a
dirname in C in the core module.

We also remove the unused basename function.

Signed-off-by: Natanael Copa <nc...@alpinelinux.org>
---
 src/lua-lxc/core.c  |  8 ++++++++
 src/lua-lxc/lxc.lua | 18 +-----------------
 2 files changed, 9 insertions(+), 17 deletions(-)

diff --git a/src/lua-lxc/core.c b/src/lua-lxc/core.c
index 504e147..002e8bf 100644
--- a/src/lua-lxc/core.c
+++ b/src/lua-lxc/core.c
@@ -28,6 +28,7 @@
 #include <assert.h>
 #include <string.h>
 #include <unistd.h>
+#include <libgen.h>
 #include <lxc/lxccontainer.h>
 
 #if LUA_VERSION_NUM < 502
@@ -387,11 +388,18 @@ static int lxc_util_usleep(lua_State *L) {
     return 0;
 }
 
+static int lxc_util_dirname(lua_State *L) {
+    char *path = strdupa(luaL_checkstring(L, 1));
+    lua_pushstring(L, dirname(path));
+    return 1;
+}
+
 static luaL_Reg lxc_lib_methods[] = {
     {"version_get",            lxc_version_get},
     {"default_config_path_get",        lxc_default_config_path_get},
     {"container_new",          container_new},
     {"usleep",                 lxc_util_usleep},
+    {"dirname",                        lxc_util_dirname},
     {NULL, NULL}
 };
 
diff --git a/src/lua-lxc/lxc.lua b/src/lua-lxc/lxc.lua
index 4ef1ff9..2f1204c 100755
--- a/src/lua-lxc/lxc.lua
+++ b/src/lua-lxc/lxc.lua
@@ -70,22 +70,6 @@ function string:split(delim, max_cols)
     return cols
 end
 
-function dirname(path)
-    local f,output
-    f = io.popen("dirname " .. path)
-    output = f:read('*all')
-    f:close()
-    return output:sub(1,-2)
-end
-
-function basename(path, suffix)
-    local f,output
-    f = io.popen("basename " .. path .. " " .. (suffix or ""))
-    output = f:read('*all')
-    f:close()
-    return output:sub(1,-2)
-end
-
 function cgroup_path_get()
     local f,line,cgroup_path
 
@@ -99,7 +83,7 @@ function cgroup_path_get()
            end
            c = line:split(" ", 6)
            if (c[1] == "cgroup") then
-               cgroup_path = dirname(c[2])
+               cgroup_path = core.dirname(c[2])
                break
            end
        end
-- 
1.8.4


------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58041391&iu=/4140/ostg.clktrk
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to