From: Tobias Ulmer Date: Tue, 12 Nov 2013 14:46:32 +0000 (+0100) Subject: Add mkdtemp() wrapper. X-Git-Tag: e2factory-2.3.15rc1~392 X-Git-Url: https://git.e2factory.org/?a=commitdiff_plain;h=453e38e1fe09f297253038ca33992b93416bea69;p=e2factory.git Add mkdtemp() wrapper. Signed-off-by: Tobias Ulmer --- diff --git a/generic/le2lib.c b/generic/le2lib.c index 5c99f30..fc5db04 100644 --- a/generic/le2lib.c +++ b/generic/le2lib.c @@ -756,6 +756,34 @@ do_chmod(lua_State *L) return 1; } +static int +do_mkdtemp(lua_State *L) +{ + const char *template_in = luaL_checkstring(L, 1); + char template[PATH_MAX]; + + if (snprintf(template, PATH_MAX, "%s", template_in) + >= PATH_MAX) { + lua_pushboolean(L, 0); + lua_pushstring(L, "template does not fit in PATH_MAX"); + + return 2; + } + + if (mkdtemp(template) == NULL) { + lua_pushboolean(L, 0); + lua_pushstring(L, strerror(errno)); + + return 2; + } + + lua_pushboolean(L, 1); + lua_pushnil(L); + lua_pushstring(L, template); + + return 3; +} + /* * Hook that gets called once an interrupt has been requested. * Calls e2lib.interrupt_hook() to deal with any cleanup that might be required. @@ -807,6 +835,7 @@ static luaL_Reg lib[] = { { "hardlink", do_hardlink }, { "kill", do_kill }, { "mkdir", do_mkdir }, + { "mkdtemp", do_mkdtemp }, { "parse_mode", do_parse_mode }, { "poll", poll_fd }, { "rmdir", do_rmdir },