mirror of
https://github.com/lunarmodules/luafilesystem.git
synced 2026-07-24 03:53:06 +00:00
Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ecaa0a5ae8 | ||
|
|
50cf9740a6 | ||
|
|
f3deb0e4c6 | ||
|
|
164a44cb97 | ||
|
|
0182a1f17f | ||
|
|
0aa3bf9a0a | ||
|
|
d7c2e9d153 | ||
|
|
6d2f915ee4 | ||
|
|
2a11208d8e | ||
|
|
62946f1b92 | ||
|
|
a427f48bc8 | ||
|
|
e80d17dda9 | ||
|
|
e9edc5d7a9 | ||
|
|
b80c656dfb | ||
|
|
646a17acdd | ||
|
|
8db4be836c | ||
|
|
6d548640cb | ||
|
|
a3cf6af650 | ||
|
|
51c0586f9c | ||
|
|
3bdc8f7805 | ||
|
|
41aee28e62 | ||
|
|
8774e2caae | ||
|
|
e8e69b98f5 | ||
|
|
5d40ae7548 | ||
|
|
13cfce2191 | ||
|
|
bf9b039d9c | ||
|
|
ef77b214ee | ||
|
|
f22a37da92 | ||
|
|
bb0cb1f342 | ||
|
|
2d9b354920 | ||
|
|
cab9c08749 | ||
|
|
5f942164a0 | ||
|
|
2540f6cbdb | ||
|
|
57d3fc1c31 |
27
Makefile
27
Makefile
@@ -1,34 +1,35 @@
|
|||||||
# $Id: Makefile,v 1.12 2005/01/19 14:28:58 tomas Exp $
|
# $Id: Makefile,v 1.19 2005/05/30 17:54:49 uid20006 Exp $
|
||||||
|
|
||||||
T= lfs
|
T= lfs
|
||||||
|
|
||||||
include ./config
|
include ./config
|
||||||
|
|
||||||
V= 1.0
|
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 $(LUA_LIBDIR)
|
mkdir -p $(LUA_LIBDIR)
|
||||||
cp $(LIBNAME) $(LUA_LIBDIR)
|
cp src/$(LIBNAME) $(LUA_LIBDIR)
|
||||||
ln -f -s $(LUA_LIBDIR)/$(LIBNAME) $(LUA_LIBDIR)/$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)
|
||||||
|
|||||||
13
config
13
config
@@ -1,25 +1,22 @@
|
|||||||
# Installation directories
|
# Installation directories
|
||||||
# System's libraries directory (where binary libraries are installed)
|
# System's libraries directory (where binary libraries are installed)
|
||||||
LUA_LIBDIR= /usr/local/lib/lua/5.0
|
LUA_LIBDIR= /usr/local/lib/lua/5.0
|
||||||
# System's lua directory (where Lua libraries are installed)
|
|
||||||
LUA_DIR= /usr/local/share/lua/5.0
|
|
||||||
# Lua includes directory
|
# Lua includes directory
|
||||||
LUA_INC= /usr/local/include/lua5
|
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$(LUA_INC) -I$(COMPAT_DIR)
|
INCS= -I$(LUA_INC) -I$(COMPAT_DIR)
|
||||||
LIBS= -L$(LUA_LIBDIR) -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
96
doc/us/examples.html
Normal 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>
|
||||||
@@ -1,128 +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>
|
<div id="main">
|
||||||
<a href="#over">overview</a> ·
|
|
||||||
<a href="#download">download</a> ·
|
|
||||||
<a href="manual.html">manual</a> ·
|
|
||||||
<a href="#credits">credits</a> ·
|
|
||||||
<a href="#contact">contact us</a>
|
|
||||||
</small></center>
|
|
||||||
|
|
||||||
<hr>
|
<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. 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).
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<a name="download"></a>
|
|
||||||
<h2>Download</h2>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
LuaFileSystem can be downloaded from its
|
|
||||||
<a href="http://luaforge.net/project/showfiles.php?group_id=66">Lua Forge</a>
|
|
||||||
page.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<a name="new"></a>
|
|
||||||
<h2>What's new</h2>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>[21/Jan/2005] Version 1.0 released</li>
|
|
||||||
<li>[10/Nov/2004] Version 1.0 beta released</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<a name="installation"></a>
|
|
||||||
<h2>Installation</h2>
|
|
||||||
|
|
||||||
<p>LuaFileSystem is distributed as a pair of C source and header
|
|
||||||
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é Carregal and Tomás Guisasola as part of the
|
André Carregal and Tomás Guisasola as part of the
|
||||||
<a href="http://www.keplerproject.org">Kepler Project</a>
|
<a href="http://www.keplerproject.org">Kepler Project</a>
|
||||||
which 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=
|
<p>For more information please
|
||||||
"mailto:info-NO-SPAM-THANKS@keplerproject.org">contact us</a>.
|
<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.9 2005/01/19 14:30:08 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>
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,55 @@
|
|||||||
<!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
|
||||||
@@ -20,6 +62,7 @@ LuaFileSystem is not in the public domain and the
|
|||||||
<a href="http://www.keplerproject.org">Kepler Project</a>
|
<a href="http://www.keplerproject.org">Kepler Project</a>
|
||||||
keep its copyright.
|
keep its copyright.
|
||||||
The legal details are below.
|
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.
|
||||||
@@ -31,12 +74,8 @@ somewhere in your product or its documentation.</p>
|
|||||||
Ierusalimschy, André Carregal and Tomás Guisasola.
|
Ierusalimschy, André Carregal and Tomás Guisasola.
|
||||||
The implementation is not derived from licensed software.</p>
|
The implementation is not derived from licensed software.</p>
|
||||||
|
|
||||||
<p>
|
<hr/>
|
||||||
<!-- ===================================================================== -->
|
<p>Copyright © 2004-2005 The Kepler Project.</p>
|
||||||
</p>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
Copyright © 2004-2005 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
|
||||||
@@ -58,12 +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.4 2005/01/19 14:30:08 tomas Exp $</small>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -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> · <a href=
|
<div id="product">
|
||||||
"#introduction">introduction</a> · <a href=
|
<div id="product_logo"><a href="http://www.keplerproject.org">
|
||||||
"#reference">reference</a> · <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> · <a href=
|
|
||||||
"#introduction">introduction</a> · <a href=
|
|
||||||
"#reference">reference</a> · <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>
|
||||||
|
|
||||||
|
|||||||
62
src/lfs.c
62
src/lfs.c
@@ -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.17 2005/01/19 14:28:58 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,9 +131,9 @@ 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 : return luaL_error (L, "%s: invalid mode", funcname);
|
||||||
}
|
}
|
||||||
if (!len) {
|
if (!len) {
|
||||||
@@ -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
|
||||||
@@ -370,7 +373,7 @@ static int dir_create_meta (lua_State *L) {
|
|||||||
/*
|
/*
|
||||||
** 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) {
|
||||||
@@ -394,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
|
||||||
*/
|
*/
|
||||||
@@ -451,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);
|
||||||
@@ -480,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.0");
|
lua_pushliteral (L, "1.1");
|
||||||
lua_settable (L, -3);
|
lua_settable (L, -3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -492,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},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user