40 Commits

Author SHA1 Message Date
uid20002
ecaa0a5ae8 Documentation update 2005-05-30 18:25:15 +00:00
uid20006
50cf9740a6 *** empty log message *** 2005-05-30 18:19:14 +00:00
uid20006
f3deb0e4c6 release date update. 2005-05-30 17:57:11 +00:00
uid20006
164a44cb97 1.0 instead of 1.0.0 2005-05-30 17:54:49 +00:00
tomas
0182a1f17f Correction on library name (no more .dylib). 2005-05-28 21:48:36 +00:00
tomas
0aa3bf9a0a Upgrading for LuaBinaries. 2005-05-25 12:55:32 +00:00
carregal
d7c2e9d153 Documentation update 2005-05-24 23:27:34 +00:00
carregal
6d2f915ee4 Documentation update, using LuaBinaries 2005-05-24 23:05:18 +00:00
tuler
2a11208d8e LuaBinaries release 2 update. 2005-05-23 20:24:00 +00:00
carregal
62946f1b92 Correcting file format 2005-05-23 19:49:06 +00:00
carregal
a427f48bc8 Documentation update 2005-05-22 18:56:24 +00:00
carregal
e80d17dda9 Documentation update 2005-05-22 18:07:36 +00:00
uid20006
e9edc5d7a9 xhtml validation 2005-05-20 18:43:00 +00:00
uid20006
b80c656dfb xhtml validation 2005-05-20 18:38:07 +00:00
uid20006
646a17acdd changed from 1.1.0 to 1.1 2005-05-20 18:32:19 +00:00
uid20002
8db4be836c Documentation update 2005-05-20 18:23:29 +00:00
uid20002
6d548640cb Documentation update 2005-05-20 18:18:13 +00:00
uid20002
a3cf6af650 Documentation update 2005-05-20 18:04:56 +00:00
uid20002
51c0586f9c Documentation update 2005-05-20 12:30:13 +00:00
uid20002
3bdc8f7805 Documentation update 2005-05-20 12:10:58 +00:00
uid20002
41aee28e62 Documentation update 2005-05-19 20:31:04 +00:00
uid20002
8774e2caae Documentation update 2005-05-19 20:24:31 +00:00
tuler
e8e69b98f5 generating binary zip distribution on post build 2005-05-17 21:56:28 +00:00
tuler
5d40ae7548 compiled with luabinaries release 2 2005-05-06 20:12:07 +00:00
tuler
13cfce2191 new documentation format 2005-05-04 02:28:51 +00:00
tuler
bf9b039d9c *** keyword substitution change *** 2005-05-04 02:00:54 +00:00
tuler
ef77b214ee *** empty log message *** 2005-04-14 15:31:16 +00:00
tomas
f22a37da92 Upgrading version number. 2005-04-08 18:57:11 +00:00
tomas
bb0cb1f342 Upgrading Makefile for new directory structure. 2005-04-08 18:55:00 +00:00
tuler
2d9b354920 using luabinaries 2005-03-30 18:04:09 +00:00
tomas
cab9c08749 Melhoria de padronizacao e reutilizacao da compilacao e da instalacao. 2005-02-01 16:50:27 +00:00
tomas
5f942164a0 Acrescimo de documentacao da lfs.touch.
Adaptacao para a versao 1.1.
2005-01-24 10:59:58 +00:00
tuler
2540f6cbdb WIN32 details 2005-01-24 10:19:49 +00:00
tomas
57d3fc1c31 Acrescimo da funcao lfs.touch, inaugurando a versao 1.1. 2005-01-21 10:19:04 +00:00
tomas
12ff66217f Atualizacao para lancamento da versao 1.0 oficial 2005-01-19 14:30:08 +00:00
tomas
508c7b3b56 Eliminando funcao lfs.touch() para lancamento da versao 1.0 oficial. 2005-01-19 14:28:58 +00:00
tuler
e99b7844bb <sys/utime.h> in Windows. 2005-01-18 11:21:58 +00:00
tomas
86e97088a0 Acrescimo da funcao lfs.touch (lfs.c e test.lua).
Pequenas correcoes para evitar warnings de redefinicao de macros.
2005-01-18 10:48:02 +00:00
tomas
7a93f7ee03 Uniformizacao de nomes de variaveis entre as bibliotecas do Kepler.
Melhorias para reutilizacao do Makefile.
2005-01-18 09:36:11 +00:00
tomas
9dc07b0ada Retirando o artigo (The) dos links para o Projeto Kepler. 2004-12-28 16:39:51 +00:00
10 changed files with 567 additions and 353 deletions

View File

