mirror of
https://github.com/lunarmodules/luafilesystem.git
synced 2026-07-22 11:03:07 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
12ff66217f | ||
|
|
508c7b3b56 | ||
|
|
e99b7844bb | ||
|
|
86e97088a0 | ||
|
|
7a93f7ee03 | ||
|
|
9dc07b0ada |
10
Makefile
10
Makefile
@@ -1,10 +1,10 @@
|
||||
# $Id: Makefile,v 1.9 2004/11/10 14:44:01 tuler Exp $
|
||||
# $Id: Makefile,v 1.12 2005/01/19 14:28:58 tomas Exp $
|
||||
|
||||
T= lfs
|
||||
|
||||
include ./config
|
||||
|
||||
V= 1.0b
|
||||
V= 1.0
|
||||
DIST_DIR= luafilesystem-$V
|
||||
TAR_FILE= $(DIST_DIR).tar.gz
|
||||
ZIP_FILE= $(DIST_DIR).zip
|
||||
@@ -23,9 +23,9 @@ compat-5.1.o: $(COMPAT_DIR)/compat-5.1.c
|
||||
$(CC) -c $(CFLAGS) -o $@ $(COMPAT_DIR)/compat-5.1.c
|
||||
|
||||
install: $(LIBNAME)
|
||||
mkdir -p $(LIB_DIR)
|
||||
cp $(LIBNAME) $(LIB_DIR)
|
||||
ln -f -s $(LIB_DIR)/$(LIBNAME) $(LIB_DIR)/$T$(LIB_EXT)
|
||||
mkdir -p $(LUA_LIBDIR)
|
||||
cp $(LIBNAME) $(LUA_LIBDIR)
|
||||
ln -f -s $(LUA_LIBDIR)/$(LIBNAME) $(LUA_LIBDIR)/$T$(LIB_EXT)
|
||||
|
||||
clean:
|
||||
rm -f $L $(LIBNAME) $(OBJS)
|
||||
|
||||
10
config
10
config
@@ -1,8 +1,10 @@
|
||||
# Installation directories
|
||||
# System's libraries directory (where binary libraries are installed)
|
||||
LIB_DIR= /usr/local/lib
|
||||
LUA_LIBDIR= /usr/local/lib/lua/5.0
|
||||
# System's lua directory (where Lua libraries are installed)
|
||||
LUA_DIR= /usr/local/lua
|
||||
LUA_DIR= /usr/local/share/lua/5.0
|
||||
# Lua includes directory
|
||||
LUA_INC= /usr/local/include/lua5
|
||||
|
||||
# OS dependent
|
||||
LIB_EXT= .dylib
|
||||
@@ -16,8 +18,8 @@ COMPAT_DIR= .
|
||||
# On FreeBSD systems, the following line should be commented
|
||||
DLLIB= -ldl
|
||||
WARN= -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings
|
||||
INCS= -I/usr/local/include/lua5 -I$(COMPAT_DIR)
|
||||
LIBS= -L$(LIB_DIR) -llua -llualib -lm $(DLLIB)
|
||||
INCS= -I$(LUA_INC) -I$(COMPAT_DIR)
|
||||
LIBS= -L$(LUA_LIBDIR) -llua -llualib -lm $(DLLIB)
|
||||
CFLAGS= $(WARN) $(INCS)
|
||||
CC= gcc
|
||||
|
||||
|
||||
@@ -26,10 +26,13 @@ href="http://www.lua.org">Lua</a> Programming Language</td>
|
||||
</table>
|
||||
</center>
|
||||
|
||||
<center><small><a href="#over">overview</a> · <a href=
|
||||
"#download">download</a> · <a href="manual.html">manual</a>
|
||||
· <a href="#credits">credits</a> · <a href=
|
||||
"#contact">contact us</a></small></center>
|
||||
<center><small>
|
||||
<a href="#over">overview</a> ·
|
||||
<a href="#download">download</a> ·
|
||||
<a href="manual.html">manual</a> ·
|
||||
<a href="#credits">credits</a> ·
|
||||
<a href="#contact">contact us</a>
|
||||
</small></center>
|
||||
|
||||
<hr>
|
||||
<h2>Contents</h2>
|
||||
@@ -61,27 +64,32 @@ distribution. One of its goals is to be as portable as Lua.</p>
|
||||
|
||||
<h2>Current version</h2>
|
||||
|
||||
<p>Current version is 1.0 beta. It was developed for Lua 5.0.</p>
|
||||
<p>Current version is 1.0. It was developed for Lua 5.0.</p>
|
||||
|
||||
<p>Version 1.0 follows the <a href=
|
||||
"http://www.keplerproject.org/compat">package proposal</a> for Lua
|
||||
5.1 (see section <a href="#installation">Installation</a> for more
|
||||
details). <a name="download"></a></p>
|
||||
<p>Version 1.0 follows the
|
||||
<a href="http://www.keplerproject.org/compat">package proposal</a>
|
||||
for Lua 5.1 (see section <a href="#installation">Installation</a>
|
||||
for more details).
|
||||
</p>
|
||||
|
||||
<a name="download"></a>
|
||||
<h2>Download</h2>
|
||||
|
||||
<p>LuaFileSystem can be downloaded from its <a href=
|
||||
"http://luaforge.net/project/showfiles.php?group_id=66">Lua
|
||||
Forge</a> page. <a name="new"></a></p>
|
||||
<p>
|
||||
LuaFileSystem can be downloaded from its
|
||||
<a href="http://luaforge.net/project/showfiles.php?group_id=66">Lua Forge</a>
|
||||
page.
|
||||
</p>
|
||||
|
||||
<a name="new"></a>
|
||||
<h2>What's new</h2>
|
||||
|
||||
<ul>
|
||||
<li>[10/nov/2004] Version 1.0 beta released</li>
|
||||
<li>[21/Jan/2005] Version 1.0 released</li>
|
||||
<li>[10/Nov/2004] Version 1.0 beta released</li>
|
||||
</ul>
|
||||
|
||||
<a name="installation"></a>
|
||||
|
||||
<h2>Installation</h2>
|
||||
|
||||
<p>LuaFileSystem is distributed as a pair of C source and header
|
||||
@@ -89,25 +97,24 @@ files. The distribution provides a <tt>Makefile</tt> prepared to
|
||||
compile the library and install it. The file <tt>config</tt> should
|
||||
be edited to suit the needs of the aimed platform.</p>
|
||||
|
||||
<p>LuaFileSystem follows the <a href=
|
||||
"http://www.keplerproject.org/compat">package proposal</a> for Lua
|
||||
5.1, therefore this package should be "installed". In other words,
|
||||
<p>LuaFileSystem follows the
|
||||
<a href="http://www.keplerproject.org/compat">package proposal</a>
|
||||
for Lua 5.1, therefore this package should be "installed".
|
||||
In other words,
|
||||
if you are using Lua 5.0, the files <tt>compat-5.1.c</tt> and
|
||||
<tt>compat-5.1.h</tt> must be used in the compilation and the file
|
||||
<tt>compat-5.1.lua</tt> must be installed in the <tt>LUA_PATH</tt>.
|
||||
If you are using Lua 5.1, nothing should be done.</p>
|
||||
|
||||
<a name="credits"></a>
|
||||
|
||||
<h2>Credits</h2>
|
||||
|
||||
<p>LuaFileSystem was designed by Roberto Ierusalimschy,
|
||||
André Carregal and Tomás Guisasola as part of <a
|
||||
href="http://www.keplerproject.org">The Kepler Project</a> which
|
||||
holds its copyright.</p>
|
||||
André Carregal and Tomás Guisasola as part of the
|
||||
<a href="http://www.keplerproject.org">Kepler Project</a>
|
||||
which holds its copyright.</p>
|
||||
|
||||
<a name="contact"></a>
|
||||
|
||||
<h2>Contact us</h2>
|
||||
|
||||
<p>For more information please <a href=
|
||||
@@ -115,8 +122,7 @@ holds its copyright.</p>
|
||||
Comments are welcome!</p>
|
||||
|
||||
<hr>
|
||||
<small>$Id: index.html,v 1.6 2004/11/11 15:33:20 tomas Exp
|
||||
$</small>
|
||||
<small>$Id: index.html,v 1.9 2005/01/19 14:30:08 tomas Exp $</small>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -11,13 +11,15 @@
|
||||
LuaFileSystem is free software: it can be used for both academic
|
||||
and commercial purposes at absolutely no cost. There are no
|
||||
royalties or GNU-like "copyleft" restrictions. LuaFileSystem
|
||||
qualifies as <a href=
|
||||
"http://www.opensource.org/docs/definition.html">Open Source</a>
|
||||
software. Its licenses are compatible with <a href=
|
||||
"http://www.gnu.org/licenses/gpl.html">GPL</a>. LuaFileSystem is
|
||||
not in the public domain and <a href=
|
||||
"http://www.keplerproject.org">The Kepler Project</a> keep its
|
||||
copyright. The legal details are below.
|
||||
qualifies as
|
||||
<a href="http://www.opensource.org/docs/definition.html">Open Source</a>
|
||||
software.
|
||||
Its licenses are compatible with
|
||||
<a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.
|
||||
LuaFileSystem is not in the public domain and the
|
||||
<a href="http://www.keplerproject.org">Kepler Project</a>
|
||||
keep its copyright.
|
||||
The legal details are below.
|
||||
|
||||
<p>The spirit of the license is that you are free to use
|
||||
LuaFileSystem for any purpose at no cost without having to ask us.
|
||||
@@ -34,7 +36,7 @@ The implementation is not derived from licensed software.</p>
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
Copyright © 2004 The Kepler Project.
|
||||
Copyright © 2004-2005 The Kepler Project.
|
||||
|
||||
<p>Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
@@ -61,8 +63,7 @@ SOFTWARE.</p>
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
<small>$Id: license.html,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp
|
||||
$</small>
|
||||
<small>$Id: license.html,v 1.4 2005/01/19 14:30:08 tomas Exp $</small>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
38
src/lfs.c
38
src/lfs.c
@@ -9,7 +9,7 @@
|
||||
** lfs.lock (fh, mode)
|
||||
** lfs.unlock (fh)
|
||||
**
|
||||
** $Id: lfs.c,v 1.14 2004/11/17 14:08:04 tomas Exp $
|
||||
** $Id: lfs.c,v 1.17 2005/01/19 14:28:58 tomas Exp $
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
@@ -131,7 +131,7 @@ static int _file_lock (lua_State *L, FILE *fh, const char *mode, const long star
|
||||
case 'r': lkmode = _LK_NBLCK; break;
|
||||
case 'w': lkmode = _LK_NBLCK; break;
|
||||
case 'u': lkmode = _LK_UNLCK; break;
|
||||
default : luaL_error (L, "%s: invalid mode", funcname);
|
||||
default : return luaL_error (L, "%s: invalid mode", funcname);
|
||||
}
|
||||
if (!len) {
|
||||
fseek (fh, 0L, SEEK_END);
|
||||
@@ -145,7 +145,7 @@ static int _file_lock (lua_State *L, FILE *fh, const char *mode, const long star
|
||||
case 'w': f.l_type = F_WRLCK; break;
|
||||
case 'r': f.l_type = F_RDLCK; break;
|
||||
case 'u': f.l_type = F_UNLCK; break;
|
||||
default : luaL_error (L, "%s: invalid mode", funcname);
|
||||
default : return luaL_error (L, "%s: invalid mode", funcname);
|
||||
}
|
||||
f.l_whence = SEEK_SET;
|
||||
f.l_start = (off_t)start;
|
||||
@@ -345,13 +345,27 @@ static int dir_create_meta (lua_State *L) {
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
#define S_ISDIR(mode) (mode&_S_IFDIR)
|
||||
#define S_ISREG(mode) (mode&_S_IFREG)
|
||||
#define S_ISLNK(mode) (0)
|
||||
#define S_ISSOCK(mode) (0)
|
||||
#define S_ISFIFO(mode) (0)
|
||||
#define S_ISCHR(mode) (mode&_S_IFCHR)
|
||||
#define S_ISBLK(mode) (0)
|
||||
#ifndef S_ISDIR
|
||||
#define S_ISDIR(mode) (mode&_S_IFDIR)
|
||||
#endif
|
||||
#ifndef S_ISREG
|
||||
#define S_ISREG(mode) (mode&_S_IFREG)
|
||||
#endif
|
||||
#ifndef S_ISLNK
|
||||
#define S_ISLNK(mode) (0)
|
||||
#endif
|
||||
#ifndef S_ISSOCK
|
||||
#define S_ISSOCK(mode) (0)
|
||||
#endif
|
||||
#ifndef S_ISFIFO
|
||||
#define S_ISFIFO(mode) (0)
|
||||
#endif
|
||||
#ifndef S_ISCHR
|
||||
#define S_ISCHR(mode) (mode&_S_IFCHR)
|
||||
#endif
|
||||
#ifndef S_ISBLK
|
||||
#define S_ISBLK(mode) (0)
|
||||
#endif
|
||||
#endif
|
||||
/*
|
||||
** Convert the inode protection mode to a string.
|
||||
@@ -457,7 +471,7 @@ static int file_info (lua_State *L) {
|
||||
*/
|
||||
static void set_info (lua_State *L) {
|
||||
lua_pushliteral (L, "_COPYRIGHT");
|
||||
lua_pushliteral (L, "Copyright (C) 2004 Kepler Project");
|
||||
lua_pushliteral (L, "Copyright (C) 2004-2005 Kepler Project");
|
||||
lua_settable (L, -3);
|
||||
lua_pushliteral (L, "_DESCRIPTION");
|
||||
lua_pushliteral (L, "LuaFileSystem is a Lua library developed to complement the set of functions related to file systems offered by the standard Lua distribution");
|
||||
@@ -466,7 +480,7 @@ static void set_info (lua_State *L) {
|
||||
lua_pushliteral (L, "LuaFileSystem");
|
||||
lua_settable (L, -3);
|
||||
lua_pushliteral (L, "_VERSION");
|
||||
lua_pushliteral (L, "1.0b");
|
||||
lua_pushliteral (L, "1.0");
|
||||
lua_settable (L, -3);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,9 +32,31 @@ 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
|
||||
assert (lfs.mkdir (tmp.."/lfs_tmp_dir"), "could not make a new directory")
|
||||
assert (os.remove (tmp.."/lfs_tmp_dir"), "could not remove new directory")
|
||||
assert (lfs.mkdir (tmp.."/lfs_tmp_dir/lfs_tmp_dir") == false, "could create a directory inside a non-existent one")
|
||||
local tmpdir = tmp.."/lfs_tmp_dir"
|
||||
assert (lfs.mkdir (tmpdir), "could not make a new directory")
|
||||
local attrib, errmsg = lfs.attributes (tmpdir)
|
||||
if not attrib then
|
||||
error ("could not get attributes of file `"..tmpdir.."':\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 (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 (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 (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 (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")
|
||||
print"Ok!"
|
||||
|
||||
Reference in New Issue
Block a user