Commit Graph

135 Commits

Author SHA1 Message Date
Hisham Muhammad
d68db4ca79 accept high-precision timestamps in lfs.touch 2021-01-23 15:49:05 -03:00
Hisham Muhammad
6adf412a25 return higher precision times in lfs.attributes 2021-01-23 15:49:05 -03:00
Hisham Muhammad
7c6e1b013c Release 1.8.0 2020-04-22 22:16:42 -03:00
Hisham Muhammad
842505b6a3 Lua 5.4: use __close to close dir if you break the iterator 2020-04-22 11:30:28 -03:00
Hisham Muhammad
3e879ffba1 indent -kr -nut -i2 src/lfs.c src/lfs.h 2020-04-22 11:30:28 -03:00
云风
a5336d294d Use CREATE_ALWAYS instead of CREATE_NEW 2020-04-21 18:36:43 -03:00
Hisham Muhammad
1a61e5284d win32: strip UNC prefix if present 2020-04-21 13:45:50 -03:00
Hisham Muhammad
7cb7d86dc4 win32 lstat: if it's not a link, just do stat 2020-04-21 13:45:50 -03:00
Hisham Muhammad
94700f7c18 win32: obtain symlink attributes 2020-04-21 13:45:50 -03:00
Eroica
53d2acc517 Add Windows compatibility for lfs.link
Co-Authored-By: Hisham Muhammad <hisham@gobolinux.org>
2020-04-21 13:45:50 -03:00
Peter Melnichenko
04ba8d686a Support Lua 5.4 2020-04-20 18:50:38 -03:00
James McCoy
04bdaf9a1e Fallback to _POSIX_PATH_MAX when MAXPATHLEN isn't available (#130)
On systems where MAXPATHLEN isn't defined, like GNU/Hurd, use
_POSIX_PATH_MAX as the starting size for the getcwd() buffer.
2019-10-29 16:08:55 -04:00
Hisham Muhammad
884b52a3b2 Fix memory leak in case of realloc failure. (#102)
Fixes #101.
2017-11-27 14:03:38 -02:00
Hisham Muhammad
a23cadf009 Fix _VERSION entry
Thanks Milind Gupta for noting!
2017-09-15 20:04:43 -03:00
Peter Melnichenko
d399961536 Merge branch '1.7' 2017-09-14 12:15:58 +03:00
Peter Melnichenko
dd6911ef15 Update copyright year [ci skip] 2017-09-14 12:10:39 +03:00
Peter Melnichenko
a84d81bc52 Fix compilation warning for LuaJIT 2.1
Do not redefine or reimplement standard Lua C API function
luaL_newlib, use another name (new_lib) instead.
2017-09-14 12:01:00 +03:00
NiteHawk
3c4e563d9c Dynamically size getcwd() buffer in get_dir function (#84)
* Dynamically size getcwd() buffer in get_dir function

This should fix issue 42.

* Fixup: Properly respect NO_GETCWD

* Fixup: Get rid of getcwd_error, handle NO_GETCWD in a single place
2016-10-14 15:46:54 -07:00
Peter Melnichenko
50919ed69f Fix lfs.attributes and lfs.symlinkattributes extra argument handling
When the second argument is not a string, _file_info() wants to
ensure that there is a table on top of the stack: the second argument
or a new table. If a new table is pushed it's created on top immediately,
but if a table is passed as the second argument it can be followed
by extra arguments, with the last one ending up being used as a table,
causing a crash. The fix is to remove any potential extra arguments
using `lua_settop(L, 2)`.

Also added a few tests for this case. Ref #80.
2016-08-25 18:31:09 +03:00
NiteHawk
32b355a990 Add a 'target' field for symlinkattributes.
It returns the resolved path of the symlink.

Original version by Hisham <hisham@gobolinux.org>, modified to
use a different strategy for sizing the readlink() buffer.
2016-07-16 15:35:27 +02:00
Peter Melnichenko
a332bde584 Merge branch 'master' into 1.7 2016-06-21 10:48:11 +03:00
Eric Cosatto
6e0dc7b27c Fix export of luaopen_lfs on Windows (#74)
* Make lfs export luaopen_lfs under Windows
2016-06-01 17:52:07 -03:00
Peter Melnichenko
b37e88b3d6 Return errno from lfs.attributes on error 2016-05-05 12:39:17 +03:00
Peter Melnichenko
8f167ef1de Return errno from lfs.touch on error 2016-05-05 12:39:17 +03:00
Peter Melnichenko
8b85d257a6 Return errno from lfs.rmdir on error 2016-05-05 12:39:17 +03:00
Peter Melnichenko
d186dda4d7 Return errno from lfs.mkdir on error
Change pushresult() to return true on success.
Change make_link to keep returning 0.
2016-05-05 12:38:28 +03:00
Peter Melnichenko
1937ba848b Include strerror(errno) into error message in lfs.attributes 2016-05-05 12:12:07 +03:00
Peter Melnichenko
732f9e9309 Add attribute name to error on invalid attribute in lfs.attributes 2016-05-05 12:10:04 +03:00
Peter Melnichenko
03e01ff953 Document passing table as second argument to lfs.attributes 2016-05-04 18:25:06 +03:00
Peter Melnichenko
3789521838 Refactor set_info() using lua_setfield
About indentation: currently parts of lfs.c use 2 spaces
and parts use 8. It would be nice to slowly switch to one
of styles over some time, as code is being touched here and there.
2 spaces seem preferrable as it's what Lua itself uses.
2016-05-04 13:40:30 +03:00
Peter Melnichenko
5220452e3b Update top level comments 2016-05-04 13:35:55 +03:00
Peter Melnichenko
12d1f260f3 Fix a warning when compiling as C++11 2016-05-04 13:05:19 +03:00
Hisham Muhammad
436bc441fa Merge pull request #68 from mpeterv/setmode-refactor
Minor refactoring of setmode
2016-04-25 16:56:26 -03:00
Peter Melnichenko
c1e9c70214 Don't pass Lua state to lfs_setmode, it's always unused 2016-04-25 15:42:54 +03:00
Peter Melnichenko
655ec8baa3 Use pusherror in lfs_g_setmode 2016-04-25 15:36:37 +03:00
Peter Melnichenko
695def20ef Get rid of goto in lfs_g_setmode 2016-04-25 15:33:12 +03:00
NiteHawk
ba6d0e1ad9 Have make_link() use pushresult() instead of pusherror() on Windows
The pushresult(L, -1, ...) call will delegate to pusherror() anyway,
but this avoids the "Unused static" warning for pushresult.

Also take care of assigning something meaningful to `errno`, as
strerror(errno) is used for constructing the Lua error message.

Fixes #65
2016-03-25 13:07:13 +01:00
Philipp Janda
c315150aff Fix detection of closed files on Lua 5.2/5.3.
Lua 5.2 changed the protocol on how to represent closed files: Lua 5.1
sets the file pointer to NULL, Lua 5.2 sets the close function pointer
to NULL (a NULL file pointer now signals an incompletely constructed
object).
Also `luaL_checkudata` never returns NULL, it raises an error instead
if you have an invalid value (no userdata/not correct userdata type).
2015-06-14 22:44:46 +02:00
Hisham Muhammad
75eed716c6 Merge branch 'master' of git://github.com/keplerproject/luafilesystem 2015-03-19 14:52:14 -03:00
Alex
25ecbd31db A few minor things fixed which prevented compilation of LuaFileSystem as C++ code 2015-02-15 08:20:50 +03:00
Hisham Muhammad
8014725009 Prepare for release 1.6.3 2015-01-15 16:58:20 -02:00
Hisham Muhammad
0a82aae451 Cleanup use of explicit \0 2015-01-15 16:50:01 -02:00
Andrew Starks
e798c4f07f Updated to support Lua 5.3. Fixed to supress warnings in windows. Removed extra null byte off of const string (windows only). 2015-01-15 12:39:51 -06:00
Hisham Muhammad
5422c7ac6b Merge pull request #46 from moteus/master
Add. Travis files.
2014-11-12 15:57:35 -02:00
Alexey Melnichuk
8f2949974a Fix. Support Lua 5.3.beta 2014-11-12 14:51:55 +04:00
Mikhael-Danilov
40171f36b3 Add LFS_DO_NOT_USE_LARGE_FILE flag
Which disables LARGE_FILE support
2014-09-25 21:26:12 +04:00
Alexey Melnichuk
ebe20b66f0 Fix. Compile with MSVC and with gcc without -std=c99 2014-08-13 18:18:42 +05:00
Stefan Hoffmann
4437e19455 Fix lfs.attributes(file, 'blksize')
fs.attributes(file, 'blksize') and fs.attributes(file, 'blocks) return
the wrong values.
Compare the whole attribute name instead of the first char and remove
buggy special casing with wrong indexes into the member array.
2014-08-09 12:33:33 +02: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
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