mirror of
https://github.com/lunarmodules/luafilesystem.git
synced 2026-07-22 11:03:07 +00:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6c16dc4634 | ||
|
|
dff01ac3c9 | ||
|
|
cdfd06b4ea | ||
|
|
db7e8b9133 | ||
|
|
d931b9b2bb | ||
|
|
b66ab2cae9 | ||
|
|
78f28b6468 | ||
|
|
25f8aa1936 | ||
|
|
804e976407 | ||
|
|
d219de7885 | ||
|
|
ed97af80fb | ||
|
|
895e9daf27 | ||
|
|
50f17597b3 | ||
|
|
24fdbc0a66 |
17
Makefile
17
Makefile
@@ -1,7 +1,7 @@
|
||||
# $Id: Makefile,v 1.30 2007/06/07 01:28:08 tomas Exp $
|
||||
# $Id: Makefile,v 1.32 2008/02/11 22:42:21 carregal Exp $
|
||||
|
||||
T= lfs
|
||||
V= 1.3.0
|
||||
V= 1.4.0
|
||||
CONFIG= ./config
|
||||
|
||||
include $(CONFIG)
|
||||
@@ -9,15 +9,14 @@ include $(CONFIG)
|
||||
SRCS= src/$T.c
|
||||
OBJS= src/$T.o
|
||||
|
||||
lib: src/$(LIBNAME)
|
||||
lib: src/lfs.so
|
||||
|
||||
src/$(LIBNAME): $(OBJS)
|
||||
export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) $(LIB_OPTION) -o src/$(LIBNAME) $(OBJS)
|
||||
src/lfs.so: $(OBJS)
|
||||
export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) $(LIB_OPTION) -o src/lfs.so $(OBJS)
|
||||
|
||||
install: src/$(LIBNAME)
|
||||
install: src/lfs.so
|
||||
mkdir -p $(LUA_LIBDIR)
|
||||
cp src/$(LIBNAME) $(LUA_LIBDIR)
|
||||
cd $(LUA_LIBDIR); ln -f -s $(LIBNAME) $T.so
|
||||
cp src/lfs.so $(LUA_LIBDIR)
|
||||
|
||||
clean:
|
||||
rm -f src/$(LIBNAME) $(OBJS)
|
||||
rm -f src/lfs.so $(OBJS)
|
||||
|
||||
20
Makefile.win
20
Makefile.win
@@ -1,24 +1,26 @@
|
||||
# $Id: Makefile.win,v 1.5 2007/08/30 14:38:07 tomas Exp $
|
||||
# $Id: Makefile.win,v 1.10 2008/02/13 22:08:31 carregal Exp $
|
||||
|
||||
T= lfs
|
||||
V= 1.3.0
|
||||
V= 1.4.0
|
||||
|
||||
include config.win
|
||||
|
||||
SRCS= src\$T.c
|
||||
OBJS= src\$T.obj
|
||||
|
||||
lib: src\$(LIBNAME)
|
||||
lib: src\lfs.dll
|
||||
|
||||
.c.obj:
|
||||
$(CC) /c /Fo$@ $(CFLAGS) $<
|
||||
|
||||
src\$(LIBNAME): $(OBJS)
|
||||
link /dll /def:src\$T.def /out:src\$(LIBNAME) $(OBJS) $(LUA_LIB)
|
||||
src\lfs.dll: $(OBJS)
|
||||
link /dll /def:src\$T.def /out:src\lfs.dll $(OBJS) "$(LUA_LIB)"
|
||||
IF EXIST src\lfs.dll.manifest mt -manifest src\lfs.dll.manifest -outputresource:src\lfs.dll;2
|
||||
|
||||
install: src\$(LIBNAME)
|
||||
IF NOT EXIST $(LUA_LIBDIR) mkdir $(LUA_LIBDIR)
|
||||
copy src\$(LIBNAME) $(LUA_LIBDIR)
|
||||
install: src\lfs.dll
|
||||
IF NOT EXIST "$(LUA_LIBDIR)" mkdir "$(LUA_LIBDIR)"
|
||||
copy src\lfs.dll "$(LUA_LIBDIR)"
|
||||
|
||||
clean:
|
||||
del src\$(LIBNAME) $(OBJS) src\$T.lib src\$T.exp
|
||||
del src\lfs.dll $(OBJS) src\$T.lib src\$T.exp
|
||||
IF EXIST src\lfs.dll.manifest del src\lfs.dll.manifest
|
||||
8
README
8
README
@@ -1,5 +1,5 @@
|
||||
LuaFileSystem - File System Library for Lua
|
||||
Copyright 2003-2007 Kepler Project
|
||||
Copyright 2003 Kepler Project
|
||||
http://www.keplerproject.org/luafilesystem
|
||||
|
||||
Description
|
||||
@@ -10,7 +10,11 @@ related to file systems offered by the standard Lua distribution.
|
||||
LuaFileSystem offers a portable way to access the underlying directory structure and file attributes.
|
||||
LuaFileSystem is free software and uses the same license as Lua 5.1
|
||||
|
||||
Current version is 1.3.0
|
||||
Current version is 1.4.0
|
||||
|
||||
LuaRocks Installation
|
||||
---------------------
|
||||
luarocks install luafilesystem
|
||||
|
||||
Unix Installation
|
||||
-----------------
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<title>LuaFileSystem</title>
|
||||
<link rel="stylesheet" href="http://www.keplerproject.org/doc.css" type="text/css"/>
|
||||
@@ -94,7 +94,7 @@ attrdir (".")
|
||||
|
||||
<div id="about">
|
||||
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
|
||||
<p><small>$Id: examples.html,v 1.7 2007/10/26 21:44:43 carregal Exp $</small></p>
|
||||
<p><small>$Id: examples.html,v 1.8 2007/12/14 15:28:04 carregal Exp $</small></p>
|
||||
</div> <!-- id="about" -->
|
||||
|
||||
</div> <!-- id="container" -->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<title>LuaFileSystem</title>
|
||||
<link rel="stylesheet" href="http://www.keplerproject.org/doc.css" type="text/css"/>
|
||||
@@ -71,20 +71,31 @@ the underlying directory structure and file attributes.</p>
|
||||
|
||||
<h2><a name="status"></a>Status</h2>
|
||||
|
||||
<p>Current version is 1.3.0. It was developed for Lua 5.1.</p>
|
||||
<p>Current version is 1.4.0. It was developed for Lua 5.1.</p>
|
||||
|
||||
<h2><a name="download"></a>Download</h2>
|
||||
|
||||
<p>LuaFileSystem source can be downloaded from its
|
||||
<a href="http://luaforge.net/projects/luafilesystem/files">Lua Forge</a>
|
||||
page. If you are using
|
||||
<a href="http://luabinaries.luaforge.net">LuaBinaries</a> 5.1.2 a Windows binary
|
||||
version of LuaFileSystem can be found at the same LuaForge page.</p>
|
||||
<a href="http://luabinaries.luaforge.net">LuaBinaries</a> 5.1.3 a Windows binary
|
||||
version of LuaFileSystem (compiled with Visual Studio 2005 Express) can be found at the same LuaForge page.</p>
|
||||
|
||||
<h2><a name="history"></a>History</h2>
|
||||
|
||||
<dl class="history">
|
||||
<dt><strong>Version 1.3.0</strong> [26/Oct/2007]</dt>
|
||||
<dt><strong>Version 1.4.0</strong> [13/Feb/2008]</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li><a href="manual.html#attributes"><code>lfs.attributes</code></a>
|
||||
raises an error if attribute does not exist</li>
|
||||
<li>added function
|
||||
<a href="manual.html#setmode"><code>lfs.setmode</code></a>
|
||||
(works only in non Windows systems).</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
<dt><strong><a href="http://www.keplerproject.org/luafilesystem/1.3/">Version 1.3.0</a></strong> [26/Oct/2007]</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>added function
|
||||
@@ -107,14 +118,14 @@ version of LuaFileSystem can be found at the same LuaForge page.</p>
|
||||
<a href="manual.html#attributes"><code>lfs.attributes</code></a></li>
|
||||
<li>added function
|
||||
<a href="manual.html#rmdir"><code>lfs.rmdir</code></a></li>
|
||||
<li>bug correction on <code>lfs.dir</code></li>
|
||||
<li>bug correction on <a href="manual.html#dir"><code>lfs.dir</code></a></li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
<dt><strong><a href="http://www.keplerproject.org/luafilesystem/1.1/">Version 1.1</a></strong> [30/May/2005]</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
<li>added function <code>lfs.touch</code>.</li>
|
||||
<li>added function <a href="manual.html#touch"><code>lfs.touch</code></a>.</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
@@ -147,7 +158,7 @@ Comments are welcome!</p>
|
||||
|
||||
<div id="about">
|
||||
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
|
||||
<p><small>$Id: index.html,v 1.37 2007/10/26 21:44:43 carregal Exp $</small></p>
|
||||
<p><small>$Id: index.html,v 1.40 2008/02/13 21:00:10 carregal Exp $</small></p>
|
||||
</div> <!-- id="about" -->
|
||||
|
||||
</div> <!-- id="container" -->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<title>LuaFileSystem</title>
|
||||
<link rel="stylesheet" href="http://www.keplerproject.org/doc.css" type="text/css"/>
|
||||
@@ -85,7 +85,7 @@ Ierusalimschy, André Carregal and Tomás Guisasola.
|
||||
The implementation is not derived from licensed software.</p>
|
||||
|
||||
<hr/>
|
||||
<p>Copyright © 2004-2007 Kepler Project.</p>
|
||||
<p>Copyright © 2003 Kepler Project.</p>
|
||||
|
||||
<p>Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
@@ -113,7 +113,7 @@ SOFTWARE.</p>
|
||||
|
||||
<div id="about">
|
||||
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
|
||||
<p><small>$Id: license.html,v 1.11 2007/10/26 21:44:43 carregal Exp $</small></p>
|
||||
<p><small>$Id: license.html,v 1.13 2008/02/11 22:42:21 carregal Exp $</small></p>
|
||||
</div><!-- id="about" -->
|
||||
|
||||
</div><!-- id="container" -->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<title>LuaFileSystem</title>
|
||||
<link rel="stylesheet" href="http://www.keplerproject.org/doc.css" type="text/css"/>
|
||||
@@ -74,7 +74,7 @@ and header files for the target version must be installed properly.
|
||||
<p>
|
||||
LuaFileSystem offers a Makefile and a separate configuration file,
|
||||
<code>config</code>,
|
||||
which should be edited to suit your installation before runnig
|
||||
which should be edited to suit your installation before running
|
||||
<code>make</code>.
|
||||
The file has some definitions like paths to the external libraries,
|
||||
compiler options and the like.
|
||||
@@ -82,12 +82,14 @@ compiler options and the like.
|
||||
|
||||
<h2><a name="installation"></a>Installation</h2>
|
||||
|
||||
<p>The LuaFileSystem compiled binary should be copied to a directory in your
|
||||
<a href="http://www.lua.org/manual/5.1/manual.html#pdf-package.cpath">C path</a>.</p>
|
||||
<p>The easiest way to install LuaFileSystem is to use LuaRocks:</p>
|
||||
|
||||
<p>Windows users can use the binary version of LuaFileSystem
|
||||
(<code>lfs.dll</code>) available at
|
||||
<a href="http://luaforge.net/projects/luafilesystem/files">LuaForge</a>.</p>
|
||||
<pre class="example">
|
||||
luarocks install luafilesystem
|
||||
</pre>
|
||||
|
||||
<p>If you prefer to install LuaFileSystem manually, the compiled binary should be copied to a directory in your
|
||||
<a href="http://www.lua.org/manual/5.1/manual.html#pdf-package.cpath">C path</a>.</p>
|
||||
|
||||
<h2><a name="reference"></a>Reference</h2>
|
||||
|
||||
@@ -202,6 +204,12 @@ LuaFileSystem offers the following functions:
|
||||
<dd>Removes an existing directory. The argument is the name of the directory.<br />
|
||||
Returns <code>true</code> if the operation was successful;
|
||||
in case of error, it returns <code>nil</code> plus an error string.</dd>
|
||||
|
||||
<dt><a name="setmode"></a><strong><code>lfs.setmode (filepath, mode)</code></strong></dt>
|
||||
<dd>Sets the writing mode for a file. The mode string can be either <code>binary</code> or <code>text</code>.
|
||||
Returns the previous mode string for the file. This function is only available in Windows, so you may want to make sure that
|
||||
<code>lfs.setmode</code> exists before using it.
|
||||
</dd>
|
||||
|
||||
<dt><a name="symlinkattributes"></a><strong><code>lfs.symlinkattributes (filepath [, aname])</code></strong></dt>
|
||||
<dd>Identical to <a href="#attributes">lfs.attributes</a> except that
|
||||
@@ -240,7 +248,7 @@ LuaFileSystem offers the following functions:
|
||||
|
||||
<div id="about">
|
||||
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
|
||||
<p><small>$Id: manual.html,v 1.37 2007/10/26 21:44:43 carregal Exp $</small></p>
|
||||
<p><small>$Id: manual.html,v 1.40 2008/02/11 22:48:16 carregal Exp $</small></p>
|
||||
</div> <!-- id="about" -->
|
||||
|
||||
</div> <!-- id="container" -->
|
||||
|
||||
27
rockspecs/luafilesystem-1.3.0-1.rockspec
Normal file
27
rockspecs/luafilesystem-1.3.0-1.rockspec
Normal file
@@ -0,0 +1,27 @@
|
||||
package = "LuaFileSystem"
|
||||
version = "1.3.0-1"
|
||||
source = {
|
||||
url = "http://luaforge.net/frs/download.php/2679/luafilesystem-1.3.0.tar.gz"
|
||||
}
|
||||
description = {
|
||||
summary = "File System Library for the Lua Programming Language",
|
||||
detailed = [[
|
||||
LuaFileSystem is a Lua library developed to complement the set of
|
||||
functions related to file systems offered by the standard Lua
|
||||
distribution. LuaFileSystem offers a portable way to access the
|
||||
underlying directory structure and file attributes.
|
||||
]]
|
||||
}
|
||||
dependencies = {
|
||||
"lua >= 5.1"
|
||||
}
|
||||
build = {
|
||||
type = "make",
|
||||
build_variables = {
|
||||
LUA_INC = "$(LUA_INCDIR)",
|
||||
LIB_OPTION = "$(LIBFLAG)"
|
||||
},
|
||||
install_variables = {
|
||||
LUA_LIBDIR = "$(LIBDIR)"
|
||||
}
|
||||
}
|
||||
27
rockspecs/luafilesystem-1.4.0-1.rockspec
Normal file
27
rockspecs/luafilesystem-1.4.0-1.rockspec
Normal file
@@ -0,0 +1,27 @@
|
||||
package = "LuaFileSystem"
|
||||
version = "1.4.0-1"
|
||||
source = {
|
||||
url = "http://luaforge.net/frs/download.php/2679/luafilesystem-1.3.0.tar.gz"
|
||||
}
|
||||
description = {
|
||||
summary = "File System Library for the Lua Programming Language",
|
||||
detailed = [[
|
||||
LuaFileSystem is a Lua library developed to complement the set of
|
||||
functions related to file systems offered by the standard Lua
|
||||
distribution. LuaFileSystem offers a portable way to access the
|
||||
underlying directory structure and file attributes.
|
||||
]]
|
||||
}
|
||||
dependencies = {
|
||||
"lua >= 5.1"
|
||||
}
|
||||
build = {
|
||||
type = "make",
|
||||
build_variables = {
|
||||
LUA_INC = "$(LUA_INCDIR)",
|
||||
LIB_OPTION = "$(LIBFLAG)"
|
||||
},
|
||||
install_variables = {
|
||||
LUA_LIBDIR = "$(LIBDIR)"
|
||||
}
|
||||
}
|
||||
44
rockspecs/luafilesystem-cvs-1.rockspec
Normal file
44
rockspecs/luafilesystem-cvs-1.rockspec
Normal file
@@ -0,0 +1,44 @@
|
||||
package = "LuaFileSystem"
|
||||
version = "cvs-1"
|
||||
source = {
|
||||
url = "cvs://:pserver:anonymous:@cvs.luaforge.net:/cvsroot/luafilesystem",
|
||||
cvs_tag = "HEAD"
|
||||
}
|
||||
description = {
|
||||
summary = "File System Library for the Lua Programming Language",
|
||||
detailed = [[
|
||||
LuaFileSystem is a Lua library developed to complement the set of
|
||||
functions related to file systems offered by the standard Lua
|
||||
distribution. LuaFileSystem offers a portable way to access the
|
||||
underlying directory structure and file attributes.
|
||||
]]
|
||||
}
|
||||
dependencies = {
|
||||
"lua >= 5.1"
|
||||
}
|
||||
build = {
|
||||
platforms = {
|
||||
unix = {
|
||||
type = "make",
|
||||
build_variables = {
|
||||
LIB_OPTION = "$(LIBFLAG)",
|
||||
CFLAGS = "$(CFLAGS) -I$(LUA_INCDIR)",
|
||||
},
|
||||
install_variables = {
|
||||
LUA_LIBDIR = "$(LIBDIR)"
|
||||
}
|
||||
},
|
||||
win32 = {
|
||||
type = "make",
|
||||
build_variables = {
|
||||
LUA_LIB = "$(LUA_LIBDIR)\\lua5.1.lib",
|
||||
CFLAGS = "$(CFLAGS) /I$(LUA_INCDIR)",
|
||||
},
|
||||
install_variables = {
|
||||
LUA_LIBDIR = "$(LIBDIR)",
|
||||
LUA_DIR = "$(LUADIR)",
|
||||
BIN_DIR = "$(BINDIR)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
77
src/lfs.c
77
src/lfs.c
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
** LuaFileSystem
|
||||
** Copyright Kepler Project 2004-2007 (http://www.keplerproject.org/luafilesystem)
|
||||
** Copyright Kepler Project 2003 (http://www.keplerproject.org/luafilesystem)
|
||||
**
|
||||
** File system manipulation library.
|
||||
** This library offers these functions:
|
||||
@@ -11,11 +11,12 @@
|
||||
** lfs.lock (fh, mode)
|
||||
** lfs.mkdir (path)
|
||||
** lfs.rmdir (path)
|
||||
** lfs.setmode (filepath, mode)
|
||||
** lfs.symlinkattributes (filepath [, attributename]) -- thanks to Sam Roberts
|
||||
** lfs.touch (filepath [, atime [, mtime]])
|
||||
** lfs.unlock (fh)
|
||||
**
|
||||
** $Id: lfs.c,v 1.42 2007/10/26 21:01:07 carregal Exp $
|
||||
** $Id: lfs.c,v 1.47 2008/02/11 22:42:21 carregal Exp $
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
@@ -29,6 +30,7 @@
|
||||
#include <io.h>
|
||||
#include <sys/locking.h>
|
||||
#include <sys/utime.h>
|
||||
#include <fcntl.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#include <dirent.h>
|
||||
@@ -68,6 +70,15 @@ typedef struct dir_data {
|
||||
} dir_data;
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
#define lfs_setmode(L,file,m) ((void)L, _setmode(_fileno(file), m))
|
||||
#else
|
||||
#define _O_TEXT 0
|
||||
#define _O_BINARY 0
|
||||
#define lfs_setmode(L,file,m) ((void)((void)file,m), \
|
||||
luaL_error(L, LUA_QL("setmode") " not supported on non Windows platforms"), -1)
|
||||
#endif
|
||||
|
||||
/*
|
||||
** This function changes the working (current) directory
|
||||
*/
|
||||
@@ -90,16 +101,17 @@ static int change_dir (lua_State *L) {
|
||||
** and a string describing the error
|
||||
*/
|
||||
static int get_dir (lua_State *L) {
|
||||
char path[255+2];
|
||||
if (getcwd(path, 255) == NULL) {
|
||||
lua_pushnil(L);
|
||||
lua_pushstring(L, getcwd_error);
|
||||
return 2;
|
||||
}
|
||||
else {
|
||||
lua_pushstring(L, path);
|
||||
return 1;
|
||||
}
|
||||
char *path;
|
||||
if ((path = getcwd(NULL, 0)) == NULL) {
|
||||
lua_pushnil(L);
|
||||
lua_pushstring(L, getcwd_error);
|
||||
return 2;
|
||||
}
|
||||
else {
|
||||
lua_pushstring(L, path);
|
||||
free(path);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -165,6 +177,36 @@ static int _file_lock (lua_State *L, FILE *fh, const char *mode, const long star
|
||||
}
|
||||
|
||||
|
||||
static int lfs_g_setmode (lua_State *L, FILE *f, int arg) {
|
||||
static const int mode[] = {_O_TEXT, _O_BINARY};
|
||||
static const char *const modenames[] = {"text", "binary", NULL};
|
||||
int op = luaL_checkoption(L, arg, NULL, modenames);
|
||||
int res = lfs_setmode(L, f, mode[op]);
|
||||
if (res != -1) {
|
||||
int i;
|
||||
lua_pushboolean(L, 1);
|
||||
for (i = 0; modenames[i] != NULL; i++) {
|
||||
if (mode[i] == res) {
|
||||
lua_pushstring(L, modenames[i]);
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
lua_pushnil(L);
|
||||
exit:
|
||||
return 2;
|
||||
} else {
|
||||
int en = errno;
|
||||
lua_pushnil(L);
|
||||
lua_pushfstring(L, "%s", strerror(en));
|
||||
lua_pushinteger(L, en);
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
static int lfs_f_setmode(lua_State *L) {
|
||||
return lfs_g_setmode(L, check_file(L, 1, "setmode"), 2);
|
||||
}
|
||||
|
||||
/*
|
||||
** Locks a file.
|
||||
** @param #1 File handle.
|
||||
@@ -484,6 +526,9 @@ static void push_st_blksize (lua_State *L, struct stat *info) {
|
||||
lua_pushnumber (L, (lua_Number)info->st_blksize);
|
||||
}
|
||||
#endif
|
||||
static void push_invalid (lua_State *L, struct stat *info) {
|
||||
luaL_error(L, "invalid attribute name");
|
||||
}
|
||||
|
||||
typedef void (*_push_function) (lua_State *L, struct stat *info);
|
||||
|
||||
@@ -508,7 +553,7 @@ struct _stat_members members[] = {
|
||||
{ "blocks", push_st_blocks },
|
||||
{ "blksize", push_st_blksize },
|
||||
#endif
|
||||
{ NULL, NULL }
|
||||
{ NULL, push_invalid }
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -575,13 +620,13 @@ static int link_info (lua_State *L) {
|
||||
*/
|
||||
static void set_info (lua_State *L) {
|
||||
lua_pushliteral (L, "_COPYRIGHT");
|
||||
lua_pushliteral (L, "Copyright (C) 2003-2007 Kepler Project");
|
||||
lua_pushliteral (L, "Copyright (C) 2003 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, "_VERSION");
|
||||
lua_pushliteral (L, "LuaFileSystem 1.3.0");
|
||||
lua_pushliteral (L, "LuaFileSystem 1.4.0");
|
||||
lua_settable (L, -3);
|
||||
}
|
||||
|
||||
@@ -596,6 +641,8 @@ static const struct luaL_reg fslib[] = {
|
||||
{"rmdir", remove_dir},
|
||||
#ifndef _WIN32
|
||||
{"symlinkattributes", link_info},
|
||||
#else
|
||||
{"setmode", lfs_f_setmode},
|
||||
#endif
|
||||
{"touch", file_utime},
|
||||
{"unlock", file_unlock},
|
||||
|
||||
10
src/lfs.def
10
src/lfs.def
@@ -1,5 +1,5 @@
|
||||
LIBRARY lfs.dll
|
||||
DESCRIPTION "LuaFileSystem"
|
||||
VERSION 1.2.1
|
||||
EXPORTS
|
||||
luaopen_lfs
|
||||
LIBRARY lfs.dll
|
||||
DESCRIPTION "LuaFileSystem"
|
||||
VERSION 1.4.0
|
||||
EXPORTS
|
||||
luaopen_lfs
|
||||
|
||||
32
src/lfs.h
32
src/lfs.h
@@ -1,16 +1,16 @@
|
||||
/*
|
||||
** LuaFileSystem
|
||||
** Copyright Kepler Project 2004-2006 (http://www.keplerproject.org/luafilesystem)
|
||||
**
|
||||
** $Id: lfs.h,v 1.3 2006/03/10 23:37:32 carregal Exp $
|
||||
*/
|
||||
|
||||
/* Define 'chdir' for systems that do not implement it */
|
||||
#ifdef NO_CHDIR
|
||||
#define chdir(p) (-1)
|
||||
#define chdir_error "Function 'chdir' not provided by system"
|
||||
#else
|
||||
#define chdir_error strerror(errno)
|
||||
#endif
|
||||
|
||||
int luaopen_lfs (lua_State *L);
|
||||
/*
|
||||
** LuaFileSystem
|
||||
** Copyright Kepler Project 2003 (http://www.keplerproject.org/luafilesystem)
|
||||
**
|
||||
** $Id: lfs.h,v 1.4 2008/02/11 22:42:21 carregal Exp $
|
||||
*/
|
||||
|
||||
/* Define 'chdir' for systems that do not implement it */
|
||||
#ifdef NO_CHDIR
|
||||
#define chdir(p) (-1)
|
||||
#define chdir_error "Function 'chdir' not provided by system"
|
||||
#else
|
||||
#define chdir_error strerror(errno)
|
||||
#endif
|
||||
|
||||
int luaopen_lfs (lua_State *L);
|
||||
|
||||
@@ -77,6 +77,16 @@ if lfs.symlinkattributes then
|
||||
assert (os.remove"_a_link_for_test_")
|
||||
end
|
||||
|
||||
if lfs.setmode then
|
||||
-- Checking text/binary modes (works only in Windows)
|
||||
local f = io.open(tmpfile, "w")
|
||||
local mode = lfs.setmode(f, "binary")
|
||||
assert(mode == "text")
|
||||
mode = lfs.setmode(f, "text")
|
||||
assert(mode == "binary")
|
||||
f:close()
|
||||
end
|
||||
|
||||
-- Restore access time to current value
|
||||
assert (lfs.touch (tmpfile, attrib.access, attrib.modification))
|
||||
new_att = assert (lfs.attributes (tmpfile))
|
||||
|
||||
Reference in New Issue
Block a user