aboutsummaryrefslogtreecommitdiffstats
path: root/util-src/pposix.c
diff options
context:
space:
mode:
Diffstat (limited to 'util-src/pposix.c')
-rw-r--r--util-src/pposix.c61
1 files changed, 1 insertions, 60 deletions
diff --git a/util-src/pposix.c b/util-src/pposix.c
index a68aa89d..e70a9d7f 100644
--- a/util-src/pposix.c
+++ b/util-src/pposix.c
@@ -13,7 +13,7 @@
* POSIX support functions for Lua
*/
-#define MODULE_VERSION "0.3.7"
+#define MODULE_VERSION "0.4.0"
#if defined(__linux__)
@@ -730,64 +730,6 @@ int lc_meminfo(lua_State *L) {
}
#endif
-/* File handle extraction blatantly stolen from
- * https://github.com/rrthomas/luaposix/blob/master/lposix.c#L631
- * */
-
-int lc_fallocate(lua_State *L) {
- int ret;
- off_t offset, len;
- FILE *f = *(FILE **) luaL_checkudata(L, 1, LUA_FILEHANDLE);
-
- if(f == NULL) {
- return luaL_error(L, "attempt to use a closed file");
- }
-
- offset = luaL_checkinteger(L, 2);
- len = luaL_checkinteger(L, 3);
-
-#if defined(__linux__)
- errno = 0;
- ret = fallocate(fileno(f), FALLOC_FL_KEEP_SIZE, offset, len);
-
- if(ret == 0) {
- lua_pushboolean(L, 1);
- return 1;
- }
-
- /* Some old versions of Linux apparently use the return value instead of errno */
- if(errno == 0) {
- errno = ret;
- }
-
- if(errno != ENOSYS && errno != EOPNOTSUPP) {
- lua_pushnil(L);
- lua_pushstring(L, strerror(errno));
- return 2;
- }
-
-#endif
-
- ret = posix_fallocate(fileno(f), offset, len);
-
- if(ret == 0) {
- lua_pushboolean(L, 1);
- return 1;
- } else {
- lua_pushnil(L);
- lua_pushstring(L, strerror(ret));
-
- /* posix_fallocate() can leave a bunch of NULs at the end, so we cut that
- * this assumes that offset == length of the file */
- if(ftruncate(fileno(f), offset) != 0) {
- lua_pushstring(L, strerror(errno));
- return 3;
- }
-
- return 2;
- }
-}
-
/*
* Append some data to a file handle
* Attempt to allocate space first
@@ -889,7 +831,6 @@ int luaopen_util_pposix(lua_State *L) {
{ "meminfo", lc_meminfo },
#endif
- { "fallocate", lc_fallocate },
{ "atomic_append", lc_atomic_append },
{ NULL, NULL }