From 97abe2139e6eb67ed03da94dfd23dfb0c259a504 Mon Sep 17 00:00:00 2001 From: tuler Date: Fri, 3 Jun 2005 21:50:59 +0000 Subject: new function lfs.rmdir --- src/lfs.c | 21 ++++++++++++++++++++- tests/test.lua | 30 +++++++++++++++++------------- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/lfs.c b/src/lfs.c index c0ac046..c39e296 100644 --- a/src/lfs.c +++ b/src/lfs.c @@ -7,10 +7,11 @@ ** lfs.dir (path) ** lfs.lock (fh, mode) ** lfs.mkdir (path) +** lfs.rmdir (path) ** lfs.touch (filepath [, atime [, mtime]]) ** lfs.unlock (fh) ** -** $Id: lfs.c,v 1.21 2005/05/20 18:32:19 uid20006 Exp $ +** $Id: lfs.c,v 1.22 2005/06/03 21:50:59 tuler Exp $ */ #include @@ -250,6 +251,23 @@ static int make_dir (lua_State *L) { return 1; } +/* +** Removes a directory. +** @param #1 Directory path. +*/ +static int remove_dir (lua_State *L) { + const char *path = luaL_checkstring (L, 1); + int fail; + + fail = rmdir (path); + + lua_pushboolean (L, !fail); + if (fail) { + lua_pushfstring (L, "%s", strerror(errno)); + return 2; + } + return 1; +} /* ** Directory iterator @@ -519,6 +537,7 @@ static const struct luaL_reg fslib[] = { {"dir", dir_iter_factory}, {"lock", file_lock}, {"mkdir", make_dir}, + {"rmdir", remove_dir}, {"touch", file_utime}, {"unlock", file_unlock}, {NULL, NULL}, diff --git a/tests/test.lua b/tests/test.lua index 7f981e5..d0018cd 100644 --- a/tests/test.lua +++ b/tests/test.lua @@ -9,7 +9,7 @@ require"lfs" function attrdir (path) for file in lfs.dir(path) do if file ~= "." and file ~= ".." then - local f = path..'/'..file + local f = path..sep..file print ("\t=> "..f.." <=") local attr = lfs.attributes (f) assert (type(attr) == "table") @@ -32,30 +32,34 @@ assert (lfs.chdir (reldir), "could not change back to current directory") assert (lfs.currentdir() == current, "error trying to change directories") assert (lfs.chdir ("this couldn't be an actual directory") == nil, "could change to a non-existent directory") -- Changing creating and removing directories -local tmpdir = tmp.."/lfs_tmp_dir" +local tmpdir = tmp..sep.."lfs_tmp_dir" assert (lfs.mkdir (tmpdir), "could not make a new directory") -local attrib, errmsg = lfs.attributes (tmpdir) +-- create a new file +local tmpfile = tmpdir..sep.."lfs_tmp_file" +assert (io.open(tmpfile, "w"), "could not make a new file") +local attrib, errmsg = lfs.attributes (tmpfile) if not attrib then - error ("could not get attributes of file `"..tmpdir.."':\n"..errmsg) + error ("could not get attributes of file `"..tmpfile.."':\n"..errmsg) else -- Change access time - assert (lfs.touch (tmpdir, 11)) - local new_att = assert (lfs.attributes (tmpdir)) - assert (new_att.access == 11, "could not set access time") + assert (lfs.touch (tmpfile, 11)) + local new_att = assert (lfs.attributes (tmpfile)) + assert (new_att.access == 11, string.format("could not set access time: %s", tostring(new_att.access))) assert (new_att.modification == 11, "could not set modification time") -- Change access and modification time - assert (lfs.touch (tmpdir, 33, 22)) - local new_att = assert (lfs.attributes (tmpdir)) + assert (lfs.touch (tmpfile, 33, 22)) + local new_att = assert (lfs.attributes (tmpfile)) assert (new_att.access == 33, "could not set access time") assert (new_att.modification == 22, "could not set modification time") -- Restore access time to current value - assert (lfs.touch (tmpdir)) - new_att = assert (lfs.attributes (tmpdir)) + assert (lfs.touch (tmpfile)) + new_att = assert (lfs.attributes (tmpfile)) assert (new_att.access == attrib.access) assert (new_att.modification == attrib.modification) end -assert (os.remove (tmpdir), "could not remove new directory") -assert (lfs.mkdir (tmpdir.."/lfs_tmp_dir") == false, "could create a directory inside a non-existent one") +assert (os.remove (tmpfile), "could not remove file") +assert (lfs.rmdir (tmpdir), "could not remove new directory") +assert (lfs.mkdir (tmpdir..sep.."lfs_tmp_dir") == false, "could create a directory inside a non-existent one") -- assert (lfs.attributes ("this couldn't be an actual file") == nil, "could get attributes of a non-existent file") assert (type(lfs.attributes (upper)) == "table", "couldn't get attributes of upper directory") -- cgit v1.2.3-55-g6feb