mirror of
https://github.com/lunarmodules/luafilesystem.git
synced 2026-07-24 03:53:06 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2afb826d96 | ||
|
|
00be93ab51 | ||
|
|
0147f85957 | ||
|
|
d5c95fbf86 |
4
Makefile
4
Makefile
@@ -1,7 +1,7 @@
|
|||||||
# $Id: Makefile,v 1.30 2007/06/07 01:28:08 tomas Exp $
|
# $Id: Makefile,v 1.26.2.1 2007/05/08 21:35:11 carregal Exp $
|
||||||
|
|
||||||
T= lfs
|
T= lfs
|
||||||
V= 1.3.0
|
V= 1.2.1
|
||||||
CONFIG= ./config
|
CONFIG= ./config
|
||||||
|
|
||||||
include $(CONFIG)
|
include $(CONFIG)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# $Id: Makefile.win,v 1.5 2007/08/30 14:38:07 tomas Exp $
|
# $Id: Makefile.win,v 1.4.2.1 2007/05/08 21:35:11 carregal Exp $
|
||||||
|
|
||||||
T= lfs
|
T= lfs
|
||||||
V= 1.3.0
|
V= 1.2.1
|
||||||
|
|
||||||
include config.win
|
include config.win
|
||||||
|
|
||||||
|
|||||||
20
README
20
README
@@ -1,19 +1,9 @@
|
|||||||
LuaFileSystem - File System Library for Lua
|
LuaFileSystem - File System Library for Lua
|
||||||
Copyright 2003-2007 Kepler Project
|
Copyright 2003-2007 PUC-Rio
|
||||||
http://www.keplerproject.org/luafilesystem
|
http://www.keplerproject.org/luafilesystem
|
||||||
|
|
||||||
Description
|
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. LuaFileSystem is free software and uses the same license as Lua 5.1 Current version is 1.2.1.
|
||||||
-----------
|
|
||||||
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.
|
|
||||||
LuaFileSystem is free software and uses the same license as Lua 5.1
|
|
||||||
|
|
||||||
Current version is 1.3.0
|
|
||||||
|
|
||||||
Unix Installation
|
|
||||||
-----------------
|
|
||||||
To install on Linux/OSX/BSD, please edit the config file and then call
|
To install on Linux/OSX/BSD, please edit the config file and then call
|
||||||
|
|
||||||
make
|
make
|
||||||
@@ -21,10 +11,4 @@ make install
|
|||||||
|
|
||||||
The last step may require root privileges.
|
The last step may require root privileges.
|
||||||
|
|
||||||
Windows Installation
|
|
||||||
--------------------
|
|
||||||
To install on Windows, please copy lfs.ddl to your package.cpath directory
|
|
||||||
|
|
||||||
Documentation
|
|
||||||
-------------
|
|
||||||
Please check the documentation at /doc/us/ for more information.
|
Please check the documentation at /doc/us/ for more information.
|
||||||
13
config
13
config
@@ -1,13 +1,8 @@
|
|||||||
# Installation directories
|
# Installation directories
|
||||||
|
|
||||||
# Default installation prefix
|
|
||||||
PREFIX=/usr/local
|
|
||||||
|
|
||||||
# System's libraries directory (where binary libraries are installed)
|
# System's libraries directory (where binary libraries are installed)
|
||||||
LUA_LIBDIR= $(PREFIX)/lib/lua/5.1
|
LUA_LIBDIR= /usr/local/lib/lua/5.1
|
||||||
|
|
||||||
# Lua includes directory
|
# Lua includes directory
|
||||||
LUA_INC= $(PREFIX)/include
|
LUA_INC= /usr/local/include/lua51
|
||||||
|
|
||||||
# OS dependent
|
# OS dependent
|
||||||
LIB_OPTION= -shared #for Linux
|
LIB_OPTION= -shared #for Linux
|
||||||
@@ -16,9 +11,9 @@ LIB_OPTION= -shared #for Linux
|
|||||||
LIBNAME= $T.so.$V
|
LIBNAME= $T.so.$V
|
||||||
|
|
||||||
# Compilation directives
|
# Compilation directives
|
||||||
WARN= -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings -pedantic
|
WARN= -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings
|
||||||
INCS= -I$(LUA_INC)
|
INCS= -I$(LUA_INC)
|
||||||
CFLAGS= $(WARN) $(INCS)
|
CFLAGS= $(WARN) $(INCS)
|
||||||
CC= gcc
|
CC= gcc
|
||||||
|
|
||||||
# $Id: config,v 1.21 2007/10/27 22:42:32 carregal Exp $
|
# $Id: config,v 1.14.2.1 2007/05/08 21:35:10 carregal Exp $
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# Installation directories
|
# Installation directories
|
||||||
# System's libraries directory (where binary libraries are installed)
|
# System's libraries directory (where binary libraries are installed)
|
||||||
LUA_LIBDIR= c:\lua5.1
|
LUA_LIBDIR= c:\lua5.1\lib
|
||||||
# Lua includes directory
|
# Lua includes directory
|
||||||
LUA_INC= c:\lua5.1\include
|
LUA_INC= c:\lua5.1\include
|
||||||
# Lua library
|
# Lua library
|
||||||
LUA_LIB= c:\lua5.1\lua5.1.lib
|
LUA_LIB= c:\lua5.1\bin\lua5.1.lib
|
||||||
|
|
||||||
LIBNAME= $T.dll
|
LIBNAME= $T.dll
|
||||||
|
|
||||||
@@ -14,4 +14,4 @@ INCS= /I$(LUA_INC)
|
|||||||
CFLAGS= $(WARN) $(INCS)
|
CFLAGS= $(WARN) $(INCS)
|
||||||
CC= cl
|
CC= cl
|
||||||
|
|
||||||
# $Id: config.win,v 1.4 2007/05/18 19:52:59 carregal Exp $
|
# $Id: config.win,v 1.3.2.1 2007/05/08 21:35:10 carregal Exp $
|
||||||
|
|||||||
@@ -93,8 +93,9 @@ attrdir (".")
|
|||||||
</div> <!-- id="main" -->
|
</div> <!-- id="main" -->
|
||||||
|
|
||||||
<div id="about">
|
<div id="about">
|
||||||
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
|
<p><a href="http://validator.w3.org/check?uri=referer">
|
||||||
<p><small>$Id: examples.html,v 1.7 2007/10/26 21:44:43 carregal Exp $</small></p>
|
<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.5.2.1 2007/05/08 21:35:11 carregal Exp $</small></p>
|
||||||
</div> <!-- id="about" -->
|
</div> <!-- id="about" -->
|
||||||
|
|
||||||
</div> <!-- id="container" -->
|
</div> <!-- id="container" -->
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ the underlying directory structure and file attributes.</p>
|
|||||||
|
|
||||||
<h2><a name="status"></a>Status</h2>
|
<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.2.1. It was developed for Lua 5.1.</p>
|
||||||
|
|
||||||
<h2><a name="download"></a>Download</h2>
|
<h2><a name="download"></a>Download</h2>
|
||||||
|
|
||||||
@@ -84,23 +84,14 @@ version of LuaFileSystem can be found at the same LuaForge page.</p>
|
|||||||
<h2><a name="history"></a>History</h2>
|
<h2><a name="history"></a>History</h2>
|
||||||
|
|
||||||
<dl class="history">
|
<dl class="history">
|
||||||
<dt><strong>Version 1.3.0</strong> [26/Oct/2007]</dt>
|
<dt><strong>Version 1.2.1</strong> [08/May/2007]</dt>
|
||||||
<dd>
|
|
||||||
<ul>
|
|
||||||
<li>added function
|
|
||||||
<a href="manual.html#symlinkattributes"><code>lfs.symlinkattributes</code></a>
|
|
||||||
(works only in non Windows systems).</li>
|
|
||||||
</ul>
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dt><strong><a href="http://www.keplerproject.org/luafilesystem/1.2/">Version 1.2.1</a></strong> [08/May/2007]</dt>
|
|
||||||
<dd>
|
<dd>
|
||||||
<ul>
|
<ul>
|
||||||
<li>compatible only with Lua 5.1 (Lua 5.0 support was dropped)</li>
|
<li>compatible only with Lua 5.1 (Lua 5.0 support was dropped)</li>
|
||||||
</ul>
|
</ul>
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dt><strong><a href="http://www.keplerproject.org/luafilesystem/1.2/">Version 1.2</a></strong> [15/Mar/2006]</dt>
|
<dt><strong>Version 1.2</strong> [15/Mar/2006]</dt>
|
||||||
<dd>
|
<dd>
|
||||||
<ul>
|
<ul>
|
||||||
<li>added optional argument to
|
<li>added optional argument to
|
||||||
@@ -146,8 +137,9 @@ Comments are welcome!</p>
|
|||||||
</div> <!-- id="main" -->
|
</div> <!-- id="main" -->
|
||||||
|
|
||||||
<div id="about">
|
<div id="about">
|
||||||
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
|
<p><a href="http://validator.w3.org/check?uri=referer">
|
||||||
<p><small>$Id: index.html,v 1.37 2007/10/26 21:44:43 carregal Exp $</small></p>
|
<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.30.2.1 2007/05/08 21:35:11 carregal Exp $</small></p>
|
||||||
</div> <!-- id="about" -->
|
</div> <!-- id="about" -->
|
||||||
|
|
||||||
</div> <!-- id="container" -->
|
</div> <!-- id="container" -->
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ 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>
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
<p>Copyright © 2004-2007 Kepler Project.</p>
|
<p>Copyright © 2004-2007 The Kepler Project.</p>
|
||||||
|
|
||||||
<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
|
||||||
@@ -112,8 +112,9 @@ SOFTWARE.</p>
|
|||||||
</div> <!-- id="main" -->
|
</div> <!-- id="main" -->
|
||||||
|
|
||||||
<div id="about">
|
<div id="about">
|
||||||
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
|
<p><a href="http://validator.w3.org/check?uri=referer">
|
||||||
<p><small>$Id: license.html,v 1.11 2007/10/26 21:44:43 carregal Exp $</small></p>
|
<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.9.2.1 2007/05/08 21:35:11 carregal Exp $</small></p>
|
||||||
</div><!-- id="about" -->
|
</div><!-- id="about" -->
|
||||||
|
|
||||||
</div><!-- id="container" -->
|
</div><!-- id="container" -->
|
||||||
|
|||||||
@@ -153,12 +153,6 @@ LuaFileSystem offers the following functions:
|
|||||||
<dt><strong><code>blksize</code></strong></dt>
|
<dt><strong><code>blksize</code></strong></dt>
|
||||||
<dd>optimal file system I/O blocksize; (Unix only)</dd>
|
<dd>optimal file system I/O blocksize; (Unix only)</dd>
|
||||||
</dl>
|
</dl>
|
||||||
This function uses <code>stat</code> internally thus if the given
|
|
||||||
<code>filepath</code> is a symbolic link, it is followed (if it points to
|
|
||||||
another link the chain is followed recursively) and the information
|
|
||||||
is about the file it refers to.
|
|
||||||
To obtain information about the link itself, see function
|
|
||||||
<a href="#symlinkattributes">lfs.symlinkattributes</a>.
|
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dt><a name="chdir"></a><strong><code>lfs.chdir (path)</code></strong></dt>
|
<dt><a name="chdir"></a><strong><code>lfs.chdir (path)</code></strong></dt>
|
||||||
@@ -203,20 +197,13 @@ LuaFileSystem offers the following functions:
|
|||||||
Returns <code>true</code> if the operation was successful;
|
Returns <code>true</code> if the operation was successful;
|
||||||
in case of error, it returns <code>nil</code> plus an error string.</dd>
|
in case of error, it returns <code>nil</code> plus an error string.</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
|
|
||||||
it obtains information about the link itself (not the file it refers to).
|
|
||||||
This function is not available in Windows so you may want to make sure that
|
|
||||||
<code>lfs.symlinkattributes</code> exists before using it.
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dt><a name="touch"></a><strong><code>lfs.touch (filepath [, atime [, mtime]])</code></strong></dt>
|
<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
|
<dd>Set access and modification times of a file. This function is
|
||||||
a bind to <code>utime</code> function. The first argument is the
|
a bind to <code>utime</code> function. The first argument is the
|
||||||
filename, the second argument (<code>atime</code>) is the access time,
|
filename, the second argument (<code>atime</code>) is the access time,
|
||||||
and the third argument (<code>mtime</code>) is the modification time.
|
and the third argument (<code>mtime</code>) is the modification time.
|
||||||
Both times are provided in seconds (which should be generated with
|
Both times are provided in seconds (which should be generated with
|
||||||
Lua standard function <code>os.time</code>).
|
Lua standard function <code>os.date</code>).
|
||||||
If the modification time is omitted, the access time provided is used;
|
If the modification time is omitted, the access time provided is used;
|
||||||
if both times are omitted, the current time is used.<br />
|
if both times are omitted, the current time is used.<br />
|
||||||
Returns <code>true</code> if the operation was successful;
|
Returns <code>true</code> if the operation was successful;
|
||||||
@@ -239,8 +226,9 @@ LuaFileSystem offers the following functions:
|
|||||||
</div> <!-- id="main" -->
|
</div> <!-- id="main" -->
|
||||||
|
|
||||||
<div id="about">
|
<div id="about">
|
||||||
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
|
<p><a href="http://validator.w3.org/check?uri=referer">
|
||||||
<p><small>$Id: manual.html,v 1.37 2007/10/26 21:44:43 carregal Exp $</small></p>
|
<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.30.2.2 2007/05/08 21:35:11 carregal Exp $</small></p>
|
||||||
</div> <!-- id="about" -->
|
</div> <!-- id="about" -->
|
||||||
|
|
||||||
</div> <!-- id="container" -->
|
</div> <!-- id="container" -->
|
||||||
|
|||||||
40
src/lfs.c
40
src/lfs.c
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** LuaFileSystem
|
** LuaFileSystem
|
||||||
** Copyright Kepler Project 2004-2007 (http://www.keplerproject.org/luafilesystem)
|
** Copyright Kepler Project 2004-2006 (http://www.keplerproject.org/luafilesystem)
|
||||||
**
|
**
|
||||||
** File system manipulation library.
|
** File system manipulation library.
|
||||||
** This library offers these functions:
|
** This library offers these functions:
|
||||||
@@ -11,11 +11,10 @@
|
|||||||
** lfs.lock (fh, mode)
|
** lfs.lock (fh, mode)
|
||||||
** lfs.mkdir (path)
|
** lfs.mkdir (path)
|
||||||
** lfs.rmdir (path)
|
** lfs.rmdir (path)
|
||||||
** lfs.symlinkattributes (filepath [, attributename]) -- thanks to Sam Roberts
|
|
||||||
** lfs.touch (filepath [, atime [, mtime]])
|
** lfs.touch (filepath [, atime [, mtime]])
|
||||||
** lfs.unlock (fh)
|
** lfs.unlock (fh)
|
||||||
**
|
**
|
||||||
** $Id: lfs.c,v 1.42 2007/10/26 21:01:07 carregal Exp $
|
** $Id: lfs.c,v 1.32.2.1 2007/05/08 21:35:10 carregal Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
@@ -255,8 +254,6 @@ static int remove_dir (lua_State *L) {
|
|||||||
static int dir_iter (lua_State *L) {
|
static int dir_iter (lua_State *L) {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
struct _finddata_t c_file;
|
struct _finddata_t c_file;
|
||||||
#else
|
|
||||||
struct dirent *entry;
|
|
||||||
#endif
|
#endif
|
||||||
dir_data *d = (dir_data *)lua_touserdata (L, lua_upvalueindex (1));
|
dir_data *d = (dir_data *)lua_touserdata (L, lua_upvalueindex (1));
|
||||||
luaL_argcheck (L, !d->closed, 1, "closed directory");
|
luaL_argcheck (L, !d->closed, 1, "closed directory");
|
||||||
@@ -282,6 +279,7 @@ static int dir_iter (lua_State *L) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
struct dirent *entry;
|
||||||
if ((entry = readdir (d->dir)) != NULL) {
|
if ((entry = readdir (d->dir)) != NULL) {
|
||||||
lua_pushstring (L, entry->d_name);
|
lua_pushstring (L, entry->d_name);
|
||||||
return 1;
|
return 1;
|
||||||
@@ -512,14 +510,14 @@ struct _stat_members members[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Get file or symbolic link information
|
** Get file information
|
||||||
*/
|
*/
|
||||||
static int _file_info_ (lua_State *L, int (*st)(const char*, struct stat*)) {
|
static int file_info (lua_State *L) {
|
||||||
int i;
|
int i;
|
||||||
struct stat info;
|
struct stat info;
|
||||||
const char *file = luaL_checkstring (L, 1);
|
const char *file = luaL_checkstring (L, 1);
|
||||||
|
|
||||||
if (st(file, &info)) {
|
if (stat(file, &info)) {
|
||||||
lua_pushnil (L);
|
lua_pushnil (L);
|
||||||
lua_pushfstring (L, "cannot obtain information from file `%s'", file);
|
lua_pushfstring (L, "cannot obtain information from file `%s'", file);
|
||||||
return 2;
|
return 2;
|
||||||
@@ -529,7 +527,6 @@ static int _file_info_ (lua_State *L, int (*st)(const char*, struct stat*)) {
|
|||||||
const char *member = lua_tostring (L, 2);
|
const char *member = lua_tostring (L, 2);
|
||||||
if (strcmp (member, "mode") == 0) v = 0;
|
if (strcmp (member, "mode") == 0) v = 0;
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
else if (strcmp (member, "blocks") == 0) v = 11;
|
|
||||||
else if (strcmp (member, "blksize") == 0) v = 12;
|
else if (strcmp (member, "blksize") == 0) v = 12;
|
||||||
#endif
|
#endif
|
||||||
else /* look for member */
|
else /* look for member */
|
||||||
@@ -552,24 +549,6 @@ static int _file_info_ (lua_State *L, int (*st)(const char*, struct stat*)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Get file information using stat.
|
|
||||||
*/
|
|
||||||
static int file_info (lua_State *L) {
|
|
||||||
return _file_info_ (L, stat);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Get symbolic link information using lstat.
|
|
||||||
*/
|
|
||||||
#ifndef _WIN32
|
|
||||||
static int link_info (lua_State *L) {
|
|
||||||
return _file_info_ (L, lstat);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Assumes the table is on top of the stack.
|
** Assumes the table is on top of the stack.
|
||||||
*/
|
*/
|
||||||
@@ -581,7 +560,7 @@ static void set_info (lua_State *L) {
|
|||||||
lua_pushliteral (L, "LuaFileSystem is a Lua library developed to complement the set of functions related to file systems offered by the standard Lua distribution");
|
lua_pushliteral (L, "LuaFileSystem is a Lua library developed to complement the set of functions related to file systems offered by the standard Lua distribution");
|
||||||
lua_settable (L, -3);
|
lua_settable (L, -3);
|
||||||
lua_pushliteral (L, "_VERSION");
|
lua_pushliteral (L, "_VERSION");
|
||||||
lua_pushliteral (L, "LuaFileSystem 1.3.0");
|
lua_pushliteral (L, "LuaFileSystem 1.2.1");
|
||||||
lua_settable (L, -3);
|
lua_settable (L, -3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -594,9 +573,6 @@ static const struct luaL_reg fslib[] = {
|
|||||||
{"lock", file_lock},
|
{"lock", file_lock},
|
||||||
{"mkdir", make_dir},
|
{"mkdir", make_dir},
|
||||||
{"rmdir", remove_dir},
|
{"rmdir", remove_dir},
|
||||||
#ifndef _WIN32
|
|
||||||
{"symlinkattributes", link_info},
|
|
||||||
#endif
|
|
||||||
{"touch", file_utime},
|
{"touch", file_utime},
|
||||||
{"unlock", file_unlock},
|
{"unlock", file_unlock},
|
||||||
{NULL, NULL},
|
{NULL, NULL},
|
||||||
@@ -604,7 +580,7 @@ static const struct luaL_reg fslib[] = {
|
|||||||
|
|
||||||
int luaopen_lfs (lua_State *L) {
|
int luaopen_lfs (lua_State *L) {
|
||||||
dir_create_meta (L);
|
dir_create_meta (L);
|
||||||
luaL_register (L, "lfs", fslib);
|
luaL_openlib (L, "lfs", fslib, 0);
|
||||||
set_info (L);
|
set_info (L);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,17 +34,8 @@ assert (lfs.currentdir() == current, "error trying to change directories")
|
|||||||
assert (lfs.chdir ("this couldn't be an actual directory") == nil, "could change to a non-existent directory")
|
assert (lfs.chdir ("this couldn't be an actual directory") == nil, "could change to a non-existent directory")
|
||||||
|
|
||||||
-- Changing creating and removing directories
|
-- Changing creating and removing directories
|
||||||
local tmpdir = current..sep.."lfs_tmp_dir"
|
local tmpdir = tmp..sep.."lfs_tmp_dir"
|
||||||
local tmpfile = tmpdir..sep.."tmp_file"
|
local tmpfile = tmpdir..sep.."tmp_file"
|
||||||
-- Test for existence of a previous lfs_tmp_dir
|
|
||||||
-- that may have resulted from an interrupted test execution and remove it
|
|
||||||
if lfs.chdir (tmpdir) then
|
|
||||||
assert (lfs.chdir (upper), "could not change to upper directory")
|
|
||||||
assert (os.remove (tmpfile), "could not remove file from previous test")
|
|
||||||
assert (lfs.rmdir (tmpdir), "could not remove directory from previous test")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- tries to create a directory
|
|
||||||
assert (lfs.mkdir (tmpdir), "could not make a new directory")
|
assert (lfs.mkdir (tmpdir), "could not make a new directory")
|
||||||
local attrib, errmsg = lfs.attributes (tmpdir)
|
local attrib, errmsg = lfs.attributes (tmpdir)
|
||||||
if not attrib then
|
if not attrib then
|
||||||
@@ -54,31 +45,19 @@ local f = io.open(tmpfile, "w")
|
|||||||
f:close()
|
f:close()
|
||||||
|
|
||||||
-- Change access time
|
-- Change access time
|
||||||
local testdate = os.time({ year = 2007, day = 10, month = 2, hour=0})
|
assert (lfs.touch (tmpfile, 86401))
|
||||||
assert (lfs.touch (tmpfile, testdate))
|
|
||||||
local new_att = assert (lfs.attributes (tmpfile))
|
local new_att = assert (lfs.attributes (tmpfile))
|
||||||
assert (new_att.access == testdate, "could not set access time")
|
assert (new_att.access == 86401, "could not set access time")
|
||||||
assert (new_att.modification == testdate, "could not set modification time")
|
assert (new_att.modification == 86401, "could not set modification time")
|
||||||
|
|
||||||
-- Change access and modification time
|
-- Change access and modification time
|
||||||
local testdate1 = os.time({ year = 2007, day = 10, month = 2, hour=0})
|
assert (lfs.touch (tmpfile, 86403, 86402))
|
||||||
local testdate2 = os.time({ year = 2007, day = 11, month = 2, hour=0})
|
|
||||||
|
|
||||||
assert (lfs.touch (tmpfile, testdate2, testdate1))
|
|
||||||
local new_att = assert (lfs.attributes (tmpfile))
|
local new_att = assert (lfs.attributes (tmpfile))
|
||||||
assert (new_att.access == testdate2, "could not set access time")
|
assert (new_att.access == 86403, "could not set access time")
|
||||||
assert (new_att.modification == testdate1, "could not set modification time")
|
assert (new_att.modification == 86402, "could not set modification time")
|
||||||
|
|
||||||
if lfs.symlinkattributes then
|
|
||||||
-- Checking symbolic link information (does not work in Windows)
|
|
||||||
assert (os.execute ("ln -s "..tmpfile.." _a_link_for_test_"))
|
|
||||||
assert (lfs.attributes"_a_link_for_test_".mode == "file")
|
|
||||||
assert (lfs.symlinkattributes"_a_link_for_test_".mode == "link")
|
|
||||||
assert (os.remove"_a_link_for_test_")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Restore access time to current value
|
-- Restore access time to current value
|
||||||
assert (lfs.touch (tmpfile, attrib.access, attrib.modification))
|
assert (lfs.touch (tmpfile))
|
||||||
new_att = assert (lfs.attributes (tmpfile))
|
new_att = assert (lfs.attributes (tmpfile))
|
||||||
assert (new_att.access == attrib.access)
|
assert (new_att.access == attrib.access)
|
||||||
assert (new_att.modification == attrib.modification)
|
assert (new_att.modification == attrib.modification)
|
||||||
|
|||||||
Reference in New Issue
Block a user