@@ -1,34 +1,35 @@
# $Id: Makefile,v 1.9 2004/11/10 14:44:01 tuler Exp $ # $Id: Makefile,v 1.19 2005/05/30 17:54:49 uid20006 Exp $
T= lfs T= lfs
include ./config include ./config
V= 1.0b V= 1.1
DIST_DIR= luafilesystem-$V DIST_DIR= luafilesystem-$V
TAR_FILE= $(DIST_DIR).tar.gz TAR_FILE= $(DIST_DIR).tar.gz
ZIP_FILE= $(DIST_DIR).zip ZIP_FILE= $(DIST_DIR).zip
LIBNAME= lib$T.$V$(LIB_EXT) LIBNAME= lib$T.$V.so
SRCS= $T.c COMPAT_O= $(COMPAT_DIR)/compat-5.1.o
OBJS= $T.o compat-5.1.o SRCS= src/$T.c
OBJS= src/$T.o $(COMPAT_O)
lib: $(LIBNAME) lib: src/$(LIBNAME)
$(LIBNAME): $(OBJS) src/$(LIBNAME): $(OBJS)
$(CC) $(CFLAGS) $(LIB_OPTION) -o $(LIBNAME) $(OBJS) $(LIBS) $(CC) $(CFLAGS) $(LIBS) $(LIB_OPTION) -o src/$(LIBNAME) $(OBJS)
compat-5.1.o: $(COMPAT_DIR)/compat-5.1.c $(COMPAT_O): $(COMPAT_DIR)/compat-5.1.c
$(CC) -c $(CFLAGS) -o $@ $(COMPAT_DIR)/compat-5.1.c $(CC) -c $(CFLAGS) -o $@ $(COMPAT_DIR)/compat-5.1.c
install: $(LIBNAME) install: src/$(LIBNAME)
mkdir -p $(LIB_DIR) mkdir -p $(LUA_LIBDIR)
cp $(LIBNAME) $(LIB_DIR) cp src/$(LIBNAME) $(LUA_LIBDIR)
ln -f -s $(LIB_DIR)/$(LIBNAME) $(LIB_DIR)/$T$(LIB_EXT) ln -f -s $(LUA_LIBDIR)/$(LIBNAME) $(LUA_LIBDIR)/$T.so
clean: clean:
rm -f $L $(LIBNAME) $(OBJS) rm -f $L src/$(LIBNAME) $(OBJS)
dist: dist_dir dist: dist_dir
tar -czf $(TAR_FILE) $(DIST_DIR) tar -czf $(TAR_FILE) $(DIST_DIR)

19
config
View File

@@ -1,23 +1,22 @@
# Installation directories # Installation directories
# System's libraries directory (where binary libraries are installed) # 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 includes directory
LUA_DIR= /usr/local/lua LUA_INC= /usr/local/include/lua5
# OS dependent # OS dependent
LIB_EXT= .dylib #LIB_OPTION= -bundle -undefined dynamic_lookup #for MacOS X
#LIB_EXT= .so LIB_OPTION= -shared #for Linux
LIB_OPTION= -dynamiclib #for MacOS X
#LIB_OPTION= -shared #for Linux
COMPAT_DIR= . COMPAT_DIR= ../compat/src
# Compilation directives # Compilation directives
# On FreeBSD systems, the following line should be commented # On FreeBSD systems, the following line should be commented
DLLIB= -ldl DLLIB= -ldl
#LUA_LIBS= -llua50 -lm
WARN= -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings 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) INCS= -I$(LUA_INC) -I$(COMPAT_DIR)
LIBS= -L$(LIB_DIR) -llua -llualib -lm $(DLLIB) LIBS= $(LUA_LIBS) $(DLLIB)
CFLAGS= $(WARN) $(INCS) CFLAGS= $(WARN) $(INCS)
CC= gcc CC= gcc

96
doc/us/examples.html Normal file
View File

