168 Commits

Author SHA1 Message Date
Hisham Muhammad
95573506c5 Remove old references 2014-01-29 21:43:20 -02:00
Hisham Muhammad
1b3e3d4b4b Add top-level LICENSE file. Closes #33. 2014-01-29 21:15:29 -02:00
Hisham Muhammad
3bfdafcf4c Fix documentation for setmode. Closes #32. 2014-01-29 20:33:43 -02:00
Hisham Muhammad
00b17c6f1a Merge branch 'master' of https://github.com/keplerproject/luafilesystem 2014-01-29 17:27:04 -02:00
Hisham Muhammad
2111509acc Improve indentation consistency 2014-01-29 17:26:45 -02:00
Hisham Muhammad
18afb5a089 Use local stylesheet, suitable for truly offline viewing. 2014-01-29 17:22:49 -02:00
Hisham Muhammad
ebf867f729 Remove outdated links 2014-01-29 17:21:59 -02:00
Hisham Muhammad
5be0c7156e Merge pull request #28 from moteus/patch-1
Fix. Prevents double close the same handle (#24)
2014-01-08 06:53:06 -08:00
Alexey Melnichuk
cc6007171b Fix. Prevents double close the same handle (#24)
lfs_unlock_dir can be called multiple times for the same object.
For example if lock:free is called manually.
Then lfs_unlock_dir will be called always
again, as soon as the LOCK_METATABLE is collected by GC.
This can lead to strange file errors later on, like closing
another file, which now has been assigned the same handle...
2014-01-08 16:18:31 +03:00
Hisham Muhammad
2b80db36f0 Merge pull request #27 from moteus/patch-1
Fix. Use intptr_t to file handle on Windows (#26)
2014-01-04 12:13:23 -08:00
Alexey Melnichuk
ab8348e9bc Fix. Use intptr_t to file handle on Windows (#26)
Tested on MS VS2008(x32) MinGW(x32) and MS VS2012(x64)
2014-01-04 10:02:16 +03:00
Fabio Mascarenhas
2fd989cd6c Merge pull request #21 from Mikhael-Danilov/patch-1
Update src/lfs.c
2013-09-24 06:48:18 -07:00
Mikhael-Danilov
b21e375840 Update src/lfs.c
Fix Windows build: make_link now returns int as it should
2013-02-20 22:19:05 +04:00
Fabio Mascarenhas
9c2679f9d7 Merge pull request #19 from devurandom/fix/warnings
Fix some warnings GCC produced on Linux
2012-10-04 07:25:54 -07:00
Fabio Mascarenhas
62d5dbe3b6 Merge pull request #18 from devurandom/fix/lua52
Full Lua 5.2 compatibility and adherance to modules-create-no-globals
2012-10-04 07:00:22 -07:00
Dennis Schridde
a0d6f9d239 Fix warnings: unused variable
On non-win32 lfs_setmode was defined to 0, ignoring all parameters.
Now the parameters are explicitly discarded.

Fixes:
src/lfs.c: In function ‘lfs_g_setmode’:
src/lfs.c:324:7: warning: unused variable ‘op’ [-Wunused-variable]
src/lfs.c:321:47: warning: unused parameter ‘f’ [-Wunused-parameter]
2012-10-04 10:55:13 +02:00
Dennis Schridde
b35607e8a4 Fix warning: C++ style comments are not allowed in ISO C90 2012-10-04 10:51:44 +02:00
Dennis Schridde
f42c1a1a38 Set global "lfs" when opening module
* Ensures backward compatibility with LFS 1.5
* Module name is defined as LFS_LIBNAME, similar to how Lua standard libraries are defined
2012-10-04 10:48:07 +02:00
Dennis Schridde
5e55437028 Bump version to 1.6.2 and set version via define in src/lfs.c to make it better visible 2012-10-03 02:58:57 +02:00
Dennis Schridde
8e7217e74f Full Lua 5.2 compatibility and adherance to modules-create-no-globals 2012-10-03 02:54:08 +02:00
Fabio Mascarenhas
944e325e29 fix build for Lua 5.2; version 1.6.1 2012-10-01 15:57:09 -03:00
Fabio Mascarenhas
201d18a497 Merge pull request #17 from rrthomas/master
Use Lua 5.2's own luaL_register
2012-10-01 11:53:35 -07:00
Reuben Thomas
584066ee86 lfs.c: use Lua 5.2's own luaL_register 2012-10-01 19:44:00 +01:00
Fabio Mascarenhas
d71c63cdb7 luafilesystem 1.6.0 2012-10-01 11:11:48 -03:00
Fabio Mascarenhas
4a299c53b6 Merge pull request #15 from ewmailing/master
Improvements to use of getcwd() for using the correct max path length
2012-09-26 06:49:35 -07:00
Fabio Mascarenhas
420db54f1e Merge pull request #14 from icgood/master
5.2 compatibility
2012-08-31 12:09:14 -07:00
Eric Wing
37c2309a40 Due to Android (and apparently Sun) not supporting getcwd(NULL, 0), I've changed to call to getcwd to specify a buffer and explicit size which successfully works around the problem. One minor performance advantage is that one less malloc/free is needed since the buffer is now created on the stack. Apparently, this was already changed in a prior commit I didn't see initially, but I think the use of an invented/arbitrary PATH_MAX is incorrect. Platforms should generally provide a constant for this and PATH_MAX itself is already defined on some systems like Linux which can cause collisions. This commit improves on those changes by leveraging the constants provided by the compiler/system.
To help keep the code consistent but still correct, new platform specific code needed to be introduced for the max length. On POSIX I am assuming it is that <sys/param.h> provides MAXPATHLEN. This is what the Mac/BSD man page says to use and verified this is also defined on Ubuntu Linux and Android. On Windows, MAX_PATH is used. MAX_PATH seems to still be 260 which seems kind of small; is there a different constant we are supposed to use? In both cases, the respective constants are mapped to a new #define for LFS_MAXPATHLEN to allow the code to refer to one constant and avoid any potential name collisions in case MAXPATHLEN is defined already by something else on Windows (e.g. Cygwin).
2012-05-01 14:38:02 -07:00
Fabio Mascarenhas
84f1af5eef applied debian patches from enrico tassi 2012-04-08 20:25:40 -03:00
Ian Good
f634765b26 implements fake luaL_register in Lua 5.2+ 2012-02-28 03:37:14 +00:00
Fabio Mascarenhas
149e0fb8ec Merge pull request #8 from rrthomas/master
New lfs.link and other goodies
2011-06-09 14:09:31 -07:00
Reuben Thomas
83faa7e05d Simplify and clarify metatable creation functions. 2011-06-09 20:35:12 +01:00
Reuben Thomas
3cea6c6e96 Add lfs.link. 2011-06-09 19:53:41 +01:00
Reuben Thomas
7e979318bd Use package.config to get directory separator. 2011-06-09 19:53:41 +01:00
Reuben Thomas
de03ad370c Add a comment for make_dir. 2011-06-09 19:53:41 +01:00
Reuben Thomas
fbdff8f1a5 Fix typo in manual. 2011-06-09 19:53:41 +01:00
Reuben Thomas
f42e7e3543 Simplify dir_iter_factory slightly. 2011-06-09 19:53:41 +01:00
Reuben Thomas
d61eb8078d Add .gitignore for *.o and *.so. 2011-06-09 19:53:41 +01:00
Reuben Thomas
361cede4d0 Add trivial implementation of setmode on non-Windows platforms. 2011-06-09 19:53:41 +01:00
Reuben Thomas
3140ca4db8 Make test.lua find its interpreter using /usr/bin/env. 2011-06-09 19:53:41 +01:00
Reuben Thomas
530c9140c7 Add trivial link_info support on Windows (using STAT_FUNC). 2011-06-09 19:53:41 +01:00
Fabio Mascarenhas
d292b3243f update links to bug tracker and cvs 2011-06-06 10:53:39 -03:00
Fabio Mascarenhas
2f55c33b0c change to build with lua 5.2 alpha, issue #5 2011-06-06 10:49:39 -03:00
Fabio Mascarenhas
ae5a05deec fixed dir length bug in windows directory iterator 2010-06-09 14:14:25 -03:00
Fabio Mascarenhas
fd028d3257 removed umask calls in lfs.mkdir, see kepler-list message from Enrico at 2009-12-27 2009-12-29 17:06:25 -02:00
Fabio Mascarenhas
8ff20138af packaging for version 1.5.0 - changing _VERSION 2009-10-20 18:54:35 -02:00
Fabio Mascarenhas
5ffde8ae51 packaging for version 1.5.0 2009-10-20 18:54:02 -02:00
Fabio Mascarenhas
2b5f187a40 cvs rockspecs now point to github 2009-09-24 14:29:44 -03:00
mascarenhas
f715ad9998 fixed typo in makefile 2009-09-21 17:02:44 +00:00
mascarenhas
c293392539 overhaul of lock_dir to remove staleness checks (due to race condition) and simplify the function 2009-07-04 02:10:16 +00:00
mascarenhas
327acf788f updated docs for lfs.dir 2009-06-03 20:53:55 +00:00
mascarenhas
375d009d89 added explicit next and close methods to second return value of lfs.dir (the directory object), for explicit iteration or explicit closing 2009-06-03 20:49:18 +00:00
mascarenhas
c1eff3de6b fixing lfs.lock_dir on windows to return "File exists" instead of looping, plus
documenting lfs.lock_dir
2009-04-24 22:24:06 +00:00
mascarenhas
b80d2baacc added lfs.lock_dir (directory locking) for Windows. On Windows the timeout
parameter is ignored, as killing the process removes the lock automatically
2009-04-24 22:11:12 +00:00
mascarenhas
d21c4ae194 locking via lockfiles in posix systems. API:
lock, err = lfs.lock_dir(path, [seconds_stale])
  Creates a lockfile (called lockfile.lfs) in <path> if it does not
  exist and returns the lock. If the lock already exists checks it
  it's stale, using the second parameter (default for the second
  parameter is INT_MAX, which in practice means the lock will never
  be stale. To free the the lock call lock:free().
  In case of any errors it returns nil and the error message. In
  particular, if the lock exists and is not stale it returns the
  "File exists" message.
2009-03-25 19:14:17 +00:00
carregal
342df4a5a3 Credits review 2009-02-04 21:21:33 +00:00
carregal
7961aab687 Updating the rockspec URL 2009-02-03 22:42:16 +00:00
carregal
657faad984 Packaging version 1.4.2 2009-02-03 22:05:48 +00:00
mascarenhas
16961a6c2c compiling with borland c 2008-12-15 16:13:55 +00:00
carregal
57d9592448 Fixed bug [#39794] Compile error on Solaris 10
Bug report and patch by Aaron B.
2008-12-12 13:26:37 +00:00
carregal
b941f90d24 Moving to "modules" builds on the rockspecs 2008-12-09 18:39:20 +00:00
carregal
b8acd4ca54 Fixing bug [#13198] lfs.attributes(filename, 'size') overflow on files > 2 Gb again
(bug report and patch by KUBO Takehiro)
2008-07-31 19:34:22 +00:00
carregal
21412ad14c Mentioning the need of using the same C runtime (Ignacio Burgueño) 2008-05-08 18:45:15 +00:00
carregal
5c7eb0e1ff Updated package URL 2008-05-07 20:01:02 +00:00
carregal
1e40455d39 Packaging version 1.4.1 2008-05-07 19:44:39 +00:00
carregal
d4bfd537a8 Packaging version 1.4.1 2008-05-07 19:06:37 +00:00
mascarenhas
d7a5679fb8 fixed bug 2293 2008-04-24 17:27:18 +00:00
mascarenhas
c039fc9798 added 1.4.1rc1 rockspec 2008-04-14 19:55:55 +00:00
mascarenhas
e7a2c5419f *** empty log message *** 2008-03-25 18:24:17 +00:00
mascarenhas
baf658a721 large file support in Linux needs STAT64=-DHAVE_STAT64 in LuaRocks
config
2008-03-25 18:20:29 +00:00
mascarenhas
5c8e92efa3 fixing config.win 2008-03-25 17:39:29 +00:00
mascarenhas
dac6b84eda fixed config.win 2008-03-25 17:38:15 +00:00
mascarenhas
ca8efaa8e7 large file support in lfs.attributes (bug #2185) 2008-03-25 16:58:29 +00:00
carregal
3aba7a98fb Small revision by Reuben Thomas 2008-03-24 18:17:59 +00:00
carregal
0154141e3f Fixed bug in the Windows tests (patch by Shmuel Zeigerman) 2008-03-10 15:28:50 +00:00
carregal
bb9cf83617 Correcting the use of the /MD flag 2008-02-19 22:07:42 +00:00
mascarenhas
c5bfbb1bd2 fixed windows compile problem 2008-02-19 20:08:23 +00:00
carregal
c2e720b5dc Finishing the new rockspecs 2008-02-18 18:55:14 +00:00
carregal
0233beea30 New rockspec for lfs 1.4.0, this time including Windows rules 2008-02-18 18:17:05 +00:00
carregal
f1e4fd1bf4 Fixing wrong decription of lfs.setmode 2008-02-18 17:20:16 +00:00
mascarenhas
640265aee7 removed warnings 2008-02-18 03:13:50 +00:00
carregal
8f943857e8 Corecting the lfs.setmode signature 2008-02-14 18:26:19 +00:00
carregal
80027817c3 Updating rockspec to include the correct package URL 2008-02-13 22:33:47 +00:00
carregal
6c16dc4634 Correcting the detection of the manifest file 2008-02-13 22:08:31 +00:00
carregal
dff01ac3c9 Version 1.4.0 rockspec 2008-02-13 21:40:56 +00:00
carregal
cdfd06b4ea Minor update 2008-02-13 21:00:10 +00:00
carregal
db7e8b9133 Adding tests for lfs.setmode 2008-02-13 20:59:51 +00:00
carregal
d931b9b2bb Small corrections 2008-02-11 22:48:16 +00:00
carregal
b66ab2cae9 Preparing the 1.4.0 release.
Added documentation for lfs.setmode
2008-02-11 22:42:21 +00:00
mascarenhas
78f28b6468 lfs.attributes raises an error if attribute does not exist 2008-01-25 17:09:56 +00:00
mascarenhas
25f8aa1936 makefile.win tweak 2008-01-23 02:50:08 +00:00
mascarenhas
804e976407 updated makefile for vc2008 2008-01-23 02:48:47 +00:00
mascarenhas
d219de7885 added flag to supress manifest creation 2008-01-23 01:58:25 +00:00
mascarenhas
ed97af80fb *** empty log message *** 2008-01-16 22:33:24 +00:00
mascarenhas
895e9daf27 getcwd no longer passes a buffer 2008-01-16 22:29:26 +00:00
mascarenhas
50f17597b3 Added lfs.setmode for changing file's mode (only for Windows) 2007-12-22 17:19:45 +00:00
carregal
24fdbc0a66 Minor HTML revision 2007-12-14 15:28:04 +00:00
carregal
e52a7fef15 Using a default prefix for the Makefile 2007-10-27 22:42:32 +00:00
carregal
6368cd544f Fixing a wrong test (tks to Enrico Tassi) 2007-10-27 14:15:49 +00:00
carregal
9cdf62e1bd Documentation updates for 1.3.0 2007-10-26 21:44:43 +00:00
carregal
4790b562ca Checking for lfs.symlinkattributes so the tests are not applied in Windows 2007-10-26 21:06:14 +00:00
carregal
8432017680 Version 1.3.0 (final) 2007-10-26 21:01:07 +00:00
carregal
d202dad4f1 Removing the symbolic link tests since they don't work in Windows. We have to re-check them later. 2007-10-26 20:13:10 +00:00
carregal
6756befeff Changing version to LuaFileSystem 1.3.0 (work) 2007-10-05 02:06:58 +00:00
tomas
aeca787ff3 Improving conditional compilation for Windows version (thanks to Varol Kaptan) 2007-08-30 14:39:45 +00:00
tomas
1cfd57550e Correcting version 2007-08-30 14:38:07 +00:00
hisham
9f7e1dc153 Make include path comply with vanilla Lua 2007-07-31 03:22:55 +00:00
tomas
97ccdc90ed Avoiding dependency in backwards compatibility to Lua 5.0 2007-06-22 12:44:46 +00:00
tomas
57a64a5cfe Adding function symlinkatributes. Updating version to 1.3.0 2007-06-07 01:28:08 +00:00
carregal
47f40e5705 Changes related to the new build strucutre using Lua 5.1 default paths 2007-05-18 19:52:59 +00:00
carregal
d3e7a0ed12 Corrected the second of 2 bugs on the test script found by Shmuel Zeigerman involving the access and update time on lfs.touch() 2007-05-18 18:04:46 +00:00
carregal
6a22c3e728 Correction on the documentation of lfs.touch() 2007-05-17 23:08:56 +00:00
carregal
4e23cb01d9 Corrected 1 of 2 bugs on the test script found by Shmuel Zeigerman: the use of /tmp as a necessary directory.
Corrected a bug on the test script on slow fliesystems due to the reliance on close times
2007-05-17 23:08:20 +00:00
tomas
7ee2d8e1b2 Compilation bug fix: ISO C90 forbids mixed declarations and code 2007-05-15 12:58:35 +00:00
carregal
8033232c92 Simplified README 2007-05-08 21:39:23 +00:00
carregal
3b35114a16 Details for the 1.2.1 release. Version number, droping Lua 5.0 support 2007-05-08 19:23:12 +00:00
carregal
8161cea877 Changing the default Windows building directory from c:\lua51 to c:\lua5.1 2007-03-15 21:27:52 +00:00
carregal
a11b58023e Add removal rules for nmake clean 2006-12-19 21:41:42 +00:00
mascarenhas
94e104b98a config revert 2006-12-15 18:04:50 +00:00
mascarenhas
e92c9b4d9e Added pseudo-configure script
----------------------------------------------------------------------
2006-12-15 17:14:28 +00:00
mascarenhas
c9fe48709f Windows Makefile take two 2006-12-04 18:25:24 +00:00
mascarenhas
57622411a9 Windows Makefile and config 2006-12-04 18:24:18 +00:00
mascarenhas
67c2187e9a Dropped Lua 5.0 support. 2006-12-04 15:28:53 +00:00
tomas
5100f420b7 Updating to Lua 5.1 2006-07-24 01:19:42 +00:00
carregal
722f6a9869 Reference to LuaBinaries 5.0.2 2006-06-26 18:29:13 +00:00
tomas
e10a4bc816 Correcting version number 2006-06-08 18:06:18 +00:00
tomas
c182bab5f9 Adding version information 2006-06-08 18:04:29 +00:00
tomas
df2efb797c Adding support for compilation on both Lua 5.0 and Lua 5.1 2006-06-08 17:55:33 +00:00
tomas
b6c8c13942 Adding support for compilation on both Lua 5.0 and Lua 5.1 2006-06-08 16:23:25 +00:00
tomas
59ef09d270 Adding support for compilation on both Lua 5.0 and Lua 5.1 2006-06-08 16:16:23 +00:00
carregal
ac0de9a462 Documentation update - minor details 2006-03-23 20:44:00 +00:00
carregal
3a7a15178f Documentation update - minor details 2006-03-15 20:29:15 +00:00
tuler
f9e07c6b08 version update 2006-03-15 18:27:13 +00:00
carregal
f78e6e2abe Documentation update - minor details 2006-03-15 16:44:04 +00:00
tomas
dbb964ffd4 Standardizing the return values in case of error 2006-03-14 15:03:34 +00:00
carregal
9344c3933d Documentation update - minor details 2006-03-14 14:07:55 +00:00
tomas
121ae680f1 Standardizing execution errors to nil followed by an error message 2006-03-14 13:39:38 +00:00
tomas
1a1716f876 Expliciting the types of the attributes 2006-03-14 13:16:18 +00:00
tomas
e100c80db4 Removing unused code 2006-03-13 00:06:24 +00:00
carregal
85bb568ca2 Documentation update reflecting the Kepler structure 2006-03-11 14:34:22 +00:00
carregal
144b4ea052 Documentation update reflecting the Kepler structure 2006-03-10 23:37:48 +00:00
carregal
44e60e8b0c Comments update - minor details 2006-03-10 23:37:32 +00:00
carregal
55be9b2227 Comments update - minor details 2006-03-10 22:38:11 +00:00
tuler
b4da6c67bb version update. 2006-03-07 19:08:27 +00:00
tuler
a60f6307d5 variable declaration in an _WIN32 section 2006-03-07 19:07:57 +00:00
tomas
7ba0f3da76 Improving History 2006-03-04 00:33:43 +00:00
tomas
079b4e7f79 Improving lfs.attributes' reference 2006-03-03 23:58:05 +00:00
uid20013
6305fb87bd Saying where the library should be copied to. 2006-02-07 01:42:58 +00:00
tuler
55de5925e5 access time 11, 22 and 33 do not work on windows 2005-08-18 12:43:05 +00:00
tomas
e206fd0e63 Upgrading lfs.attributes so that it could receive an extra parameter.
If it is a table, then it is used instead of creating a new one.
If it is a string, then it is used to indicate the attribute which will
be returned (only one parameter is accepted).
2005-08-18 01:00:44 +00:00
uid20006
87b373b3d8 touch does not work with directories in windows. 2005-08-16 18:24:28 +00:00
uid20006
e7ced7f8af using lfs.rmdir instead of os.remove. 2005-08-16 13:48:23 +00:00
uid20006
5cb0d77851 moved luaL_argcheck call. 2005-08-16 13:47:58 +00:00
uid20013
e224c98838 Closing directory after a complete traversal.
Adding tests for that.
2005-08-16 00:11:15 +00:00
tomas
865d2453ff Correcting option which only exists on MacOS X. 2005-06-27 17:06:01 +00:00
tomas
1a1f08c803 Library name without prefix: <lib>.so.<ver>
Adding symbolic link: <lib>.so -> <lib.so.<ver>
2005-06-24 01:49:16 +00:00
tomas
3479c6d935 Removing _NAME field. 2005-06-21 11:46:13 +00:00
tomas
26d207052c Cleaning unused libraries while building .so. 2005-06-10 13:01:15 +00:00
tuler
82926a72ed version update 2005-06-09 16:22:37 +00:00
tuler
7446e31486 new function rmdir 2005-06-09 16:19:27 +00:00
carregal
af9acdaf85 Documentation update 2005-06-08 14:25:09 +00:00
tomas
9015b5352b Correcting linking on MacOS X. 2005-06-06 22:15:53 +00:00
tomas
9f9257647e Excluding -ldl option (it seems not necessary).
Including configurable config file.
2005-06-06 20:10:10 +00:00
tomas
95bd727a3d Standardizing Makefile and config. 2005-06-05 00:36:18 +00:00
tomas
9265a97822 Cleanup. 2005-06-04 18:22:29 +00:00
tuler
97abe2139e new function lfs.rmdir 2005-06-03 21:50:59 +00:00
tuler
197032fa7b changed link to LuaBinaries 2005-06-02 21:14:53 +00:00
carregal
bfe68e98e6 Documentation update 2005-06-02 21:02:44 +00:00
uid20006
99443a0111 correting name of generated zip file. 2005-05-30 19:18:44 +00:00
30 changed files with 1875 additions and 486 deletions

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
Copyright © 2003-2014 Kepler Project.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,41 +1,22 @@
# $Id: Makefile,v 1.19 2005/05/30 17:54:49 uid20006 Exp $
# $Id: Makefile,v 1.36 2009/09/21 17:02:44 mascarenhas Exp $
T= lfs
include ./config
CONFIG= ./config
V= 1.1
DIST_DIR= luafilesystem-$V
TAR_FILE= $(DIST_DIR).tar.gz
ZIP_FILE= $(DIST_DIR).zip
LIBNAME= lib$T.$V.so
include $(CONFIG)
COMPAT_O= $(COMPAT_DIR)/compat-5.1.o
SRCS= src/$T.c
OBJS= src/$T.o $(COMPAT_O)
OBJS= src/$T.o
lib: src/lfs.so
lib: src/$(LIBNAME)
src/lfs.so: $(OBJS)
MACOSX_DEPLOYMENT_TARGET="10.3"; export MACOSX_DEPLOYMENT_TARGET; $(CC) $(CFLAGS) $(LIB_OPTION) -o src/lfs.so $(OBJS)
src/$(LIBNAME): $(OBJS)
$(CC) $(CFLAGS) $(LIBS) $(LIB_OPTION) -o src/$(LIBNAME) $(OBJS)
$(COMPAT_O): $(COMPAT_DIR)/compat-5.1.c
$(CC) -c $(CFLAGS) -o $@ $(COMPAT_DIR)/compat-5.1.c
install: src/$(LIBNAME)
install:
mkdir -p $(LUA_LIBDIR)
cp src/$(LIBNAME) $(LUA_LIBDIR)
ln -f -s $(LUA_LIBDIR)/$(LIBNAME) $(LUA_LIBDIR)/$T.so
cp src/lfs.so $(LUA_LIBDIR)
clean:
rm -f $L src/$(LIBNAME) $(OBJS)
dist: dist_dir
tar -czf $(TAR_FILE) $(DIST_DIR)
zip -rq $(ZIP_FILE) $(DIST_DIR)/*
rm -rf $(DIST_DIR)
dist_dir:
mkdir -p $(DIST_DIR)
cp config $(SRCS) $T.h $T.def Makefile *html luafilesystem.png $(DIST_DIR)
rm -f src/lfs.so $(OBJS)

25
Makefile.win Normal file
View File

@@ -0,0 +1,25 @@
# $Id: Makefile.win,v 1.11 2008/05/07 19:06:37 carregal Exp $
T= lfs
include config.win
SRCS= src\$T.c
OBJS= src\$T.obj
lib: src\lfs.dll
.c.obj:
$(CC) /c /Fo$@ $(CFLAGS) $<
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\lfs.dll
IF NOT EXIST "$(LUA_LIBDIR)" mkdir "$(LUA_LIBDIR)"
copy src\lfs.dll "$(LUA_LIBDIR)"
clean:
del src\lfs.dll $(OBJS) src\$T.lib src\$T.exp
IF EXIST src\lfs.dll.manifest del src\lfs.dll.manifest

78
README Normal file
View File

@@ -0,0 +1,78 @@
LuaFileSystem - File System Library for Lua
Copyright 2003 Kepler Project
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
LuaRocks Installation
---------------------
luarocks install luafilesystem
Documentation
-------------
Please check the documentation at doc/us/ for more information.
History
-------
Version 1.6.2 [??/Oct/2012]
* Full Lua 5.2 compatibility (with Lua 5.1 fallbacks)
Version 1.6.1 [01/Oct/2012]
* fix build for Lua 5.2
Version 1.6.0 [26/Sep/2012]
* getcwd fix for Android
* support for Lua 5.2
* add lfs.link
* other bug fixes
Version 1.5.0 [20/Oct/2009]
* added explicit next and close methods to second return value of lfs.dir (the directory object), for explicit iteration or explicit closing.
* added directory locking via lfs.lock_dir function (see the manual).
Version 1.4.2 [03/Feb/2009]
* fixed bug [#13198] lfs.attributes(filename, 'size') overflow on files > 2 Gb again (bug report and patch by KUBO Takehiro).
* fixed bug [#39794] Compile error on Solaris 10 (bug report and patch by Aaron B).
* fixed compilation problems with Borland C.
Version 1.4.1 [07/May/2008]
* documentation review
* fixed Windows compilation issues
* fixed bug in the Windows tests (patch by Shmuel Zeigerman)
* fixed bug [#2185] lfs.attributes(filename, 'size') overflow on files > 2 Gb
Version 1.4.0 [13/Feb/2008]
* added function lfs.setmode (works only in Windows systems).
* lfs.attributes raises an error if attribute does not exist
Version 1.3.0 [26/Oct/2007]
* added function lfs.symlinkattributes (works only in non Windows systems).
Version 1.2.1 [08/May/2007]
* compatible only with Lua 5.1 (Lua 5.0 support was dropped)
Version 1.2 [15/Mar/2006]
* added optional argument to lfs.attributes
* added function lfs.rmdir
* bug correction on lfs.dir
Version 1.1 [30/May/2005]
* added function lfs.touch.
Version 1.0 [21/Jan/2005]
Version 1.0 Beta [10/Nov/2004]

22
config
View File

@@ -1,22 +1,24 @@
# Installation directories
# Default installation prefix
PREFIX=/usr/local
# System's libraries directory (where binary libraries are installed)
LUA_LIBDIR= /usr/local/lib/lua/5.0
LUA_LIBDIR= $(PREFIX)/lib/lua/5.1
# Lua includes directory
LUA_INC= /usr/local/include/lua5
LUA_INC= $(PREFIX)/include
# OS dependent
#LIB_OPTION= -bundle -undefined dynamic_lookup #for MacOS X
LIB_OPTION= -shared #for Linux
#LIB_OPTION= -bundle -undefined dynamic_lookup #for MacOS X
COMPAT_DIR= ../compat/src
LIBNAME= $T.so.$V
# Compilation directives
# On FreeBSD systems, the following line should be commented
DLLIB= -ldl
#LUA_LIBS= -llua50 -lm
WARN= -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings
INCS= -I$(LUA_INC) -I$(COMPAT_DIR)
LIBS= $(LUA_LIBS) $(DLLIB)
WARN= -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings -pedantic
INCS= -I$(LUA_INC)
CFLAGS= $(WARN) $(INCS)
CC= gcc
# $Id: config,v 1.21 2007/10/27 22:42:32 carregal Exp $

19
config.win Normal file
View File

@@ -0,0 +1,19 @@
# Installation directories
# System's libraries directory (where binary libraries are installed)
LUA_LIBDIR= "c:\lua5.1"
# Lua includes directory
LUA_INC= "c:\lua5.1\include"
# Lua library
LUA_LIB= "c:\lua5.1\lua5.1.lib"
LIBNAME= $T.dll
# Compilation directives
WARN= /O2
INCS= /I$(LUA_INC)
CFLAGS= /MD $(WARN) $(INCS)
CC= cl
# $Id: config.win,v 1.7 2008/03/25 17:39:29 mascarenhas Exp $

212
doc/us/doc.css Normal file
View File

@@ -0,0 +1,212 @@
body {
margin-left: 1em;
margin-right: 1em;
font-family: arial, helvetica, geneva, sans-serif;
background-color:#ffffff; margin:0px;
}
code {
font-family: "Andale Mono", monospace;
}
tt {
font-family: "Andale Mono", monospace;
}
body, td, th { font-size: 11pt; }
h1, h2, h3, h4 { margin-left: 0em; }
textarea, pre, tt { font-size:10pt; }
body, td, th { color:#000000; }
small { font-size:0.85em; }
h1 { font-size:1.5em; }
h2 { font-size:1.25em; }
h3 { font-size:1.15em; }
h4 { font-size:1.06em; }
a:link { font-weight:bold; color: #004080; text-decoration: none; }
a:visited { font-weight:bold; color: #006699; text-decoration: none; }
a:link:hover { text-decoration:underline; }
hr { color:#cccccc }
img { border-width: 0px; }
h3 { padding-top: 1em; }
p { margin-left: 1em; }
p.name {
font-family: "Andale Mono", monospace;
padding-top: 1em;
margin-left: 0em;
}
blockquote { margin-left: 3em; }
.example {
background-color: rgb(245, 245, 245);
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-style: solid;
border-right-style: solid;
border-bottom-style: solid;
border-left-style: solid;
border-top-color: silver;
border-right-color: silver;
border-bottom-color: silver;
border-left-color: silver;
padding: 1em;
margin-left: 1em;
margin-right: 1em;
font-family: "Andale Mono", monospace;
font-size: smaller;
}
hr {
margin-left: 0em;
background: #00007f;
border: 0px;
height: 1px;
}
ul { list-style-type: disc; }
table.index { border: 1px #00007f; }
table.index td { text-align: left; vertical-align: top; }
table.index ul { padding-top: 0em; margin-top: 0em; }
table {
border: 1px solid black;
border-collapse: collapse;
margin-left: auto;
margin-right: auto;
}
th {
border: 1px solid black;
padding: 0.5em;
}
td {
border: 1px solid black;
padding: 0.5em;
}
div.header, div.footer { margin-left: 0em; }
#container {
margin-left: 1em;
margin-right: 1em;
background-color: #f0f0f0;
}
#product {
text-align: center;
border-bottom: 1px solid #cccccc;
background-color: #ffffff;
}
#product big {
font-size: 2em;
}
#product_logo {
}
#product_name {
}
#product_description {
}
#main {
background-color: #f0f0f0;
border-left: 2px solid #cccccc;
}
#navigation {
float: left;
width: 12em;
margin: 0;
vertical-align: top;
background-color: #f0f0f0;
overflow:visible;
}
#navigation h1 {
background-color:#e7e7e7;
font-size:1.1em;
color:#000000;
text-align:left;
margin:0px;
padding:0.2em;
border-top:1px solid #dddddd;
border-bottom:1px solid #dddddd;
}
#navigation ul {
font-size:1em;
list-style-type: none;
padding: 0;
margin: 1px;
}
#navigation li {
text-indent: -1em;
margin: 0em 0em 0em 0.5em;
display: block;
padding: 3px 0px 0px 12px;
}
#navigation li li a {
padding: 0px 3px 0px -1em;
}
#content {
margin-left: 12em;
padding: 1em;
border-left: 2px solid #cccccc;
border-right: 2px solid #cccccc;
background-color: #ffffff;
}
#about {
clear: both;
margin: 0;
padding: 5px;
border-top: 2px solid #cccccc;
background-color: #ffffff;
}
@media print {
body {
font: 10pt "Times New Roman", "TimeNR", Times, serif;
}
a {
font-weight:bold; color: #004080; text-decoration: underline;
}
#main {
background-color: #ffffff; border-left: 0px;
}
#container {
margin-left: 2%; margin-right: 2%; background-color: #ffffff;
}
#content {
margin-left: 0px; padding: 1em; border-left: 0px; border-right: 0px; background-color: #ffffff;
}
#navigation {
display: none;
}
#product_logo {
display: none;
}
#about img {
display: none;
}
.example {
font-family: "Andale Mono", monospace;
font-size: 8pt;
page-break-inside: avoid;
}
}

View File

@@ -1,9 +1,9 @@
<!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"/>
<link rel="stylesheet" href="doc.css" type="text/css"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
@@ -12,9 +12,11 @@
<div id="container">
<div id="product">
<div id="product_logo"><a href="http://www.keplerproject.org">
<div id="product_logo">
<a href="http://www.keplerproject.org">
<img alt="LuaFileSystem" src="luafilesystem.png"/>
</a></div>
</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" -->
@@ -37,11 +39,18 @@
<li><a href="manual.html">Manual</a>
<ul>
<li><a href="manual.html#introduction">Introduction</a></li>
<li><a href="manual.html#building">Building</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="https://github.com/keplerproject/luafilesystem">Project</a>
<ul>
<li><a href="https://github.com/keplerproject/luafilesystem/issues">Bug Tracker</a></li>
<li><a href="https://github.com/keplerproject/luafilesystem">Git</a></li>
</ul>
</li>
<li><a href="license.html">License</a></li>
</ul>
</div> <!-- id="navigation" -->
@@ -56,7 +65,7 @@
attributes for each file inside it.</p>
<pre class="example">
require"lfs"
local lfs = require"lfs"
function attrdir (path)
for file in lfs.dir(path) do
@@ -84,10 +93,8 @@ attrdir (".")
</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>
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></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" -->

View File

@@ -1,19 +1,22 @@
<!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"/>
<link rel="stylesheet" href="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">
<div id="product_logo">
<a href="http://www.keplerproject.org">
<img alt="LuaFileSystem" src="luafilesystem.png"/>
</a></div>
</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" -->
@@ -36,11 +39,18 @@
<li><a href="manual.html">Manual</a>
<ul>
<li><a href="manual.html#introduction">Introduction</a></li>
<li><a href="manual.html#building">Building</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="https://github.com/keplerproject/luafilesystem">Project</a>
<ul>
<li><a href="https://github.com/keplerproject/luafilesystem/issues">Bug Tracker</a></li>
<li><a href="https://github.com/keplerproject/luafilesystem">Git</a></li>
</ul>
</li>
<li><a href="license.html">License</a></li>
</ul>
</div> <!-- id="navigation" -->
@@ -57,46 +67,127 @@ systems offered by the standard Lua distribution.</p>
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>
<a href="license.html">license</a> as Lua 5.1.</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>
<p>Current version is 1.6.2. It was developed for Lua 5.1 but also
works with Lua 5.2.</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>
<p>LuaFileSystem source can be downloaded from its
<a href="http://github.com/keplerproject/luafilesystem">Github</a>
page.</p>
<h2><a name="history"></a>History</h2>
<ul>
<li>[30/May/2005] Version 1.1 released<br/>
added function <code>lfs.touch</code>.
</li>
<li>[21/Jan/2005] Version 1.0 released</li>
<li>[10/Nov/2004] Version 1.0 beta released</li>
</ul>
<dl class="history">
<dt><strong>Version 1.6.2</strong> [??/Oct/2012]</dt>
<dd><ul>
<li>Full Lua 5.2 compatibility (with Lua 5.1 fallbacks)</li>
</ul></dd>
<dt><strong>Version 1.6.1</strong> [01/Oct/2012]</dt>
<dd><ul>
<li>fix build for Lua 5.2</li>
</ul></dd>
<dt><strong>Version 1.6.0</strong> [26/Sep/2012]</dt>
<dd><ul>
<li>getcwd fix for Android</li>
<li>support for Lua 5.2</li>
<li>add lfs.link</li>
<li>other bug fixes</li>
</ul></dd>
<dt><strong>Version 1.5.0</strong> [20/Oct/2009]</dt>
<dd><ul>
<li>Added explicit next and close methods to second return value of lfs.dir
(the directory object), for explicit iteration or explicit closing.</li>
<li>Added directory locking via lfs.lock_dir function (see the <a href="manual.html">manual</a>).</li>
</ul></dd>
<dt><strong>Version 1.4.2</strong> [03/Feb/2009]</dt>
<dd>
<ul>
<li>fixed bug [<a href="http://luaforge.net/tracker/?func=detail&amp;group_id=66&amp;aid=13198&amp;atid=356">#13198</a>]
lfs.attributes(filename, 'size') overflow on files > 2 Gb again (bug report and patch by KUBO Takehiro).</li>
<li>fixed bug [<a href="http://luaforge.net/tracker/?group_id=66&amp;atid=356&amp;func=detail&amp;aid=39794">#39794</a>]
Compile error on Solaris 10 (bug report and patch by Aaron B).</li>
<li>fixed compilation problems with Borland C.</li>
</ul>
</dd>
<dt><strong>Version 1.4.1</strong> [07/May/2008]</dt>
<dd>
<ul>
<li>documentation review</li>
<li>fixed Windows compilation issues</li>
<li>fixed bug in the Windows tests (patch by Shmuel Zeigerman)</li>
<li>fixed bug [<a href="http://luaforge.net/tracker/?func=detail&amp;group_id=66&amp;aid=2185&amp;atid=356">#2185</a>]
<code>lfs.attributes(filename, 'size')</code> overflow on files > 2 Gb
</li>
</ul>
</dd>
<dt><strong>Version 1.4.0</strong> [13/Feb/2008]</dt>
<dd>
<ul>
<li>added function
<a href="manual.html#setmode"><code>lfs.setmode</code></a>
(works only in Windows systems).</li>
<li><a href="manual.html#attributes"><code>lfs.attributes</code></a>
raises an error if attribute does not exist</li>
</ul>
</dd>
<dt><strong>Version 1.3.0</strong> [26/Oct/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>Version 1.2.1</strong> [08/May/2007]</dt>
<dd>
<ul>
<li>compatible only with Lua 5.1 (Lua 5.0 support was dropped)</li>
</ul>
</dd>
<dt><strong>Version 1.2</strong> [15/Mar/2006]</dt>
<dd>
<ul>
<li>added optional argument to
<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 <a href="manual.html#dir"><code>lfs.dir</code></a></li>
</ul>
</dd>
<dt><strong>Version 1.1</strong> [30/May/2005]</dt>
<dd>
<ul>
<li>added function <a href="manual.html#touch"><code>lfs.touch</code></a>.</li>
</ul>
</dd>
<dt><strong>Version 1.0</strong> [21/Jan/2005]</dt>
<dd />
<dt><strong>Version 1.0 Beta</strong> [10/Nov/2004]</dt>
<dd />
</dl>
<h2><a name="credits"></a>Credits</h2>
<p>LuaFileSystem was designed by Roberto Ierusalimschy,
Andr&eacute; Carregal and Tom&aacute;s Guisasola as part of the
<a href="http://www.keplerproject.org">Kepler Project</a>
which holds its copyright.</p>
<a href="http://www.keplerproject.org">Kepler Project</a>,
which holds its copyright. LuaFileSystem is currently maintained by F&aacute;bio Mascarenhas.</p>
<h2><a name="contact"></a>Contact us</h2>
@@ -104,15 +195,16 @@ which holds its copyright.</p>
<a href="mailto:info-NO-SPAM-THANKS@keplerproject.org">contact us</a>.
Comments are welcome!</p>
<p>You can also reach other Kepler developers and users on the Kepler Project
<a href="http://luaforge.net/mail/?group_id=104">mailing list</a>.</p>
</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: index.html,v 1.22 2005/05/30 18:25:15 uid20002 Exp $
</small></p>
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
<p><small>$Id: index.html,v 1.44 2009/02/04 21:21:33 carregal Exp $</small></p>
</div> <!-- id="about" -->
</div> <!-- id="container" -->

View File

@@ -1,19 +1,22 @@
<!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"/>
<link rel="stylesheet" href="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">
<div id="product_logo">
<a href="http://www.keplerproject.org">
<img alt="LuaFileSystem" src="luafilesystem.png"/>
</a></div>
</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" -->
@@ -36,11 +39,18 @@
<li><a href="manual.html">Manual</a>
<ul>
<li><a href="manual.html#introduction">Introduction</a></li>
<li><a href="manual.html#building">Building</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="https://github.com/keplerproject/luafilesystem">Project</a>
<ul>
<li><a href="https://github.com/keplerproject/luafilesystem/issues/">Bug Tracker</a></li>
<li><a href="https://github.com/keplerproject/luafilesystem">Git</a></li>
</ul>
</li>
<li><strong>License</strong></li>
</ul>
</div> <!-- id="navigation" -->
@@ -75,7 +85,7 @@ Ierusalimschy, Andr&eacute; Carregal and Tom&aacute;s Guisasola.
The implementation is not derived from licensed software.</p>
<hr/>
<p>Copyright &copy; 2004-2005 The Kepler Project.</p>
<p>Copyright &copy; 2003 Kepler Project.</p>
<p>Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
@@ -102,10 +112,8 @@ SOFTWARE.</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>
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></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" -->

View File

@@ -1,9 +1,9 @@
<!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"/>
<link rel="stylesheet" href="doc.css" type="text/css"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
@@ -12,9 +12,9 @@
<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_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" -->
@@ -37,11 +37,18 @@
<li><strong>Manual</strong>
<ul>
<li><a href="manual.html#introduction">Introduction</a></li>
<li><a href="manual.html#building">Building</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="https://github.com/keplerproject/luafilesystem">Project</a>
<ul>
<li><a href="https://github.com/keplerproject/luafilesystem/issues">Bug Tracker</a></li>
<li><a href="https://github.com/keplerproject/luafilesystem">Git</a></li>
</ul>
</li>
<li><a href="license.html">License</a></li>
</ul>
</div> <!-- id="navigation" -->
@@ -57,39 +64,62 @@ 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 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><a name="building"></a>Building</h2>
<p>
LuaFileSystem should be built with Lua 5.1 so the language library
and header files for the target version must be installed properly.
</p>
<p>
LuaFileSystem offers a Makefile and a separate configuration file,
<code>config</code>,
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.
</p>
<p>On Windows, the C runtime used to compile LuaFileSystem must be the same
runtime that Lua uses, or some LuaFileSystem functions will not work.</p>
<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>The easiest way to install LuaFileSystem is to use LuaRocks:</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>
<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>
<p>LuaFileSystem offers the following functions:</p>
<p>
LuaFileSystem offers the following functions:
</p>
<dl class="reference">
<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:
<dt><a name="attributes"></a><strong><code>lfs.attributes (filepath [, aname])</code></strong></dt>
<dd>Returns a table with the file attributes corresponding to
<code>filepath</code> (or <code>nil</code> followed by an error message
in case of error).
If the second optional argument is given, then only the value of the
named attribute is returned (this use is equivalent to
<code>lfs.attributes(filepath).aname</code>, but the table is not created
and only one attribute is retrieved from the O.S.).
The attributes are described as follows;
attribute <code>mode</code> is a string, all the others are numbers,
and the time related attributes use the same time reference of
<a href="http://www.lua.org/manual/5.1/manual.html#pdf-os.time"><code>os.time</code></a>:
<dl>
<dt><strong><code>dev</code></strong></dt>
<dd>on Unix systems, represents the device that the inode resides on. On Windows systems,
<dd>on Unix systems, this represents the device that the inode resides on. On Windows systems,
represents the drive number of the disk containing the file</dd>
<dt><strong><code>ino</code></strong></dt>
<dd>on Unix systems, represents the inode number. On Windows systems this has no meaning</dd>
<dd>on Unix systems, this represents the inode number. On Windows systems this has no meaning</dd>
<dt><strong><code>mode</code></strong></dt>
<dd>string representing the associated protection mode (the values could be
@@ -107,7 +137,7 @@ binary properly</p>
<dd>group-id of owner (Unix only, always 0 on Windows)</dd>
<dt><strong><code>rdev</code></strong></dt>
<dd>on Unix systems, represents the device type, for special file inode.
<dd>on Unix systems, represents the device type, for special file inodes.
On Windows systems represents the same as <code>dev</code></dd>
<dt><strong><code>access</code></strong></dt>
@@ -128,6 +158,12 @@ binary properly</p>
<dt><strong><code>blksize</code></strong></dt>
<dd>optimal file system I/O blocksize; (Unix only)</dd>
</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>
<dt><a name="chdir"></a><strong><code>lfs.chdir (path)</code></strong></dt>
@@ -135,14 +171,29 @@ binary properly</p>
<code>path</code>.<br />
Returns <code>true</code> in case of success or <code>nil</code> plus an
error string.</dd>
<dt><a name="chdir"></a><strong><code>lfs.lock_dir(path, [seconds_stale])</code></strong></dt>
<dd>Creates a lockfile (called lockfile.lfs) in <code>path</code> if it does not
exist and returns the lock. If the lock already exists checks if
it's stale, using the second parameter (default for the second
parameter is <code>INT_MAX</code>, which in practice means the lock will never
be stale. To free the the lock call <code>lock:free()</code>. <br/>
In case of any errors it returns nil and the error message. In
particular, if the lock exists and is not stale it returns the
"File exists" message.</dd>
<dt><a name="getcwd"></a><strong><code>lfs.currentdir ()</code></strong></dt>
<dd>Returns a string with the current working directory or <code>nil</code>
plus an error string.</dd>
<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>
<dt><a name="dir"></a><strong><code>iter, dir_obj = lfs.dir (path)</code></strong></dt>
<dd>
Lua iterator over the entries of a given directory.
Each time the iterator is called with <code>dir_obj</code> it returns a directory entry's name as a string, or
<code>nil</code> if there are no more entries. You can also iterate by calling <code>dir_obj:next()</code>, and
explicitly close the directory before the iteration finished with <code>dir_obj:close()</code>.
Raises an error if <code>path</code> is not a directory.
</dd>
<dt><a name="lock"></a><strong><code>lfs.lock (filehandle, mode[, start[, length]])</code></strong></dt>
<dd>Locks a file or a part of it. This function works on <em>open files</em>; the
@@ -152,27 +203,56 @@ binary properly</p>
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.
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="link"></a><strong><code>lfs.link (old, new[, symlink])</code></strong></dt>
<dd>Creates a link. The first argument is the object to link to
and the second is the name of the link. If the optional third
argument is true, the link will by a symbolic link (by default, a
hard link is created).
</dd>
<dt><a name="mkdir"></a><strong><code>lfs.mkdir (dirname)</code></strong></dt>
<dd>Creates a new directory. The argument is the name of the new
directory.<br />
Returns a boolean indicating whether the operation succeeds or not
(in this case, an error string is returned too).</dd>
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="rmdir"></a><strong><code>lfs.rmdir (dirname)</code></strong></dt>
<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 (file, 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 <code>true</code> followed the previous mode string for the file, or
<code>nil</code> followed by an error string in case of errors.
On non-Windows platforms, where the two modes are identical,
setting the mode has no effect, and the mode is always returned as <code>binary</code>.
</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).
On Windows this function does not yet support links, and is identical to
<code>lfs.attributes</code>.
</dd>
<dt><a name="touch"></a><strong><code>lfs.touch (filepath [, atime [, mtime]])</code></strong></dt>
<dd>Set access and modification times of a file. This function is
a bind to <code>utime</code> function. The first argument is the
filename, the second argument (<code>atime</code>) is the access time,
and the third argument (<code>mtime</code>) is the modification time.
Both times are provided in seconds (which should be generated with
Lua standard function <code>os.date</code>).
If the modifition time is omitted, the access time provided is used;
Lua standard function <code>os.time</code>).
If the modification 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>
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="unlock"></a><strong><code>lfs.unlock (filehandle[, start[, length]])</code></strong></dt>
<dd>Unlocks a file or a part of it. This function works on
@@ -180,9 +260,9 @@ binary properly</p>
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>
Returns <code>true</code> if the operation was successful;
in case of error, it returns <code>nil</code> plus an error string.
</dd>
</dl>
</div> <!-- id="content" -->
@@ -190,10 +270,8 @@ binary properly</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: manual.html,v 1.21 2005/05/24 23:27:34 carregal Exp $
</small></p>
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
<p><small>$Id: manual.html,v 1.45 2009/06/03 20:53:55 mascarenhas Exp $</small></p>
</div> <!-- id="about" -->
</div> <!-- id="container" -->

View 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)"
}
}

View File

@@ -0,0 +1,27 @@
package = "LuaFileSystem"
version = "1.4.0-1"
source = {
url = "http://luaforge.net/frs/download.php/3158/luafilesystem-1.4.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)"
}
}

View File

@@ -0,0 +1,43 @@
package = "LuaFileSystem"
version = "1.4.0-2"
source = {
url = "http://luaforge.net/frs/download.php/3158/luafilesystem-1.4.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 = {
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 = "/MD $(CFLAGS) /I$(LUA_INCDIR)",
},
install_variables = {
LUA_LIBDIR = "$(LIBDIR)",
LUA_DIR = "$(LUADIR)",
BIN_DIR = "$(BINDIR)"
}
}
}
}

View File

@@ -0,0 +1,43 @@
package = "LuaFileSystem"
version = "1.4.1-1"
source = {
url = "http://luaforge.net/frs/download.php/3345/luafilesystem-1.4.1.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 = {
platforms = {
unix = {
type = "make",
build_variables = {
LIB_OPTION = "$(LIBFLAG)",
CFLAGS = "$(CFLAGS) -I$(LUA_INCDIR) $(STAT64)",
},
install_variables = {
LUA_LIBDIR = "$(LIBDIR)"
}
},
win32 = {
type = "make",
build_variables = {
LUA_LIB = "$(LUA_LIBDIR)\\lua5.1.lib",
CFLAGS = "/MD $(CFLAGS) /I$(LUA_INCDIR)",
},
install_variables = {
LUA_LIBDIR = "$(LIBDIR)",
LUA_DIR = "$(LUADIR)",
BIN_DIR = "$(BINDIR)"
}
}
}
}

View File

@@ -0,0 +1,43 @@
package = "LuaFileSystem"
version = "1.4.1rc1-1"
source = {
url = "http://luafilesystem.luaforge.net/luafilesystem-1.4.1rc1.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 = {
platforms = {
unix = {
type = "make",
build_variables = {
LIB_OPTION = "$(LIBFLAG)",
CFLAGS = "$(CFLAGS) -I$(LUA_INCDIR) $(STAT64)",
},
install_variables = {
LUA_LIBDIR = "$(LIBDIR)"
}
},
win32 = {
type = "make",
build_variables = {
LUA_LIB = "$(LUA_LIBDIR)\\lua5.1.lib",
CFLAGS = "/MD $(CFLAGS) /I$(LUA_INCDIR)",
},
install_variables = {
LUA_LIBDIR = "$(LIBDIR)",
LUA_DIR = "$(LUADIR)",
BIN_DIR = "$(BINDIR)"
}
}
}
}

View File

@@ -0,0 +1,26 @@
package = "LuaFileSystem"
version = "1.4.2-1"
source = {
url = "http://luaforge.net/frs/download.php/3931/luafilesystem-1.4.2.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 = "module",
modules = { lfs = "src/lfs.c" }
}

View File

@@ -0,0 +1,27 @@
package = "LuaFileSystem"
version = "1.5.0-1"
source = {
url = "http://cloud.github.com/downloads/keplerproject/luafilesystem/luafilesystem-1.5.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 = "module",
modules = { lfs = "src/lfs.c" },
copy_directories = { "doc", "tests" }
}

View File

@@ -0,0 +1,27 @@
package = "LuaFileSystem"
version = "1.6.0-1"
source = {
url = "https://github.com/downloads/keplerproject/luafilesystem/luafilesystem-1.6.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 = "builtin",
modules = { lfs = "src/lfs.c" },
copy_directories = { "doc", "tests" }
}

View File

@@ -0,0 +1,27 @@
package = "LuaFileSystem"
version = "1.6.1-1"
source = {
url = "https://github.com/downloads/keplerproject/luafilesystem/luafilesystem-1.6.1.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 = "builtin",
modules = { lfs = "src/lfs.c" },
copy_directories = { "doc", "tests" }
}

View File

@@ -0,0 +1,27 @@
package = "LuaFileSystem"
version = "1.6.2-1"
source = {
url = "https://github.com/downloads/keplerproject/luafilesystem/luafilesystem-1.6.2.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 = "builtin",
modules = { lfs = "src/lfs.c" },
copy_directories = { "doc", "tests" }
}

View 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)"
}
}
}
}

View File

@@ -0,0 +1,26 @@
package = "LuaFileSystem"
version = "cvs-2"
source = {
url = "git://github.com/keplerproject/luafilesystem.git",
}
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 = "module",
modules = { lfs = "src/lfs.c" }
}

2
src/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*.o
*.so

983
src/lfs.c

File diff suppressed because it is too large Load Diff

5
src/lfs.def Normal file
View File

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

View File

@@ -1,5 +1,11 @@
/*
** LuaFileSystem
** Copyright Kepler Project 2003 (http://www.keplerproject.org/luafilesystem)
**
** $Id: lfs.h,v 1.5 2008/02/19 20:08:23 mascarenhas Exp $
*/
/* Define 'chdir' for systems that do not implement it */
/* $Id: lfs.h,v 1.1 2004/07/29 14:26:33 tomas Exp $ */
#ifdef NO_CHDIR
#define chdir(p) (-1)
#define chdir_error "Function 'chdir' not provided by system"
@@ -7,4 +13,5 @@
#define chdir_error strerror(errno)
#endif
int luaopen_lfs (lua_State *L);

View File

@@ -1,27 +1,31 @@
#!/usr/local/bin/lua
#!/usr/bin/env lua5.1
local tmp = "/tmp"
local sep = "/"
local sep = string.match (package.config, "[^\n]+")
local upper = ".."
require"lfs"
local lfs = require"lfs"
print (lfs._VERSION)
io.write(".")
io.flush()
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
for file in lfs.dir(path) do
if file ~= "." and file ~= ".." then
local f = path..sep..file
print ("\t=> "..f.." <=")
local attr = lfs.attributes (f)
assert (type(attr) == "table")
if attr.mode == "directory" then
attrdir (f)
else
for name, value in pairs(attr) do
print (name, value)
end
end
end
end
end
-- Checking changing directories
@@ -31,32 +35,134 @@ assert (lfs.chdir (upper), "could not change to upper directory")
assert (lfs.chdir (reldir), "could not change back to current directory")
assert (lfs.currentdir() == current, "error trying to change directories")
assert (lfs.chdir ("this couldn't be an actual directory") == nil, "could change to a non-existent directory")
io.write(".")
io.flush()
-- Changing creating and removing directories
local tmpdir = tmp.."/lfs_tmp_dir"
local tmpdir = current..sep.."lfs_tmp_dir"
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
io.write(".")
io.flush()
-- tries to create a directory
assert (lfs.mkdir (tmpdir), "could not make a new directory")
local attrib, errmsg = lfs.attributes (tmpdir)
if not attrib then
error ("could not get attributes of file `"..tmpdir.."':\n"..errmsg)
else
-- Change access time
assert (lfs.touch (tmpdir, 11))
local new_att = assert (lfs.attributes (tmpdir))
assert (new_att.access == 11, "could not set access time")
assert (new_att.modification == 11, "could not set modification time")
-- Change access and modification time
assert (lfs.touch (tmpdir, 33, 22))
local new_att = assert (lfs.attributes (tmpdir))
assert (new_att.access == 33, "could not set access time")
assert (new_att.modification == 22, "could not set modification time")
-- Restore access time to current value
assert (lfs.touch (tmpdir))
new_att = assert (lfs.attributes (tmpdir))
assert (new_att.access == attrib.access)
assert (new_att.modification == attrib.modification)
error ("could not get attributes of file `"..tmpdir.."':\n"..errmsg)
end
assert (os.remove (tmpdir), "could not remove new directory")
assert (lfs.mkdir (tmpdir.."/lfs_tmp_dir") == false, "could create a directory inside a non-existent one")
--
local f = io.open(tmpfile, "w")
f:close()
io.write(".")
io.flush()
-- Change access time
local testdate = os.time({ year = 2007, day = 10, month = 2, hour=0})
assert (lfs.touch (tmpfile, testdate))
local new_att = assert (lfs.attributes (tmpfile))
assert (new_att.access == testdate, "could not set access time")
assert (new_att.modification == testdate, "could not set modification time")
io.write(".")
io.flush()
-- Change access and modification time
local testdate1 = os.time({ year = 2007, day = 10, month = 2, hour=0})
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))
assert (new_att.access == testdate2, "could not set access time")
assert (new_att.modification == testdate1, "could not set modification time")
io.write(".")
io.flush()
-- Checking link (does not work on Windows)
if lfs.link (tmpfile, "_a_link_for_test_", true) then
assert (lfs.attributes"_a_link_for_test_".mode == "file")
assert (lfs.symlinkattributes"_a_link_for_test_".mode == "link")
assert (lfs.link (tmpfile, "_a_hard_link_for_test_"))
assert (lfs.attributes (tmpfile, "nlink") == 2)
assert (os.remove"_a_link_for_test_")
assert (os.remove"_a_hard_link_for_test_")
end
io.write(".")
io.flush()
-- Checking text/binary modes (only has an effect in Windows)
local f = io.open(tmpfile, "w")
local result, mode = lfs.setmode(f, "binary")
assert(result) -- on non-Windows platforms, mode is always returned as "binary"
result, mode = lfs.setmode(f, "text")
assert(result and mode == "binary")
f:close()
io.write(".")
io.flush()
-- Restore access time to current value
assert (lfs.touch (tmpfile, attrib.access, attrib.modification))
new_att = assert (lfs.attributes (tmpfile))
assert (new_att.access == attrib.access)
assert (new_att.modification == attrib.modification)
io.write(".")
io.flush()
-- Remove new file and directory
assert (os.remove (tmpfile), "could not remove new file")
assert (lfs.rmdir (tmpdir), "could not remove new directory")
assert (lfs.mkdir (tmpdir..sep.."lfs_tmp_dir") == nil, "could create a directory inside a non-existent one")
io.write(".")
io.flush()
-- Trying to get attributes of a non-existent file
assert (lfs.attributes ("this couldn't be an actual file") == nil, "could get attributes of a non-existent file")
assert (type(lfs.attributes (upper)) == "table", "couldn't get attributes of upper directory")
io.write(".")
io.flush()
-- Stressing directory iterator
count = 0
for i = 1, 4000 do
for file in lfs.dir (tmp) do
count = count + 1
end
end
io.write(".")
io.flush()
-- Stressing directory iterator, explicit version
count = 0
for i = 1, 4000 do
local iter, dir = lfs.dir(tmp)
local file = dir:next()
while file do
count = count + 1
file = dir:next()
end
assert(not pcall(dir.next, dir))
end
io.write(".")
io.flush()
-- directory explicit close
local iter, dir = lfs.dir(tmp)
dir:close()
assert(not pcall(dir.next, dir))
print"Ok!"

View File

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

View File

@@ -56,7 +56,7 @@ LINK32=link.exe
# 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
PostBuild_Cmds=cd ../bin/vc6 zip.exe luafilesystem-1.2-win32.zip lfs.dll
# End Special Build Tool
!ELSEIF "$(CFG)" == "luafilesystem_dll - Win32 Debug"