1 Commits

Author SHA1 Message Date
tomas
b848b63be4 Importando 2004-07-27 14:15:24 +00:00
16 changed files with 405 additions and 978 deletions

View File

@@ -1,41 +1,35 @@
# $Id: Makefile,v 1.19 2005/05/30 17:54:49 uid20006 Exp $ # $Id: Makefile,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $
T= lfs T= luafilesystem
include ./config include ./config
V= 1.1 V= 1.0a
DIST_DIR= luafilesystem-$V LIBNAME= lib$T.$V$(LIB_EXT)
TAR_FILE= $(DIST_DIR).tar.gz L= $T.lua
ZIP_FILE= $(DIST_DIR).zip TL= t_$T.lua
LIBNAME= lib$T.$V.so
COMPAT_O= $(COMPAT_DIR)/compat-5.1.o SRCS= $T.c
SRCS= src/$T.c OBJS= $T.o
OBJS= src/$T.o $(COMPAT_O)
lib: src/$(LIBNAME) lib: $(LIBNAME)
src/$(LIBNAME): $(OBJS) $(LIBNAME): $(OBJS) $(TL)
$(CC) $(CFLAGS) $(LIBS) $(LIB_OPTION) -o src/$(LIBNAME) $(OBJS) $(CC) $(CFLAGS) $(LIB_OPTION) -o $(LIBNAME) $(OBJS) $(LIBS)
sed -e "s|LIB_NAME|$(LIB_DIR)/$(LIBNAME)|" $(TL) > $L
$(COMPAT_O): $(COMPAT_DIR)/compat-5.1.c $(LUA_DIR)/$L: $L
$(CC) -c $(CFLAGS) -o $@ $(COMPAT_DIR)/compat-5.1.c mkdir -p $(LUA_DIR)
cp $L $(LUA_DIR)
install: src/$(LIBNAME) install: $(LUA_DIR)/$L $(LIBNAME)
mkdir -p $(LUA_LIBDIR) mkdir -p $(LIB_DIR)
cp src/$(LIBNAME) $(LUA_LIBDIR) cp $(LIBNAME) $(LIB_DIR)
ln -f -s $(LUA_LIBDIR)/$(LIBNAME) $(LUA_LIBDIR)/$T.so
clean: clean:
rm -f $L src/$(LIBNAME) $(OBJS) rm -f $L $(LIBNAME) $(OBJS)
dist: dist_dir dist:
tar -czf $(TAR_FILE) $(DIST_DIR)
zip -rq $(ZIP_FILE) $(DIST_DIR)/*
rm -rf $(DIST_DIR)
dist_dir:
mkdir -p $(DIST_DIR) mkdir -p $(DIST_DIR)
cp config $(SRCS) $T.h $T.def Makefile *html luafilesystem.png $(DIST_DIR) cp config $(SRCS) $T.h $(TL) Makefile $(DIST_DIR)

21
config
View File

@@ -1,22 +1,21 @@
# Installation directories # Installation directories
# System's libraries directory (where binary libraries are installed) # System's libraries directory (where Lua libraries are installed)
LUA_LIBDIR= /usr/local/lib/lua/5.0 LIB_DIR= /usr/local/lib
# Lua includes directory LUA_DIR= /usr/local/lua
LUA_INC= /usr/local/include/lua5
# OS dependent # OS dependent
#LIB_OPTION= -bundle -undefined dynamic_lookup #for MacOS X LIB_EXT= .dylib
LIB_OPTION= -shared #for Linux #LIB_EXT= .so
LIB_OPTION= -dynamiclib #for MacOS X
COMPAT_DIR= ../compat/src #LIB_OPTION= -shared #for Linux
# Compilation directives # Compilation directives
# pre-compile and include mod2.lua into mod_lua.c
# 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$(LUA_INC) -I$(COMPAT_DIR) INCS= -I/usr/local/include/lua5
LIBS= $(LUA_LIBS) $(DLLIB) LIBS= -L$(LIB_DIR) -llua -llualib -lm $(DLLIB)
CFLAGS= $(WARN) $(INCS) CFLAGS= $(WARN) $(INCS)
CC= gcc CC= gcc

View File

@@ -1,96 +0,0 @@
<!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,121 +1,114 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html> <html>
<head> <head>
<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>
<div id="container"> <body bgcolor="#FFFFFF">
<div id="product"> <center>
<div id="product_logo"><a href="http://www.keplerproject.org"> <table border=0 cellspacing=2 cellpadding=2>
<img alt="LuaFileSystem" src="luafilesystem.png"/> <tr><td align=center><a href="http://www.keplerproject.org">
</a></div> <img border=0 alt="LuaFileSystem" src="luafilesystem.png"></a>
<div id="product_name"><big><strong>LuaFileSystem</strong></big></div> <tr><td align=center><big><b>LuaFileSystem</b></big>
<div id="product_description">File System Library for the Lua Programming Language</div> <tr><td align=center valign=top>File system library for the
</div> <!-- id="product" --> <a href="http://www.lua.org">Lua</a>
programming language
</table>
</center>
<p>
<div id="main"> <center><small>
<a href="#over">overview</a> &middot;
<div id="navigation"> <a href="#download">download</a> &middot;
<h1>LuaFileSystem</h1> <a href="manual.html">manual</a> &middot;
<ul> <a href="#credits">credits</a> &middot;
<li><strong>Home</strong> <a href="#contact">contact us</a>
<ul> </small></center>
<li><a href="index.html#overview">Overview</a></li> <p>
<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>
<hr>
<h2>Contents</h2>
<p>
<ul> <ul>
<li>[30/May/2005] Version 1.1 released<br/> <li> <a href="#over">Overview</a>
added function <code>lfs.touch</code>. <li> <a href="#version">Current Version</a>
</li> <li> <a href="#download">Download</a>
<li>[21/Jan/2005] Version 1.0 released</li> <li> <a href="#manual">Manual</a>
<li>[10/Nov/2004] Version 1.0 beta released</li> <li> <a href="#credits">Credits</a>
<li> <a href="#contact">Contact us</a>
</ul>
<a name="over"></a>
<h2>Overview</h2>
<p>
LuaFileSystem is a library developed to complement the set of functions
related to file systems offered by the standard Lua distribution.
One of its goals is to be as portable as Lua.
<p>
LuaFileSystem is free software and uses the same
<a href="license.html">license</a>
as Lua 5.0.
<a name="version"></a>
<h2>Current version</h2>
<p>
Current version is 1.0 alpha.
It was developed for Lua 5.0.
</p>
<a name="download"></a>
<h2>Download</h2>
<p>
LuaFileSystem can be downloaded in source code from the following links:
<p>
<ul>
<li><a href="luafilesystem-1.0a.tar.gz">luafilesystem-1.0a.tar.gz</a>.
<li><a href="luafilesystem-1.0a.zip">luafilesystem-1.0a.zip</a>.
</ul> </ul>
<a name="new"></a>
<h2>What's new</h2>
<p>
<ul>
<li>[2/Aug/2004] Version 1.0 alpha released
</ul>
<h2><a name="credits"></a>Credits</h2>
<p>LuaFileSystem was designed by Roberto Ierusalimschy, <a name="credits"></a>
Andr&eacute; Carregal and Tom&aacute;s Guisasola as part of the <h2>Credits</h2>
<a href="http://www.keplerproject.org">Kepler Project</a>
which holds its copyright.</p>
<h2><a name="contact"></a>Contact us</h2> <p>
LuaFileSystem was designed by Roberto Ierusalimschy,
Andr&eacute; Carregal and Tom&aacute;s Guisasola as part of
<a href="http://www.keplerproject.org">The Kepler Project</a>
which holds its copyright.
</p>
<p>For more information please
<a href="mailto:info-NO-SPAM-THANKS@keplerproject.org">contact us</a>.
Comments are welcome!</p>
</div> <!-- id="content" --> <a name="contact"></a>
<h2>Contact us</h2>
</div> <!-- id="main" --> <p>
For more information please
<a href="mailto:tomas-NO-SPAM-THANKS@keplerproject.org">contact us</a>.
Comments are welcome!
</p>
<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" -->
<p>
<hr>
<small>
$Id: index.html,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $
</small>
</body> </body>
</html> </html>

View File

@@ -1,114 +1,78 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <! See Copyright Notice at the end of this file>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <HTML>
<html> <HEAD>
<head> <TITLE>LuaFileSystem: license</TITLE>
<title>LuaFileSystem</title> </HEAD>
<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"> <BODY BGCOLOR="#FFFFFF">
<div id="product"> <HR>
<div id="product_logo"><a href="http://www.keplerproject.org"> <H1>
<img alt="LuaFileSystem" src="luafilesystem.png"/> License
</a></div> </H1>
<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"> LuaFileSystem
is free software:
<div id="navigation"> it can be used for both academic and commercial purposes at absolutely no cost.
<h1>LuaFileSystem</h1> There are no royalties or GNU-like "copyleft" restrictions.
<ul> LuaFileSystem qualifies as
<li><a href="index.html">Home</a> <A HREF="http://www.opensource.org/docs/definition.html">Open Source</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>
<p>
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. software.
Its licenses are compatible with Its licenses are compatible with
<a href="http://www.gnu.org/licenses/gpl.html">GPL</a>. <A HREF="http://www.gnu.org/licenses/gpl.html">GPL</A>.
LuaFileSystem is not in the public domain and the LuaFileSystem is not in the public domain and
<a href="http://www.keplerproject.org">Kepler Project</a> <a href="http://www.keplerproject.org">The Kepler Project</a>
keep its copyright. keep its copyright.
The legal details are below. The legal details are below.
</p> <P>
<p>The spirit of the license is that you are free to use The spirit of the license is that
LuaFileSystem for any purpose at no cost without having to ask us. you are free to use LuaFileSystem for any purpose at no cost without having to ask us.
The only requirement is that if you do use LuaFileSystem, then you The only requirement is that
should give us credit by including the appropriate copyright notice if you do use LuaFileSystem,
somewhere in your product or its documentation.</p> then you should give us credit by including the appropriate copyright notice
somewhere in your product or its documentation.
<P>
<p>The LuaFileSystem library is designed and implemented by Roberto The LuaFileSystem library is designed and implemented
Ierusalimschy, Andr&eacute; Carregal and Tom&aacute;s Guisasola. by
The implementation is not derived from licensed software.</p> Roberto Ierusalimschy,
Andr&eacute; Carregal and
Tom&aacute;s Guisasola.
The implementation is not derived from licensed software.
<P>
<hr/> <!-- ===================================================================== -->
<p>Copyright &copy; 2004-2005 The Kepler Project.</p> <HR>
Copyright &copy; 2004 The Kepler Project.
<P>
<p>Permission is hereby granted, free of charge, to any person Permission is hereby granted, free of charge, to any person obtaining a copy
obtaining a copy of this software and associated documentation of this software and associated documentation files (the "Software"), to deal
files (the "Software"), to deal in the Software without in the Software without restriction, including without limitation the rights
restriction, including without limitation the rights to use, copy, to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
modify, merge, publish, distribute, sublicense, and/or sell copies copies of the Software, and to permit persons to whom the Software is
of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
furnished to do so, subject to the following conditions:</p> <P>
<p>The above copyright notice and this permission notice shall be The above copyright notice and this permission notice shall be included in
included in all copies or substantial portions of the Software.</p> all copies or substantial portions of the Software.
<P>
<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE THE SOFTWARE.
SOFTWARE.</p> <P>
</div> <!-- id="content" --> <!-- ===================================================================== -->
<HR>
<SMALL>
$Id: license.html,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $
</SMALL>
</div> <!-- id="main" --> </BODY>
</HTML>
<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" -->
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

View File

@@ -1,202 +1,144 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <! See Copyright Notice in license.html>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html>
<html>
<head> <head>
<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 };
</head> </style>
</head>
<body>
<body bgcolor="#FFFFFF">
<div id="container">
<hr>
<div id="product">
<div id="product_logo"><a href="http://www.keplerproject.org"> <center>
<img alt="LuaFileSystem" src="luafilesystem.png"/> <table border=0 cellspacing=2 cellpadding=2>
</a></div> <tr><td align=center><a href="http://www.keplerproject.org/luafilesystem">
<div id="product_name"><big><strong>LuaFileSystem</strong></big></div> <img border=0 alt="LuaFileSystem logo" src="luafilesystem.png"></a>
<div id="product_description">File System Library for the Lua Programming Language</div> <tr><td align=center><big><b>LuaFileSystem Reference Manual</b></big>
</div> <!-- id="product" --> <tr><td align=center valign=top>File system library for the
<a href="http://www.lua.org">Lua</a>
<div id="main"> programming language
</table>
<div id="navigation"> </center>
<h1>LuaFileSystem</h1> <p>
<ul>
<li><a href="index.html">Home</a> <center><small>
<ul> <a href="index.html">home</a> &middot;
<li><a href="index.html#overview">Overview</a></li> <a href="#introduction">introduction</a> &middot;
<li><a href="index.html#status">Status</a></li> <a href="#reference">reference</a> &middot;
<li><a href="index.html#download">Download</a></li> <a href="#example">example</a>
<li><a href="index.html#history">History</a></li> </small></center>
<li><a href="index.html#credits">Credits</a></li> <p>
<li><a href="index.html#contact">Contact us</a></li>
</ul> <hr>
</li>
<li><strong>Manual</strong> <a name="introduction"></a>
<ul> <h2>Introduction</h2>
<li><a href="manual.html#introduction">Introduction</a></li>
<li><a href="manual.html#installation">Installation</a></li> <p>
<li><a href="manual.html#reference">Reference</a></li> LuaFileSystem is a <a href="http://www.lua.org">Lua</a> library
</ul> developed to complement the set of functions related to file systems offered
</li> by the standard Lua distribution.
<li><a href="examples.html">Examples</a></li> <p>
<li><a href="license.html">License</a></li> LuaFileSystem is free software and uses the same
</ul> <a href="license.html">license</a>
</div> <!-- id="navigation" --> as Lua 5.0.
</p>
<div id="content">
<h2><a name="introduction"></a>Introduction</h2> <a name="reference"></a>
<h2>Reference</h2>
<p>LuaFileSystem is a <a href="http://www.lua.org">Lua</a> library
developed to complement the set of functions related to file <p>
systems offered by the standard Lua distribution.</p> LuaFileSystem offers the following functions:
<ul>
<p>LuaFileSystem offers a portable way to access <a name="chdir"></a>
the underlying directory structure and file attributes.</p> <li> <b><tt>luafilesystem.chdir (path)</tt></b> <br>
Changes the current
<p>LuaFileSystem source is distributed as a pair of C source and header working directory to the given <tt>path</tt>.
files. The distribution provides a <code>Makefile</code> prepared to
compile the library and install it. The file <code>config</code> should <a name="getcwd"></a>
be edited to suit the needs of the aimed platform.</p> <li> <b><tt>luafilesystem.currentdir ()</tt></b> <br>
Returns the current
<h2><a name="installation"></a>Installation</h2> working directory or <code>nil</code> plus an error string.
<p>LuaFileSystem follows the <a name="dir"></a>
<a href="http://www.keplerproject.org/compat">package model</a> <li> <b><tt>luafilesystem.dir (path)</tt></b> <br>
for Lua 5.1, therefore it should be "installed". Refer to Lua iterator over the entries
<a href="http://www.keplerproject.org/compat/manual.html#configuration"> of a given directory.
Compat-5.1 configuration</a> section about how to install the compiled
binary properly</p> <a name="lock"></a>
<li> <b><tt>luafilesystem.lock (filehandle, mode[, start[, length]])</tt></b> <br>
<p>Windows users can use the pre-compiled version of LuaFileSystem Locks a file or a part of it.
(<code>lfs.dll</code>) available at This function works on <em>open files</em>;
<a href="http://luaforge.net/projects/luafilesystem/files">LuaForge</a></p> the file handle should be specified as the first argument.
The string <code>mode</code> could be either <code>r</code> (for a
<h2><a name="reference"></a>Reference</h2> read/shared lock) or <code>w</code> (for a write/exclusive lock).
The optional arguments <code>start</code> and <code>length</code> can be
<p>LuaFileSystem offers the following functions:</p> used to specify a starting point and its length;
both should be numbers.
<dl class="reference"> This function returns a boolean indicating if the operation was successful;
<dt><a name="attributes"></a><strong><code>lfs.attributes (filepath)</code></strong></dt> in case of error, it returns <code>false</code> plus a string describing the
<dd>Returns a table with the file attributes corresponding to <code>filepath</code>. error.
The attributes are:
<dl> <a name="mkdir"></a>
<dt><strong><code>dev</code></strong></dt> <li> <b><tt>luafilesystem.mkdir (dirname)</tt></b> <br>
<dd>on Unix systems, represents the device that the inode resides on. On Windows systems, Creates a new directory.
represents the drive number of the disk containing the file</dd> The argument is the name of the new directory.
<dt><strong><code>ino</code></strong></dt> <a name="unlock"></a>
<dd>on Unix systems, represents the inode number. On Windows systems this has no meaning</dd> <li> <b><tt>luafilesystem.unlock (filehandle[, start[, length]])</tt></b> <br>
Unlocks a file or a part of it.
<dt><strong><code>mode</code></strong></dt> This function works on <em>open files</em>;
<dd>string representing the associated protection mode (the values could be the file handle should be specified as the first argument.
<code>file</code>, <code>directory</code>, <code>link</code>, <code>socket</code>, The optional arguments <code>start</code> and <code>length</code> can be
<code>named pipe</code>, <code>char device</code>, <code>block device</code> or used to specify a starting point and its length;
<code>other</code>)</dd> both should be numbers.
This function returns a boolean indicating if the operation was successful;
<dt><strong><code>nlink</code></strong></dt> in case of error, it returns <code>false</code> plus a string describing the
<dd>number of hard links to the file</dd> error.
<dt><strong><code>uid</code></strong></dt> </ul>
<dd>user-id of owner (Unix only, always 0 on Windows)</dd>
<dt><strong><code>gid</code></strong></dt> <a name="example"></a>
<dd>group-id of owner (Unix only, always 0 on Windows)</dd> <h2>Example</h2>
<dt><strong><code>rdev</code></strong></dt>
<dd>on Unix systems, represents the device type, for special file inode. <a name="contents"></a>
On Windows systems represents the same as <code>dev</code></dd> <h2>Contents</h2>
<p>
<dt><strong><code>access</code></strong></dt> <ul>
<dd>time of last access</dd> <li> <a href="#introduction">Introduction</a>
<li> <a href="#reference">Reference</a>
<dt><strong><code>modification</code></strong></dt> <ul>
<dd>time of last data modification</dd> <li> <a href="#chdir">chdir</a>
<li> <a href="#currentdir">currentdir</a>
<dt><strong><code>change</code></strong></dt> <li> <a href="#dir">dir</a>
<dd>time of last file status change</dd> <li> <a href="#lock">lock</a>
<li> <a href="#mkdir">mkdir</a>
<dt><strong><code>size</code></strong></dt> <li> <a href="#unlock">unlock</a>
<dd>file size, in bytes</dd> </ul>
<li> <a href="#examples">Examples</a>
<dt><strong><code>blocks</code></strong></dt> </ul>
<dd>block allocated for file; (Unix only)</dd> </p>
<dt><strong><code>blksize</code></strong></dt>
<dd>optimal file system I/O blocksize; (Unix only)</dd> <p>
</dl> <center><small>
</dd> <a href="index.html">home</a> &middot;
<a href="#introduction">introduction</a> &middot;
<dt><a name="chdir"></a><strong><code>lfs.chdir (path)</code></strong></dt> <a href="#reference">reference</a> &middot;
<dd>Changes the current working directory to the given <a href="#example">example</a>
<code>path</code>.<br /> </small></center>
Returns <code>true</code> in case of success or <code>nil</code> plus an <p>
error string.</dd>
<hr>
<dt><a name="getcwd"></a><strong><code>lfs.currentdir ()</code></strong></dt> <small>
<dd>Returns a string with the current working directory or <code>nil</code> $Id: manual.html,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $
plus an error string.</dd> </small>
<dt><a name="dir"></a><strong><code>lfs.dir (path)</code></strong></dt> </body>
<dd>Lua iterator over the entries of a given directory. Raises an </html>
error if <code>path</code> is not a directory.</dd>
<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>
<dt><a name="mkdir"></a><strong><code>lfs.mkdir (dirname)</code></strong></dt>
<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>
<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>
<dt><a name="unlock"></a><strong><code>lfs.unlock (filehandle[, start[, length]])</code></strong></dt>
<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>
</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: manual.html,v 1.21 2005/05/24 23:27:34 carregal Exp $
</small></p>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>

View File

@@ -1,43 +1,39 @@
/* /*
** File system manipulation library. ** File system manipulation library.
** This library offers these functions: ** This library offers these functions:
** lfs.attributes (filepath [, attributename]) ** luafilesystem.attributes (filepath [, attributename])
** lfs.chdir (path) ** luafilesystem.chdir (path)
** lfs.currentdir () ** luafilesystem.currentdir ()
** lfs.dir (path) ** luafilesystem.dir (path)
** lfs.lock (fh, mode) ** luafilesystem.mkdir (path)
** lfs.mkdir (path) ** luafilesystem.lock (fh, mode)
** lfs.touch (filepath [, atime [, mtime]]) ** luafilesystem.unlock (fh)
** lfs.unlock (fh)
** **
** $Id: lfs.c,v 1.21 2005/05/20 18:32:19 uid20006 Exp $ ** $Id: luafilesystem.c,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $
*/ */
#include <errno.h> #include <errno.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <time.h> #include <time.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> #include <sys/stat.h>
#endif #endif
#include "lua.h" #include <lua.h>
#include "lauxlib.h" #include <lauxlib.h>
#include "lualib.h" #include <lualib.h>
#include "compat-5.1.h"
#include "lfs.h" #include "luafilesystem.h"
/* Define 'strerror' for systems that do not implement it */ /* Define 'strerror' for systems that do not implement it */
#ifdef NO_STRERROR #ifdef NO_STRERROR
@@ -67,15 +63,10 @@ typedef struct dir_data {
*/ */
static int change_dir (lua_State *L) { static int change_dir (lua_State *L) {
const char *path = luaL_checkstring(L, 1); const char *path = luaL_checkstring(L, 1);
if (chdir(path)) { if (chdir(path))
lua_pushnil (L); luaL_error(L,"Unable to change working directory to '%s'\n%s\n",
lua_pushfstring (L,"Unable to change working directory to '%s'\n%s\n",
path, chdir_error); path, chdir_error);
return 2; return 0;
} else {
lua_pushboolean (L, 1);
return 1;
}
} }
/* /*
@@ -117,13 +108,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.
@@ -131,10 +122,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 : return luaL_error (L, "%s: invalid mode", funcname); default : luaL_error (L, "%s: invalid mode", funcname);
} }
if (!len) { if (!len) {
fseek (fh, 0L, SEEK_END); fseek (fh, 0L, SEEK_END);
@@ -148,7 +139,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 : return luaL_error (L, "%s: invalid mode", funcname); default : 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;
@@ -208,7 +199,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 );
@@ -233,7 +224,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
@@ -241,11 +232,7 @@ static int make_dir (lua_State *L) {
fail = mkdir (path, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | fail = mkdir (path, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP |
S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH ); S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH );
#endif #endif
lua_pushboolean (L, !fail); lua_pushboolean (L, fail);
if (fail) {
lua_pushfstring (L, "%s", strerror(errno));
return 2;
}
umask (oldmask); umask (oldmask);
return 1; return 1;
} }
@@ -347,186 +334,18 @@ static int dir_create_meta (lua_State *L) {
} }
#ifdef _WIN32
#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.
*/
#ifdef _WIN32
static const char *mode2string (unsigned short mode) {
#else
static const char *mode2string (mode_t mode) {
#endif
if ( S_ISREG(mode) )
return "file";
else if ( S_ISDIR(mode) )
return "directory";
else if ( S_ISLNK(mode) )
return "link";
else if ( S_ISSOCK(mode) )
return "socket";
else if ( S_ISFIFO(mode) )
return "named pipe";
else if ( S_ISCHR(mode) )
return "char device";
else if ( S_ISBLK(mode) )
return "block device";
else
return "other";
}
/*
** 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
*/
static int file_info (lua_State *L) {
struct stat info;
const char *file = luaL_checkstring (L, 1);
if (stat(file, &info)) {
lua_pushnil (L);
lua_pushfstring (L, "cannot obtain information from file `%s'", file);
return 2;
}
lua_newtable (L);
/* device inode resides on */
lua_pushliteral (L, "dev");
lua_pushnumber (L, (lua_Number)info.st_dev);
lua_rawset (L, -3);
/* inode's number */
lua_pushliteral (L, "ino");
lua_pushnumber (L, (lua_Number)info.st_ino);
lua_rawset (L, -3);
/* inode protection mode */
lua_pushliteral (L, "mode");
lua_pushstring (L, mode2string (info.st_mode));
lua_rawset (L, -3);
/* number of hard links to the file */
lua_pushliteral (L, "nlink");
lua_pushnumber (L, (lua_Number)info.st_nlink);
lua_rawset (L, -3);
/* user-id of owner */
lua_pushliteral (L, "uid");
lua_pushnumber (L, (lua_Number)info.st_uid);
lua_rawset (L, -3);
/* group-id of owner */
lua_pushliteral (L, "gid");
lua_pushnumber (L, (lua_Number)info.st_gid);
lua_rawset (L, -3);
/* device type, for special file inode */
lua_pushliteral (L, "rdev");
lua_pushnumber (L, (lua_Number)info.st_rdev);
lua_rawset (L, -3);
/* time of last access */
lua_pushliteral (L, "access");
lua_pushnumber (L, info.st_atime);
lua_rawset (L, -3);
/* time of last data modification */
lua_pushliteral (L, "modification");
lua_pushnumber (L, info.st_mtime);
lua_rawset (L, -3);
/* time of last file status change */
lua_pushliteral (L, "change");
lua_pushnumber (L, info.st_ctime);
lua_rawset (L, -3);
/* file size, in bytes */
lua_pushliteral (L, "size");
lua_pushnumber (L, (lua_Number)info.st_size);
lua_rawset (L, -3);
#ifndef _WIN32
/* blocks allocated for file */
lua_pushliteral (L, "blocks");
lua_pushnumber (L, (lua_Number)info.st_blocks);
lua_rawset (L, -3);
/* optimal file system I/O blocksize */
lua_pushliteral (L, "blksize");
lua_pushnumber (L, (lua_Number)info.st_blksize);
lua_rawset (L, -3);
#endif
return 1;
}
/*
** Assumes the table is on top of the stack.
*/
static void set_info (lua_State *L) {
lua_pushliteral (L, "_COPYRIGHT");
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");
lua_settable (L, -3);
lua_pushliteral (L, "_NAME");
lua_pushliteral (L, "LuaFileSystem");
lua_settable (L, -3);
lua_pushliteral (L, "_VERSION");
lua_pushliteral (L, "1.1");
lua_settable (L, -3);
}
static const struct luaL_reg fslib[] = { static const struct luaL_reg fslib[] = {
{"attributes", file_info},
{"chdir", change_dir}, {"chdir", change_dir},
{"currentdir", get_dir}, {"currentdir", get_dir},
{"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},
}; };
int luaopen_lfs (lua_State *L) { int luaopen_luafilesystem (lua_State *L) {
dir_create_meta (L); dir_create_meta (L);
luaL_openlib (L, "lfs", fslib, 0); luaL_openlib (L, "luafilesystem", fslib, 0);
set_info (L);
return 1; return 1;
} }

5
luafilesystem.def Normal file
View File

@@ -0,0 +1,5 @@
LIBRARY luafilesystem.dll
DESCRIPTION "LuaFilesystem"
VERSION 1.0
EXPORTS
luaopen_luafilesystem

View File

@@ -1,5 +1,5 @@
/* Define 'chdir' for systems that do not implement it */ /* Define 'chdir' for systems that do not implement it */
/* $Id: lfs.h,v 1.1 2004/07/29 14:26:33 tomas Exp $ */ /* $Id: luafilesystem.h,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $ */
#ifdef NO_CHDIR #ifdef NO_CHDIR
#define chdir(p) (-1) #define chdir(p) (-1)
#define chdir_error "Function 'chdir' not provided by system" #define chdir_error "Function 'chdir' not provided by system"
@@ -7,4 +7,4 @@
#define chdir_error strerror(errno) #define chdir_error strerror(errno)
#endif #endif
int luaopen_lfs (lua_State *L); int luaopen_filesystem (lua_State *L);

8
t_luafilesystem.lua Normal file
View File

@@ -0,0 +1,8 @@
-- $Id: t_luafilesystem.lua,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $
if not luafilesystem and loadlib then
local libname = "LIB_NAME"
local libopen = "luaopen_luafilesystem"
local init, err1, err2 = loadlib (libname, libopen)
assert (init, (err1 or '')..(err2 or ''))
init ()
end

26
teste.lua Normal file
View File

@@ -0,0 +1,26 @@
#!/usr/local/bin/lua -i
require"luafilesystem"
print(luafilesystem.version)
function p ()
local fh = assert (io.open ("teste", 'r'))
assert (luafilesystem.lock (fh, 'r'))
print (fh:read"*a")
fh:close ()
end
function wr ()
fh = assert (io.open ("teste", 'w'))
assert (luafilesystem.lock (fh, 'w'))
end
function op ()
fh = assert (io.open ("teste", 'r'))
assert (luafilesystem.lock (fh, 'r'))
end
function fw (x)
assert (fh:write (x))
end

View File

@@ -1,62 +0,0 @@
#!/usr/local/bin/lua
local tmp = "/tmp"
local sep = "/"
local upper = ".."
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
-- Checking changing directories
local current = assert (lfs.currentdir())
local reldir = string.gsub (current, "^.*%"..sep.."([^"..sep.."])$", "%1")
assert (lfs.chdir (upper), "could not change to upper directory")
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"
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!"

View File

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

View File

@@ -1,33 +0,0 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "luafilesystem_dll"=.\luafilesystem_dll.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
luafilesystem
..
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -1,127 +0,0 @@
# Microsoft Developer Studio Project File - Name="luafilesystem_dll" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
CFG=luafilesystem_dll - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "luafilesystem_dll.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "luafilesystem_dll.mak" CFG="luafilesystem_dll - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "luafilesystem_dll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "luafilesystem_dll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName "luafilesystem_dll"
# PROP Scc_LocalPath ".."
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "luafilesystem_dll - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "../lib/vc6"
# PROP Intermediate_Dir "luafilesystem_dll/Release"
# PROP Ignore_Export_Lib 0
# 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 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 MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x416 /d "NDEBUG"
# ADD RSC /l 0x416 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
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 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"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "../lib/vc6"
# PROP Intermediate_Dir "luafilesystem_dll/Debug"
# PROP Ignore_Export_Lib 0
# 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 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 MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x416 /d "_DEBUG"
# ADD RSC /l 0x416 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
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 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
# Begin Target
# Name "luafilesystem_dll - Win32 Release"
# Name "luafilesystem_dll - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE="..\..\compat\src\compat-5.1.c"
# End Source File
# Begin Source File
SOURCE=..\src\lfs.c
# End Source File
# Begin Source File
SOURCE=.\lfs.def
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE="..\..\compat\src\compat-5.1.h"
# End Source File
# Begin Source File
SOURCE=..\src\lfs.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project