@@ -0,0 +1,96 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>LuaFileSystem</title>
<link rel="stylesheet" href="http://www.keplerproject.org/doc.css" type="text/css"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"><a href="http://www.keplerproject.org">
<img alt="LuaFileSystem" src="luafilesystem.png"/>
</a></div>
<div id="product_name"><big><strong>LuaFileSystem</strong></big></div>
<div id="product_description">File System Library for the Lua Programming Language</div>
</div> <!-- id="product" -->
<div id="main">
<div id="navigation">
<h1>LuaFileSystem</h1>
<ul>
<li><a href="index.html">Home</a>
<ul>
<li><a href="index.html#overview">Overview</a></li>
<li><a href="index.html#status">Status</a></li>
<li><a href="index.html#download">Download</a></li>
<li><a href="index.html#history">History</a></li>
<li><a href="index.html#credits">Credits</a></li>
<li><a href="index.html#contact">Contact us</a></li>
</ul>
</li>
<li><a href="manual.html">Manual</a>
<ul>
<li><a href="manual.html#introduction">Introduction</a></li>
<li><a href="manual.html#installation">Installation</a></li>
<li><a href="manual.html#reference">Reference</a></li>
</ul>
</li>
<li><strong>Examples</strong></li>
<li><a href="license.html">License</a></li>
</ul>
</div> <!-- id="navigation" -->
<div id="content">
<h2><a name="example"></a>Examples</h2>
<h3>Directory iterator</h3>
<p>The following example iterates over a directory and recursively lists the
attributes for each file inside it.</p>
<pre class="example">
require"lfs"
function attrdir (path)
for file in lfs.dir(path) do
if file ~= "." and file ~= ".." then
local f = path..'/'..file
print ("\t "..f)
local attr = lfs.attributes (f)
assert (type(attr) == "table")
if attr.mode == "directory" then
attrdir (f)
else
for name, value in pairs(attr) do
print (name, value)
end
end
end
end
end
attrdir (".")
</pre>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
<p><small>
$Id: examples.html,v 1.3 2005/05/20 18:04:56 uid20002 Exp $
</small></p>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -1,122 +1,121 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html> <html>
<head> <head>
<meta name="generator" content="HTML Tidy, see www.w3.org"> <title>LuaFileSystem</title>
<title>LuaFileSystem</title> <link rel="stylesheet" href="http://www.keplerproject.org/doc.css" type="text/css"/>
<style type="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
ul { list-style-type: disc };
</style>
</head> </head>
<body bgcolor="#FFFFFF"> <body>
<center>
<table border="0" cellspacing="2" cellpadding="2">
<tr>
<td align="center"><a href="http://www.keplerproject.org"><img
border="0" alt="LuaFileSystem" src="luafilesystem.png"></a> </td>
</tr>
<tr> <div id="container">
<td align="center"><big><b>LuaFileSystem</b></big> </td>
</tr>
<tr> <div id="product">
<td align="center" valign="top">File System Library for the <a <div id="product_logo"><a href="http://www.keplerproject.org">
href="http://www.lua.org">Lua</a> Programming Language</td> <img alt="LuaFileSystem" src="luafilesystem.png"/>
</tr> </a></div>
</table> <div id="product_name"><big><strong>LuaFileSystem</strong></big></div>
</center> <div id="product_description">File System Library for the Lua Programming Language</div>
</div> <!-- id="product" -->
<center><small><a href="#over">overview</a> &middot; <a href= <div id="main">
"#download">download</a> &middot; <a href="manual.html">manual</a>
&middot; <a href="#credits">credits</a> &middot; <a href=
"#contact">contact us</a></small></center>
<hr> <div id="navigation">
<h2>Contents</h2> <h1>LuaFileSystem</h1>
<ul>
<li><strong>Home</strong>
<ul>
<li><a href="index.html#overview">Overview</a></li>
<li><a href="index.html#status">Status</a></li>
<li><a href="index.html#download">Download</a></li>
<li><a href="index.html#history">History</a></li>
<li><a href="index.html#credits">Credits</a></li>
<li><a href="index.html#contact">Contact us</a></li>
</ul>
</li>
<li><a href="manual.html">Manual</a>
<ul>
<li><a href="manual.html#introduction">Introduction</a></li>
<li><a href="manual.html#installation">Installation</a></li>
<li><a href="manual.html#reference">Reference</a></li>
</ul>
</li>
<li><a href="examples.html">Examples</a></li>
<li><a href="license.html">License</a></li>
</ul>
</div> <!-- id="navigation" -->
<div id="content">
<h2><a name="overview"></a>Overview</h2>
<p>LuaFileSystem is a <a href="http://www.lua.org">Lua</a> library
developed to complement the set of functions related to file
systems offered by the standard Lua distribution.</p>
<p>LuaFileSystem offers a portable way to access
the underlying directory structure and file attributes.</p>
<p>LuaFileSystem is free software and uses the same
<a href="license.html">license</a> as Lua 5.0.</p>
<h2><a name="status"></a>Status</h2>
<p>Current version is 1.1. It was developed for Lua 5.0.</p>
<p>Version 1.1 follows the
<a href="http://www.keplerproject.org/compat">package model</a>
for Lua 5.1 (see section <a href="manual.html#installation">Installation</a>
for more details).</p>
<h2><a name="download"></a>Download</h2>
<p>LuaFileSystem can be downloaded in source format from its
<a href="http://luaforge.net/projects/luafilesystem/files">Lua Forge</a>
page. If you are using
<a href="http://luaforge.net/projects/luabinaries/">LuaBinaries</a> Release 2
a Windows pre-compiled version of LuaFileSystem can also be found at the same
LuaForge page.</p>
<h2><a name="history"></a>History</h2>
<ul> <ul>
<li><a href="#over">Overview</a></li> <li>[30/May/2005] Version 1.1 released<br/>
added function <code>lfs.touch</code>.
<li><a href="#version">Current Version</a></li> </li>
<li>[21/Jan/2005] Version 1.0 released</li>
<li><a href="#download">Download</a></li> <li>[10/Nov/2004] Version 1.0 beta released</li>
<li><a href="#manual">Manual</a></li>
<li><a href="#credits">Credits</a></li>
<li><a href="#contact">Contact us</a></li>
</ul> </ul>
<a name="over"></a>
<h2>Overview</h2>
<p>LuaFileSystem is a library developed to complement the set of <h2><a name="credits"></a>Credits</h2>
functions related to file systems offered by the standard Lua
distribution. One of its goals is to be as portable as Lua.</p>
<p>LuaFileSystem is free software and uses the same <a href=
"license.html">license</a> as Lua 5.0. <a name="version"></a></p>
<h2>Current version</h2>
<p>Current version is 1.0 beta. 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>
<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>
<h2>What's new</h2>
<ul>
<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
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,
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, <p>LuaFileSystem was designed by Roberto Ierusalimschy,
Andr&eacute; Carregal and Tom&aacute;s Guisasola as part of <a Andr&eacute; Carregal and Tom&aacute;s Guisasola as part of the
href="http://www.keplerproject.org">The Kepler Project</a> which <a href="http://www.keplerproject.org">Kepler Project</a>
holds its copyright.</p> which holds its copyright.</p>
<a name="contact"></a> <h2><a name="contact"></a>Contact us</h2>
<h2>Contact us</h2> <p>For more information please
<a href="mailto:info-NO-SPAM-THANKS@keplerproject.org">contact us</a>.
<p>For more information please <a href=
"mailto:info-NO-SPAM-THANKS@keplerproject.org">contact us</a>.
Comments are welcome!</p> Comments are welcome!</p>
<hr> </div> <!-- id="content" -->
<small>$Id: index.html,v 1.6 2004/11/11 15:33:20 tomas Exp
$</small> </div> <!-- id="main" -->
<div id="about">
<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
<p><small>
$Id: index.html,v 1.22 2005/05/30 18:25:15 uid20002 Exp $
</small></p>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body> </body>
</html> </html>

View File

