28 Commits
start ... v1_0b

Author SHA1 Message Date
tuler
7f726e65bb Visual Studio 6 projects. 2004-12-14 16:26:31 +00:00
carregal
949d9dc86c HTML Tidying 2004-11-22 17:39:39 +00:00
tomas
e354e5c568 Troca de <> por "". 2004-11-17 14:08:04 +00:00
tomas
b71e2bd6a3 Troca de e-mail. 2004-11-11 15:33:20 +00:00
tuler
3234fcd2da versao beta, e nao alfa 2004-11-10 15:30:00 +00:00
tuler
19fe539ed1 alterada versao no Makefile 2004-11-10 14:44:01 +00:00
tuler
819cbf6efb link para a pagina de download do LuaForge.
versão beta.
2004-11-10 14:18:45 +00:00
tuler
688efd472c alguns atributos sao especificos de Unix. 2004-11-10 14:09:45 +00:00
tomas
c9286d40fe Correcoes em valores de retorno de funcoes. 2004-11-05 10:54:28 +00:00
tomas
2bc7cbf743 Melhorias na documentacao. 2004-11-05 10:37:29 +00:00
tuler
963ec46731 ifdefs por conta de problemas de compilacao no windows. 2004-11-04 22:21:28 +00:00
tomas
ccd7be1984 Acrescimo das variaveis de informacao. 2004-11-03 10:11:18 +00:00
tomas
4d5d1e75fa Pequenas correcoes nos valores de retorno de algumas funcoes.
Acrescimo do arquivo de testes.
2004-11-01 15:27:13 +00:00
tomas
3219f4618d Correcao no valor de retorno da mkdir. 2004-11-01 08:57:56 +00:00
tomas
f66af01eec Acrescimo de exemplo.
Acrescimo do logo.
2004-10-29 16:15:59 +00:00
tomas
40db9dba61 Acrescimo do logo na distribuicao. 2004-10-27 18:40:31 +00:00
tomas
1c8215ae46 Correcao nos atributos (eliminacao de atributos exclusivos do MacOS X). 2004-10-27 18:04:50 +00:00
tomas
b4970612f7 Acrescimo da funcao attributes. 2004-10-27 18:01:42 +00:00
tomas
0cc45c2881 Correcao nos campos de alteracao, modificacao e acesso do arquivo. 2004-10-27 18:01:01 +00:00
tomas
436e50c96a Troca dos links de download para o LuaForge. 2004-10-27 16:20:24 +00:00
tomas
7049b69af1 Pequenas melhorias na documentacao.
Implementacao da funcao `attributes' que recupera informacoes sobre os arquivos.
2004-10-23 22:33:11 +00:00
tomas
b191446532 Pequenas melhorias no processo de compilacao. 2004-10-15 10:45:18 +00:00
tomas
8ffae1be28 Pequena melhoria para achar os arquivos compat-5.1. 2004-10-15 10:07:53 +00:00
tomas
39fba7df43 Atualizando o esquema de compilacao para o uso da compat-5.1. 2004-10-15 10:04:15 +00:00
tomas
a6c8ca7123 Adaptacao `a nova funcao luaL_openlib (luaL_module). 2004-10-14 11:13:29 +00:00
tomas
8382ef4362 Atualizando o codigo para a nova proposta de pacotes. 2004-09-29 17:46:24 +00:00
tomas
c899c9b2e2 Regra que cria a distribuicao (Makefile).
Troca de nome da biblioteca (lfs).
2004-07-29 16:47:11 +00:00
tomas
70052678b1 Substituicao nos nomes dos arquivos. 2004-07-29 14:26:33 +00:00
15 changed files with 718 additions and 359 deletions

View File

