]> git.e2factory.org Git - e2factory.git/commitdiff
le2lib: add implementation of rename(2)
authorTobias Ulmer <tu@emlix.com>
Wed, 3 May 2017 15:05:11 +0000 (17:05 +0200)
committerTobias Ulmer <tu@emlix.com>
Wed, 25 Apr 2018 15:39:23 +0000 (17:39 +0200)
Signed-off-by: Tobias Ulmer <tu@emlix.com>
generic/le2lib.c

index 2f31a761b88d0014f6941457dea62263d858c617..34ecbb3398505dee2583bc206d35943cfa470dee 100644 (file)
@@ -379,6 +379,25 @@ poll_fd(lua_State *lua)
        return 1;
 }
 
+static int
+do_rename(lua_State *L)
+{
+       int e;
+       const char *src = luaL_checkstring(L, 1);
+       const char *dst = luaL_checkstring(L, 2);
+
+       if (rename(src, dst) == 0) {
+               lua_pushboolean(L, 1);
+               return 1;
+       }
+
+       e = errno;
+       lua_pushboolean(L, 0);
+       lua_pushstring(L, strerror(e));
+       lua_pushinteger(L, e);
+       return 3;
+}
+
 static int
 unblock_fd(lua_State *lua)
 {
@@ -968,6 +987,7 @@ static luaL_Reg lib[] = {
        { "mkstemp", do_mkstemp },
        { "parse_mode", do_parse_mode },
        { "poll", poll_fd },
+       { "rename", do_rename },
        { "rmdir", do_rmdir },
        { "setenv", do_setenv },
        { "setpgid", do_setpgid },