@@ -1,23 +1,68 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html> <html>
<head> <head>
<meta name="generator" content="HTML Tidy, see www.w3.org"> <title>LuaFileSystem</title>
<title>LuaFileSystem: license</title> <link rel="stylesheet" href="http://www.keplerproject.org/doc.css" type="text/css"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head> </head>
<body bgcolor="#FFFFFF"> <body>
<hr>
<div id="container">
<div id="product">
<div id="product_logo"><a href="http://www.keplerproject.org">
<img alt="LuaFileSystem" src="luafilesystem.png"/>
</a></div>
<div id="product_name"><big><strong>LuaFileSystem</strong></big></div>
<div id="product_description">File System Library for the Lua Programming Language</div>
</div> <!-- id="product" -->
<div id="main">
<div id="navigation">
<h1>LuaFileSystem</h1>
<ul>
<li><a href="index.html">Home</a>
<ul>
<li><a href="index.html#overview">Overview</a></li>
<li><a href="index.html#status">Status</a></li>
<li><a href="index.html#download">Download</a></li>
<li><a href="index.html#history">History</a></li>
<li><a href="index.html#credits">Credits</a></li>
<li><a href="index.html#contact">Contact us</a></li>
</ul>
</li>
<li><a href="manual.html">Manual</a>
<ul>
<li><a href="manual.html#introduction">Introduction</a></li>
<li><a href="manual.html#installation">Installation</a></li>
<li><a href="manual.html#reference">Reference</a></li>
</ul>
</li>
<li><a href="examples.html">Examples</a></li>
<li><strong>License</strong></li>
</ul>
</div> <!-- id="navigation" -->
<div id="content">
<h1>License</h1> <h1>License</h1>
<p>
LuaFileSystem is free software: it can be used for both academic LuaFileSystem is free software: it can be used for both academic
and commercial purposes at absolutely no cost. There are no and commercial purposes at absolutely no cost. There are no
royalties or GNU-like "copyleft" restrictions. LuaFileSystem royalties or GNU-like "copyleft" restrictions. LuaFileSystem
qualifies as <a href= qualifies as
"http://www.opensource.org/docs/definition.html">Open Source</a> <a href="http://www.opensource.org/docs/definition.html">Open Source</a>
software. Its licenses are compatible with <a href= software.
"http://www.gnu.org/licenses/gpl.html">GPL</a>. LuaFileSystem is Its licenses are compatible with
not in the public domain and <a href= <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.
"http://www.keplerproject.org">The Kepler Project</a> keep its LuaFileSystem is not in the public domain and the
copyright. The legal details are below. <a href="http://www.keplerproject.org">Kepler Project</a>
keep its copyright.
The legal details are below.
</p>
<p>The spirit of the license is that you are free to use <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. LuaFileSystem for any purpose at no cost without having to ask us.
@@ -29,12 +74,8 @@ somewhere in your product or its documentation.</p>
Ierusalimschy, Andr&eacute; Carregal and Tom&aacute;s Guisasola. Ierusalimschy, Andr&eacute; Carregal and Tom&aacute;s Guisasola.
The implementation is not derived from licensed software.</p> The implementation is not derived from licensed software.</p>
<p> <hr/>
<!-- ===================================================================== --> <p>Copyright &copy; 2004-2005 The Kepler Project.</p>
</p>
<hr>
Copyright &copy; 2004 The Kepler Project.
<p>Permission is hereby granted, free of charge, to any person <p>Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation obtaining a copy of this software and associated documentation
@@ -56,13 +97,18 @@ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.</p> SOFTWARE.</p>
<p> </div> <!-- id="content" -->
<!-- ===================================================================== -->
</p> </div> <!-- id="main" -->
<div id="about">
<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
<p><small>
$Id: license.html,v 1.7 2005/05/20 18:43:00 uid20006 Exp $
</small></p>
</div><!-- id="about" -->
</div><!-- id="container" -->
<hr>
<small>$Id: license.html,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp
$</small>
</body> </body>
</html> </html>

View File