@@ -1,35 +1,40 @@
# $Id: Makefile,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $
# $Id: Makefile,v 1.9 2004/11/10 14:44:01 tuler Exp $
T= luafilesystem
T= lfs
include ./config
V= 1.0a
V= 1.0b
DIST_DIR= luafilesystem-$V
TAR_FILE= $(DIST_DIR).tar.gz
ZIP_FILE= $(DIST_DIR).zip
LIBNAME= lib$T.$V$(LIB_EXT)
L= $T.lua
TL= t_$T.lua
SRCS= $T.c
OBJS= $T.o
OBJS= $T.o compat-5.1.o
lib: $(LIBNAME)
$(LIBNAME): $(OBJS) $(TL)
$(LIBNAME): $(OBJS)
$(CC) $(CFLAGS) $(LIB_OPTION) -o $(LIBNAME) $(OBJS) $(LIBS)
sed -e "s|LIB_NAME|$(LIB_DIR)/$(LIBNAME)|" $(TL) > $L
$(LUA_DIR)/$L: $L
mkdir -p $(LUA_DIR)
cp $L $(LUA_DIR)
compat-5.1.o: $(COMPAT_DIR)/compat-5.1.c
$(CC) -c $(CFLAGS) -o $@ $(COMPAT_DIR)/compat-5.1.c
install: $(LUA_DIR)/$L $(LIBNAME)
install: $(LIBNAME)
mkdir -p $(LIB_DIR)
cp $(LIBNAME) $(LIB_DIR)
ln -f -s $(LIB_DIR)/$(LIBNAME) $(LIB_DIR)/$T$(LIB_EXT)
clean:
rm -f $L $(LIBNAME) $(OBJS)
dist:
dist: dist_dir
tar -czf $(TAR_FILE) $(DIST_DIR)
zip -rq $(ZIP_FILE) $(DIST_DIR)/*
rm -rf $(DIST_DIR)
dist_dir:
mkdir -p $(DIST_DIR)
cp config $(SRCS) $T.h $(TL) Makefile $(DIST_DIR)
cp config $(SRCS) $T.h $T.def Makefile *html luafilesystem.png $(DIST_DIR)

8
config
View File

@@ -1,6 +1,7 @@
# Installation directories
# System's libraries directory (where Lua libraries are installed)
# System's libraries directory (where binary libraries are installed)
LIB_DIR= /usr/local/lib
# System's lua directory (where Lua libraries are installed)
LUA_DIR= /usr/local/lua
# OS dependent
@@ -9,12 +10,13 @@ LIB_EXT= .dylib
LIB_OPTION= -dynamiclib #for MacOS X
#LIB_OPTION= -shared #for Linux
COMPAT_DIR= .
# Compilation directives
# pre-compile and include mod2.lua into mod_lua.c
# On FreeBSD systems, the following line should be commented
DLLIB= -ldl
WARN= -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings
INCS= -I/usr/local/include/lua5
INCS= -I/usr/local/include/lua5 -I$(COMPAT_DIR)
LIBS= -L$(LIB_DIR) -llua -llualib -lm $(DLLIB)
CFLAGS= $(WARN) $(INCS)
CC= gcc

View File

@@ -1,114 +1,122 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<title>LuaFileSystem</title>
<style type="text/css">
ul { list-style-type: disc };
</style>
</head>
<body bgcolor="#FFFFFF">
<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>
<tr><td align=center><big><b>LuaFileSystem</b></big>
<tr><td align=center valign=top>File system library for the
<a href="http://www.lua.org">Lua</a>
programming language
<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>
<td align="center"><big><b>LuaFileSystem</b></big> </td>
</tr>
<tr>
<td align="center" valign="top">File System Library for the <a
href="http://www.lua.org">Lua</a> Programming Language</td>
</tr>
</table>
</center>
<p>
<center><small>
<a href="#over">overview</a> &middot;
<a href="#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>
<p>
<center><small><a href="#over">overview</a> &middot; <a href=
"#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>
<h2>Contents</h2>
<p>
<ul>
<li> <a href="#over">Overview</a>
<li> <a href="#version">Current Version</a>
<li> <a href="#download">Download</a>
<li> <a href="#manual">Manual</a>
<li> <a href="#credits">Credits</a>
<li> <a href="#contact">Contact us</a>
<li><a href="#over">Overview</a></li>
<li><a href="#version">Current Version</a></li>
<li><a href="#download">Download</a></li>
<li><a href="#manual">Manual</a></li>
<li><a href="#credits">Credits</a></li>
<li><a href="#contact">Contact us</a></li>
</ul>
<a name="over"></a>
<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.
<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>
<p>LuaFileSystem is free software and uses the same <a href=
"license.html">license</a> as Lua 5.0. <a name="version"></a></p>
<a name="version"></a>
<h2>Current version</h2>
<p>
Current version is 1.0 alpha.
It was developed for Lua 5.0.
</p>
<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>
<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>
<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>
<a name="new"></a>
<h2>What's new</h2>
<p>
<ul>
<li>[2/Aug/2004] Version 1.0 alpha released
<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>
<a name="credits"></a>
<h2>Credits</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>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>
<a name="contact"></a>
<a name="contact"></a>
<h2>Contact us</h2>
<p>
For more information please
<a href="mailto:tomas-NO-SPAM-THANKS@keplerproject.org">contact us</a>.
Comments are welcome!
</p>
<p>For more information please <a href=
"mailto:info-NO-SPAM-THANKS@keplerproject.org">contact us</a>.
Comments are welcome!</p>
<p>
<hr>
<small>
$Id: index.html,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $
</small>
<small>$Id: index.html,v 1.6 2004/11/11 15:33:20 tomas Exp
$</small>
</body>
</html>

View File

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

BIN
doc/us/luafilesystem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@@ -1,144 +1,197 @@
<! See Copyright Notice in license.html>
<html>
<head>
<title>LuaFileSystem</title>
<style type="text/css">
ul { list-style-type: disc };
</style>
</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>
<tr><td align=center><big><b>LuaFileSystem Reference Manual</b></big>
<tr><td align=center valign=top>File system library for the
<a href="http://www.lua.org">Lua</a>
programming language
</table>
</center>
<p>
<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>
<p>
<hr>
<a name="introduction"></a>
<h2>Introduction</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>
LuaFileSystem is free software and uses the same
<a href="license.html">license</a>
as Lua 5.0.
</p>
<a name="reference"></a>
<h2>Reference</h2>
<p>
LuaFileSystem offers the following functions:
<ul>
<a name="chdir"></a>
<li> <b><tt>luafilesystem.chdir (path)</tt></b> <br>
Changes the current
working directory to the given <tt>path</tt>.
<a name="getcwd"></a>
<li> <b><tt>luafilesystem.currentdir ()</tt></b> <br>
Returns the current
working directory or <code>nil</code> plus an error string.
<a name="dir"></a>
<li> <b><tt>luafilesystem.dir (path)</tt></b> <br>
Lua iterator over the entries
of a given directory.
<a name="lock"></a>
<li> <b><tt>luafilesystem.lock (filehandle, mode[, start[, length]])</tt></b> <br>
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.
This function returns a boolean indicating if the operation was successful;
in case of error, it returns <code>false</code> plus a string describing the
error.
<a name="mkdir"></a>
<li> <b><tt>luafilesystem.mkdir (dirname)</tt></b> <br>
Creates a new directory.
The argument is the name of the new directory.
<a name="unlock"></a>
<li> <b><tt>luafilesystem.unlock (filehandle[, start[, length]])</tt></b> <br>
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.
This function returns a boolean indicating if the operation was successful;
in case of error, it returns <code>false</code> plus a string describing the
error.
</ul>
<a name="example"></a>
<h2>Example</h2>
<a name="contents"></a>
<h2>Contents</h2>
<p>
<ul>
<li> <a href="#introduction">Introduction</a>
<li> <a href="#reference">Reference</a>
<ul>
<li> <a href="#chdir">chdir</a>
<li> <a href="#currentdir">currentdir</a>
<li> <a href="#dir">dir</a>
<li> <a href="#lock">lock</a>
<li> <a href="#mkdir">mkdir</a>
<li> <a href="#unlock">unlock</a>
</ul>
<li> <a href="#examples">Examples</a>
</ul>
</p>
<p>
<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>
<p>
<hr>
<small>
$Id: manual.html,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $
</small>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<title>LuaFileSystem</title>
<style type="text/css">
ul { list-style-type: disc };
</style>
</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>
<td align="center"><big><b>LuaFileSystem Reference Manual</b></big>
</td>
</tr>
<tr>
<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=
"#introduction">introduction</a> &middot; <a href=
"#reference">reference</a> &middot; <a href=
"#example">example</a></small></center>
<hr>
<a name="introduction"></a>
<h2>Introduction</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 is free software and uses the same <a href=
"license.html">license</a> as Lua 5.0.</p>
<a name="reference"></a>
<h2>Reference</h2>
<p>LuaFileSystem offers the following functions:</p>
<ul>
<li style="list-style: none"><a name="attributes"></a></li>
<li><b><tt>lfs.attributes (filepath)</tt></b><br>
Obtains the file attributes. The attributes are:
<div style="margin-left: 2em"><i>dev</i>, device inode resides
on;<br>
<i>ino</i>, inode's number;<br>
<i>mode</i>, inode protection mode (<small>values could be
<tt>file</tt>, <tt>directory</tt>, <tt>link</tt>, <tt>socket</tt>,
<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=
"chdir"></a></li>
<li><b><tt>lfs.chdir (path)</tt></b><br>
Changes the current working directory to the given
<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>
Returns a string with the current working directory or
<code>nil</code> plus an error string. <a name="dir"></a></li>
<li><b><tt>lfs.dir (path)</tt></b><br>
Lua iterator over the entries of a given directory. Raises an
error if <tt>path</tt> is not a directory. <a name="lock"></a></li>
<li><b><tt>lfs.lock (filehandle, mode[, start[,
length]])</tt></b><br>
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>
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). <a name=
"unlock"></a></li>
<li><b><tt>lfs.unlock (filehandle[, start[, length]])</tt></b><br>
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.</li>
</ul>
<a name="example"></a>
<h2>Example</h2>
<pre>
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>
<a name="contents"></a>
<h2>Contents</h2>
<ul>
<li><a href="#introduction">Introduction</a></li>
<li><a href="#reference">Reference</a>
<ul>
<li><a href="#chdir">chdir</a></li>
<li><a href="#currentdir">currentdir</a></li>
<li><a href="#dir">dir</a></li>
<li><a href="#lock">lock</a></li>
<li><a href="#mkdir">mkdir</a></li>
<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>
</html>

View File

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

View File

@@ -1,21 +1,22 @@
/*
** File system manipulation library.
** This library offers these functions:
** luafilesystem.attributes (filepath [, attributename])
** luafilesystem.chdir (path)
** luafilesystem.currentdir ()
** luafilesystem.dir (path)
** luafilesystem.mkdir (path)
** luafilesystem.lock (fh, mode)
** luafilesystem.unlock (fh)
** lfs.attributes (filepath [, attributename])
** lfs.chdir (path)
** lfs.currentdir ()
** lfs.dir (path)
** lfs.mkdir (path)
** lfs.lock (fh, mode)
** lfs.unlock (fh)
**
** $Id: luafilesystem.c,v 1.1.1.1 2004/07/27 14:15:24 tomas Exp $
** $Id: lfs.c,v 1.14 2004/11/17 14:08:04 tomas Exp $
*/
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <sys/stat.h>
#ifdef WIN32
#include <direct.h>
@@ -26,14 +27,14 @@
#include <dirent.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#endif
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
#include "compat-5.1.h"
#include "luafilesystem.h"
#include "lfs.h"
/* Define 'strerror' for systems that do not implement it */
#ifdef NO_STRERROR
@@ -63,10 +64,15 @@ typedef struct dir_data {
*/
static int change_dir (lua_State *L) {
const char *path = luaL_checkstring(L, 1);
if (chdir(path))
luaL_error(L,"Unable to change working directory to '%s'\n%s\n",
if (chdir(path)) {
lua_pushnil (L);
lua_pushfstring (L,"Unable to change working directory to '%s'\n%s\n",
path, chdir_error);
return 0;
return 2;
} else {
lua_pushboolean (L, 1);
return 1;
}
}
/*
@@ -232,7 +238,11 @@ static int make_dir (lua_State *L) {
fail = mkdir (path, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP |
S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH );
#endif
lua_pushboolean (L, fail);
lua_pushboolean (L, !fail);
if (fail) {
lua_pushfstring (L, "%s", strerror(errno));
return 2;
}
umask (oldmask);
return 1;
}
@@ -334,7 +344,135 @@ static int dir_create_meta (lua_State *L) {
}
#ifdef _WIN32
#define S_ISDIR(mode) (mode&_S_IFDIR)
#define S_ISREG(mode) (mode&_S_IFREG)
#define S_ISLNK(mode) (0)
#define S_ISSOCK(mode) (0)
#define S_ISFIFO(mode) (0)
#define S_ISCHR(mode) (mode&_S_IFCHR)
#define S_ISBLK(mode) (0)
#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";
}
/*
** 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 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.0b");
lua_settable (L, -3);
}
static const struct luaL_reg fslib[] = {
{"attributes", file_info},
{"chdir", change_dir},
{"currentdir", get_dir},
{"dir", dir_iter_factory},
@@ -344,8 +482,9 @@ static const struct luaL_reg fslib[] = {
{NULL, NULL},
};
int luaopen_luafilesystem (lua_State *L) {
int luaopen_lfs (lua_State *L) {
dir_create_meta (L);
luaL_openlib (L, "luafilesystem", fslib, 0);
luaL_openlib (L, "lfs", fslib, 0);
set_info (L);
return 1;
}

View File

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

View File

@@ -1,8 +0,0 @@
-- $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

View File

@@ -1,26 +0,0 @@
#!/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

40
tests/test.lua Normal file
View File

@@ -0,0 +1,40 @@
#!/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
assert (lfs.mkdir (tmp.."/lfs_tmp_dir"), "could not make a new directory")
assert (os.remove (tmp.."/lfs_tmp_dir"), "could not remove new directory")
assert (lfs.mkdir (tmp.."/lfs_tmp_dir/lfs_tmp_dir") == false, "could create a directory inside a non-existent one")
--
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")

5
vc6/lfs.def Normal file
View File

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

33
vc6/luafilesystem.dsw Normal file
View File

@@ -0,0 +1,33 @@
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>
{{{
}}}
###############################################################################

123
vc6/luafilesystem_dll.dsp Normal file
View File

@@ -0,0 +1,123 @@
# 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 "../../lua/include" /I "../../compat" /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 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"
!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 "../../lua/include" /I "../../compat" /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 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"
!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\compat-5.1.c"
# End Source File
# Begin Source File
SOURCE=..\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\compat-5.1.h"
# End Source File
# Begin Source File
SOURCE=..\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