@@ -1,197 +1,202 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html> <html>
<head> <head>
<meta name="generator" content="HTML Tidy, see www.w3.org"> <title>LuaFileSystem</title>
<title>LuaFileSystem</title> <link rel="stylesheet" href="http://www.keplerproject.org/doc.css" type="text/css"/>
<style type="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
ul { list-style-type: disc };
</style>
</head> </head>
<body bgcolor="#FFFFFF">
<hr>
<center>
<table border="0" cellspacing="2" cellpadding="2">
<tr>
<td align="center"><a href=
"http://www.keplerproject.org/luafilesystem"><img border="0" alt=
"LuaFileSystem logo" src="luafilesystem.png"></a> </td>
</tr>
<tr> <body>
<td align="center"><big><b>LuaFileSystem Reference Manual</b></big>
</td>
</tr>
<tr> <div id="container">
<td align="center" valign="top">File system library for the <a
href="http://www.lua.org">Lua</a> programming language</td>
</tr>
</table>
</center>
<center><small><a href="index.html">home</a> &middot; <a href= <div id="product">
"#introduction">introduction</a> &middot; <a href= <div id="product_logo"><a href="http://www.keplerproject.org">
"#reference">reference</a> &middot; <a href= <img alt="LuaFileSystem" src="luafilesystem.png"/>
"#example">example</a></small></center> </a></div>
<div id="product_name"><big><strong>LuaFileSystem</strong></big></div>
<div id="product_description">File System Library for the Lua Programming Language</div>
</div> <!-- id="product" -->
<hr> <div id="main">
<a name="introduction"></a>
<h2>Introduction</h2> <div id="navigation">
<h1>LuaFileSystem</h1>
<ul>
<li><a href="index.html">Home</a>
<ul>
<li><a href="index.html#overview">Overview</a></li>
<li><a href="index.html#status">Status</a></li>
<li><a href="index.html#download">Download</a></li>
<li><a href="index.html#history">History</a></li>
<li><a href="index.html#credits">Credits</a></li>
<li><a href="index.html#contact">Contact us</a></li>
</ul>
</li>
<li><strong>Manual</strong>
<ul>
<li><a href="manual.html#introduction">Introduction</a></li>
<li><a href="manual.html#installation">Installation</a></li>
<li><a href="manual.html#reference">Reference</a></li>
</ul>
</li>
<li><a href="examples.html">Examples</a></li>
<li><a href="license.html">License</a></li>
</ul>
</div> <!-- id="navigation" -->
<div id="content">
<h2><a name="introduction"></a>Introduction</h2>
<p>LuaFileSystem is a <a href="http://www.lua.org">Lua</a> library <p>LuaFileSystem is a <a href="http://www.lua.org">Lua</a> library
developed to complement the set of functions related to file developed to complement the set of functions related to file
systems offered by the standard Lua distribution.</p> systems offered by the standard Lua distribution.</p>
<p>LuaFileSystem is free software and uses the same <a href= <p>LuaFileSystem offers a portable way to access
"license.html">license</a> as Lua 5.0.</p> the underlying directory structure and file attributes.</p>
<a name="reference"></a> <p>LuaFileSystem source is distributed as a pair of C source and header
files. The distribution provides a <code>Makefile</code> prepared to
compile the library and install it. The file <code>config</code> should
be edited to suit the needs of the aimed platform.</p>
<h2>Reference</h2> <h2><a name="installation"></a>Installation</h2>
<p>LuaFileSystem follows the
<a href="http://www.keplerproject.org/compat">package model</a>
for Lua 5.1, therefore it should be "installed". Refer to
<a href="http://www.keplerproject.org/compat/manual.html#configuration">
Compat-5.1 configuration</a> section about how to install the compiled
binary properly</p>
<p>Windows users can use the pre-compiled version of LuaFileSystem
(<code>lfs.dll</code>) available at
<a href="http://luaforge.net/projects/luafilesystem/files">LuaForge</a></p>
<h2><a name="reference"></a>Reference</h2>
<p>LuaFileSystem offers the following functions:</p> <p>LuaFileSystem offers the following functions:</p>
<ul> <dl class="reference">
<li style="list-style: none"><a name="attributes"></a></li> <dt><a name="attributes"></a><strong><code>lfs.attributes (filepath)</code></strong></dt>
<dd>Returns a table with the file attributes corresponding to <code>filepath</code>.
The attributes are:
<dl>
<dt><strong><code>dev</code></strong></dt>
<dd>on Unix systems, represents the device that the inode resides on. On Windows systems,
represents the drive number of the disk containing the file</dd>
<li><b><tt>lfs.attributes (filepath)</tt></b><br> <dt><strong><code>ino</code></strong></dt>
Obtains the file attributes. The attributes are: <dd>on Unix systems, represents the inode number. On Windows systems this has no meaning</dd>
<div style="margin-left: 2em"><i>dev</i>, device inode resides <dt><strong><code>mode</code></strong></dt>
on;<br> <dd>string representing the associated protection mode (the values could be
<i>ino</i>, inode's number;<br> <code>file</code>, <code>directory</code>, <code>link</code>, <code>socket</code>,
<i>mode</i>, inode protection mode (<small>values could be <code>named pipe</code>, <code>char device</code>, <code>block device</code> or
<tt>file</tt>, <tt>directory</tt>, <tt>link</tt>, <tt>socket</tt>, <code>other</code>)</dd>
<tt>named pipe</tt>, <tt>char device</tt>, <tt>block device</tt> or
<tt>other</tt></small>);<br>
<i>nlink</i>, number of hard links to the file;<br>
<i>uid</i>, user-id of owner;<br>
<i>gid</i>, group-id of owner;<br>
<i>rdev</i>, device type, for special file inode;<br>
<i>access</i>, time of last access;<br>
<i>modification</i>, time of last data modification;<br>
<i>change</i>, time of last file status change;<br>
<i>size</i>, file size, in bytes;<br>
<i>blocks</i>, block allocated for file; (Unix only)<br>
<i>blksize</i>, optimal file system I/O blocksize; (Unix only)<br>
</div>
Returns a table with file attributes described above. <a name= <dt><strong><code>nlink</code></strong></dt>
"chdir"></a></li> <dd>number of hard links to the file</dd>
<li><b><tt>lfs.chdir (path)</tt></b><br> <dt><strong><code>uid</code></strong></dt>
Changes the current working directory to the given <dd>user-id of owner (Unix only, always 0 on Windows)</dd>
<tt>path</tt>.<br>
Returns <tt>true</tt> in case of success or <tt>nil</tt> plus an
error string. <a name="getcwd"></a></li>
<li><b><tt>lfs.currentdir ()</tt></b><br> <dt><strong><code>gid</code></strong></dt>
Returns a string with the current working directory or <dd>group-id of owner (Unix only, always 0 on Windows)</dd>
<code>nil</code> plus an error string. <a name="dir"></a></li>
<li><b><tt>lfs.dir (path)</tt></b><br> <dt><strong><code>rdev</code></strong></dt>
Lua iterator over the entries of a given directory. Raises an <dd>on Unix systems, represents the device type, for special file inode.
error if <tt>path</tt> is not a directory. <a name="lock"></a></li> On Windows systems represents the same as <code>dev</code></dd>
<li><b><tt>lfs.lock (filehandle, mode[, start[, <dt><strong><code>access</code></strong></dt>
length]])</tt></b><br> <dd>time of last access</dd>
Locks a file or a part of it. This function works on <em>open
files</em>; the file handle should be specified as the first
argument. The string <code>mode</code> could be either
<code>r</code> (for a read/shared lock) or <code>w</code> (for a
write/exclusive lock). The optional arguments <code>start</code>
and <code>length</code> can be used to specify a starting point and
its length; both should be numbers.<br>
Returns a boolean indicating if the operation was successful; in
case of error, it returns <code>false</code> plus an error string.
<a name="mkdir"></a></li>
<li><b><tt>lfs.mkdir (dirname)</tt></b><br> <dt><strong><code>modification</code></strong></dt>
Creates a new directory. The argument is the name of the new <dd>time of last data modification</dd>
directory.<br>
Returns a boolean indicating whether the operation succeeds or not
(in this case, an error string is returned too). <a name=
"unlock"></a></li>
<li><b><tt>lfs.unlock (filehandle[, start[, length]])</tt></b><br> <dt><strong><code>change</code></strong></dt>
Unlocks a file or a part of it. This function works on <em>open <dd>time of last file status change</dd>
files</em>; the file handle should be specified as the first
argument. The optional arguments <code>start</code> and
<code>length</code> can be used to specify a starting point and its
length; both should be numbers.<br>
Returns a boolean indicating if the operation was successful; in
case of error, it returns <code>false</code> plus a string
describing the error.</li>
</ul>
<a name="example"></a> <dt><strong><code>size</code></strong></dt>
<dd>file size, in bytes</dd>
<h2>Example</h2> <dt><strong><code>blocks</code></strong></dt>
<dd>block allocated for file; (Unix only)</dd>
<pre> <dt><strong><code>blksize</code></strong></dt>
require"lfs" <dd>optimal file system I/O blocksize; (Unix only)</dd>
</dl>
</dd>
function attrdir (path) <dt><a name="chdir"></a><strong><code>lfs.chdir (path)</code></strong></dt>
for file in lfs.dir(path) do <dd>Changes the current working directory to the given
if file ~= "." and file ~= ".." then <code>path</code>.<br />
local f = path..'/'..file Returns <code>true</code> in case of success or <code>nil</code> plus an
print ("\t "..f) error string.</dd>
local attr = lfs.attributes (f)
assert (type(attr) == "table")
if attr.mode == "directory" then
attrdir (f)
else
for name, value in pairs(attr) do
print (name, value)
end
end
end
end
end
attrdir (".") <dt><a name="getcwd"></a><strong><code>lfs.currentdir ()</code></strong></dt>
</pre> <dd>Returns a string with the current working directory or <code>nil</code>
plus an error string.</dd>
<a name="contents"></a> <dt><a name="dir"></a><strong><code>lfs.dir (path)</code></strong></dt>
<dd>Lua iterator over the entries of a given directory. Raises an
error if <code>path</code> is not a directory.</dd>
<h2>Contents</h2> <dt><a name="lock"></a><strong><code>lfs.lock (filehandle, mode[, start[, length]])</code></strong></dt>
<dd>Locks a file or a part of it. This function works on <em>open files</em>; the
file handle should be specified as the first argument.
The string <code>mode</code> could be either
<code>r</code> (for a read/shared lock) or <code>w</code> (for a
write/exclusive lock). The optional arguments <code>start</code>
and <code>length</code> can be used to specify a starting point and
its length; both should be numbers.<br />
Returns a boolean indicating if the operation was successful; in
case of error, it returns <code>false</code> plus an error string.
</dd>
<ul> <dt><a name="mkdir"></a><strong><code>lfs.mkdir (dirname)</code></strong></dt>
<li><a href="#introduction">Introduction</a></li> <dd>Creates a new directory. The argument is the name of the new
directory.<br />
Returns a boolean indicating whether the operation succeeds or not
(in this case, an error string is returned too).</dd>
<li><a href="#reference">Reference</a> <dt><a name="touch"></a><strong><code>lfs.touch (filepath [, atime [, mtime]])</code></strong></dt>
<dd>Set access and modification times of a file. This function is
a bind to <code>utime</code> function. The first argument is the
filename, the second argument (<code>atime</code>) is the access time,
and the third argument (<code>mtime</code>) is the modification time.
Both times are provided in seconds (which should be generated with
Lua standard function <code>os.date</code>).
If the modifition time is omitted, the access time provided is used;
if both times are omitted, the current time is used.<br />
Returns a boolean indicating whether the operation succeeded or not
(followed by an error string when it fails).</dd>
<ul> <dt><a name="unlock"></a><strong><code>lfs.unlock (filehandle[, start[, length]])</code></strong></dt>
<li><a href="#chdir">chdir</a></li> <dd>Unlocks a file or a part of it. This function works on
<em>open files</em>; the file handle should be specified as the first
argument. The optional arguments <code>start</code> and
<code>length</code> can be used to specify a starting point and its
length; both should be numbers.<br />
Returns a boolean indicating if the operation was successful; in
case of error, it returns <code>false</code> plus a string
describing the error.</dd>
</dl>
<li><a href="#currentdir">currentdir</a></li> </div> <!-- id="content" -->
<li><a href="#dir">dir</a></li> </div> <!-- id="main" -->
<li><a href="#lock">lock</a></li> <div id="about">
<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
<p><small>
$Id: manual.html,v 1.21 2005/05/24 23:27:34 carregal Exp $
</small></p>
</div> <!-- id="about" -->
<li><a href="#mkdir">mkdir</a></li> </div> <!-- id="container" -->
<li><a href="#unlock">unlock</a></li>
</ul>
</li>
<li><a href="#examples">Examples</a></li>
</ul>
<br>
<br>
<center><small><a href="index.html">home</a> &middot; <a href=
"#introduction">introduction</a> &middot; <a href=
"#reference">reference</a> &middot; <a href=
"#example">example</a></small></center>
<hr>
<small>$Id: manual.html,v 1.7 2004/11/10 14:09:45 tuler Exp
$</small>
</body> </body>
</html> </html>

View File

@@ -5,11 +5,12 @@
** lfs.chdir (path) ** lfs.chdir (path)
** lfs.currentdir () ** lfs.currentdir ()
** lfs.dir (path) ** lfs.dir (path)
** lfs.mkdir (path)
** lfs.lock (fh, mode) ** lfs.lock (fh, mode)
** lfs.mkdir (path)
** lfs.touch (filepath [, atime [, mtime]])
** lfs.unlock (fh) ** lfs.unlock (fh)
** **
** $Id: lfs.c,v 1.14 2004/11/17 14:08:04 tomas Exp $ ** $Id: lfs.c,v 1.21 2005/05/20 18:32:19 uid20006 Exp $
*/ */
#include <errno.h> #include <errno.h>
@@ -18,15 +19,17 @@
#include <time.h> #include <time.h>
#include <sys/stat.h> #include <sys/stat.h>
#ifdef WIN32 #ifdef _WIN32
#include <direct.h> #include <direct.h>
#include <io.h> #include <io.h>
#include <sys/locking.h> #include <sys/locking.h>
#include <sys/utime.h>
#else #else
#include <unistd.h> #include <unistd.h>
#include <dirent.h> #include <dirent.h>
#include <fcntl.h> #include <fcntl.h>
#include <sys/types.h> #include <sys/types.h>
#include <utime.h>
#endif #endif
#include "lua.h" #include "lua.h"
@@ -114,13 +117,13 @@ static FILE *check_file (lua_State *L, int idx, const char *funcname) {
*/ */
static int _file_lock (lua_State *L, FILE *fh, const char *mode, const long start, long len, const char *funcname) { static int _file_lock (lua_State *L, FILE *fh, const char *mode, const long start, long len, const char *funcname) {
int code; int code;
#ifdef WIN32 #ifdef _WIN32
/* lkmode valid values are: /* lkmode valid values are:
_LK_LOCK Locks the specified bytes. If the bytes cannot be locked, the program immediately tries again after 1 second. If, after 10 attempts, the bytes cannot be locked, the constant returns an error. LK_LOCK Locks the specified bytes. If the bytes cannot be locked, the program immediately tries again after 1 second. If, after 10 attempts, the bytes cannot be locked, the constant returns an error.
_LK_NBLCK Locks the specified bytes. If the bytes cannot be locked, the constant returns an error. LK_NBLCK Locks the specified bytes. If the bytes cannot be locked, the constant returns an error.
_LK_NBRLCK Same as _LK_NBLCK. LK_NBRLCK Same as _LK_NBLCK.
_LK_RLCK Same as _LK_LOCK. LK_RLCK Same as _LK_LOCK.
_LK_UNLCK Unlocks the specified bytes, which must have been previously locked. LK_UNLCK Unlocks the specified bytes, which must have been previously locked.
Regions should be locked only briefly and should be unlocked before closing a file or exiting the program. Regions should be locked only briefly and should be unlocked before closing a file or exiting the program.
@@ -128,10 +131,10 @@ static int _file_lock (lua_State *L, FILE *fh, const char *mode, const long star
*/ */
int lkmode; int lkmode;
switch (*mode) { switch (*mode) {
case 'r': lkmode = _LK_NBLCK; break; case 'r': lkmode = LK_NBLCK; break;
case 'w': lkmode = _LK_NBLCK; break; case 'w': lkmode = LK_NBLCK; break;
case 'u': lkmode = _LK_UNLCK; 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) { if (!len) {
fseek (fh, 0L, SEEK_END); fseek (fh, 0L, SEEK_END);
@@ -145,7 +148,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 'w': f.l_type = F_WRLCK; break;
case 'r': f.l_type = F_RDLCK; break; case 'r': f.l_type = F_RDLCK; break;
case 'u': f.l_type = F_UNLCK; 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_whence = SEEK_SET;
f.l_start = (off_t)start; f.l_start = (off_t)start;
@@ -205,7 +208,7 @@ static void cgilua_sleep( lua_State *L )
{ {
unsigned int usec = (unsigned int)luaL_check_number( L, 1 ); unsigned int usec = (unsigned int)luaL_check_number( L, 1 );
#ifndef WIN32 #ifndef _WIN32
sleep( (unsigned int)ceil( usec/1000.0 )); sleep( (unsigned int)ceil( usec/1000.0 ));
#else #else
Sleep( (DWORD)usec ); Sleep( (DWORD)usec );
@@ -230,7 +233,7 @@ static void cgilua_filesize( lua_State *L )
static int make_dir (lua_State *L) { static int make_dir (lua_State *L) {
const char *path = luaL_checkstring (L, 1); const char *path = luaL_checkstring (L, 1);
int fail; int fail;
#ifdef WIN32 #ifdef _WIN32
int oldmask = umask (0); int oldmask = umask (0);
fail = _mkdir (path); fail = _mkdir (path);
#else #else
@@ -345,18 +348,32 @@ static int dir_create_meta (lua_State *L) {
#ifdef _WIN32 #ifdef _WIN32
#define S_ISDIR(mode) (mode&_S_IFDIR) #ifndef S_ISDIR
#define S_ISREG(mode) (mode&_S_IFREG) #define S_ISDIR(mode) (mode&_S_IFDIR)
#define S_ISLNK(mode) (0) #endif
#define S_ISSOCK(mode) (0) #ifndef S_ISREG
#define S_ISFIFO(mode) (0) #define S_ISREG(mode) (mode&_S_IFREG)
#define S_ISCHR(mode) (mode&_S_IFCHR) #endif
#define S_ISBLK(mode) (0) #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 #endif
/* /*
** Convert the inode protection mode to a string. ** Convert the inode protection mode to a string.
*/ */
#ifdef WIN32 #ifdef _WIN32
static const char *mode2string (unsigned short mode) { static const char *mode2string (unsigned short mode) {
#else #else
static const char *mode2string (mode_t mode) { static const char *mode2string (mode_t mode) {
@@ -380,6 +397,30 @@ static const char *mode2string (mode_t mode) {
} }
/*
** Set access time and modification values for file
*/
static int file_utime (lua_State *L) {
const char *file = luaL_checkstring (L, 1);
struct utimbuf utb, *buf;
if (lua_gettop (L) == 1) /* set to current date/time */
buf = NULL;
else {
utb.actime = (time_t)luaL_optnumber (L, 2, 0);
utb.modtime = (time_t)luaL_optnumber (L, 3, utb.actime);
buf = &utb;
}
if (utime (file, buf)) {
lua_pushnil (L);
lua_pushfstring (L, "%s", strerror (errno));
return 2;
}
lua_pushboolean (L, 1);
return 1;
}
/* /*
** Get file information ** Get file information
*/ */
@@ -437,7 +478,7 @@ static int file_info (lua_State *L) {
lua_pushliteral (L, "size"); lua_pushliteral (L, "size");
lua_pushnumber (L, (lua_Number)info.st_size); lua_pushnumber (L, (lua_Number)info.st_size);
lua_rawset (L, -3); lua_rawset (L, -3);
#ifndef WIN32 #ifndef _WIN32
/* blocks allocated for file */ /* blocks allocated for file */
lua_pushliteral (L, "blocks"); lua_pushliteral (L, "blocks");
lua_pushnumber (L, (lua_Number)info.st_blocks); lua_pushnumber (L, (lua_Number)info.st_blocks);
@@ -457,7 +498,7 @@ static int file_info (lua_State *L) {
*/ */
static void set_info (lua_State *L) { static void set_info (lua_State *L) {
lua_pushliteral (L, "_COPYRIGHT"); 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_settable (L, -3);
lua_pushliteral (L, "_DESCRIPTION"); 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"); 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 +507,7 @@ static void set_info (lua_State *L) {
lua_pushliteral (L, "LuaFileSystem"); lua_pushliteral (L, "LuaFileSystem");
lua_settable (L, -3); lua_settable (L, -3);
lua_pushliteral (L, "_VERSION"); lua_pushliteral (L, "_VERSION");
lua_pushliteral (L, "1.0b"); lua_pushliteral (L, "1.1");
lua_settable (L, -3); lua_settable (L, -3);
} }
@@ -478,6 +519,7 @@ static const struct luaL_reg fslib[] = {
{"dir", dir_iter_factory}, {"dir", dir_iter_factory},
{"lock", file_lock}, {"lock", file_lock},
{"mkdir", make_dir}, {"mkdir", make_dir},
{"touch", file_utime},
{"unlock", file_unlock}, {"unlock", file_unlock},
{NULL, NULL}, {NULL, NULL},
}; };

View File

@@ -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.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") assert (lfs.chdir ("this couldn't be an actual directory") == nil, "could change to a non-existent directory")
-- Changing creating and removing directories -- Changing creating and removing directories
assert (lfs.mkdir (tmp.."/lfs_tmp_dir"), "could not make a new directory") local tmpdir = tmp.."/lfs_tmp_dir"
assert (os.remove (tmp.."/lfs_tmp_dir"), "could not remove new directory") assert (lfs.mkdir (tmpdir), "could not make a new directory")
assert (lfs.mkdir (tmp.."/lfs_tmp_dir/lfs_tmp_dir") == false, "could create a directory inside a non-existent one") 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 (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") assert (type(lfs.attributes (upper)) == "table", "couldn't get attributes of upper directory")
print"Ok!"

View File

@@ -1,5 +1,5 @@
LIBRARY lfs.dll LIBRARY lfs.dll
DESCRIPTION "LuaFileSystem" DESCRIPTION "LuaFileSystem"
VERSION 1.0 VERSION 1.1
EXPORTS EXPORTS
luaopen_lfs luaopen_lfs

View File

@@ -43,7 +43,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LUAFILESYSTEM_EXPORTS" /YX /FD /c # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LUAFILESYSTEM_EXPORTS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../lua/include" /I "../../compat" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LUAFILESYSTEM_EXPORTS" /YX /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "../../external-src/lua50/include" /I "../../compat/src" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LUAFILESYSTEM_EXPORTS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x416 /d "NDEBUG" # ADD BASE RSC /l 0x416 /d "NDEBUG"
@@ -53,7 +53,11 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
# ADD LINK32 lua50.lib lualib50.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../bin/vc6/lfs.dll" /libpath:"../../lua/lib/vc6" # ADD LINK32 lua50.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../bin/vc6/lfs.dll" /libpath:"../../external-src/lua50/lib/dll"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Cmds=cd ../bin/vc6 zip.exe lfs-1.1-win32.zip lfs.dll
# End Special Build Tool
!ELSEIF "$(CFG)" == "luafilesystem_dll - Win32 Debug" !ELSEIF "$(CFG)" == "luafilesystem_dll - Win32 Debug"
@@ -69,7 +73,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LUAFILESYSTEM_EXPORTS" /YX /FD /GZ /c # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LUAFILESYSTEM_EXPORTS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../lua/include" /I "../../compat" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LUAFILESYSTEM_EXPORTS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../external-src/lua50/include" /I "../../compat/src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LUAFILESYSTEM_EXPORTS" /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x416 /d "_DEBUG" # ADD BASE RSC /l 0x416 /d "_DEBUG"
@@ -79,7 +83,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo # ADD BSC32 /nologo
LINK32=link.exe LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 lua50d.lib lualib50d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"../bin/vc6/lfsd.dll" /pdbtype:sept /libpath:"../../lua/lib/vc6" # ADD LINK32 lua50.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"../bin/vc6/lfsd.dll" /pdbtype:sept /libpath:"../../external-src/lua50/lib/dll"
!ENDIF !ENDIF
@@ -92,15 +96,15 @@ LINK32=link.exe
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File # Begin Source File
SOURCE="..\..\compat\compat-5.1.c" SOURCE="..\..\compat\src\compat-5.1.c"
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\lfs.c SOURCE=..\src\lfs.c
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\lfs.def SOURCE=.\lfs.def
# End Source File # End Source File
# End Group # End Group
# Begin Group "Header Files" # Begin Group "Header Files"
@@ -108,11 +112,11 @@ SOURCE=..\lfs.def
# PROP Default_Filter "h;hpp;hxx;hm;inl" # PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File # Begin Source File
SOURCE="..\..\compat\compat-5.1.h" SOURCE="..\..\compat\src\compat-5.1.h"
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\lfs.h SOURCE=..\src\lfs.h
# End Source File # End Source File
# End Group # End Group
# Begin Group "Resource Files" # Begin Group "Resource Files"