util.pposix: Fix error reporting from posix_fallocate, it doesn't use errno (thanks...
authorKim Alvefur <zash@zash.se>
Thu, 24 Apr 2014 22:36:01 +0000 (00:36 +0200)
committerKim Alvefur <zash@zash.se>
Thu, 24 Apr 2014 22:36:01 +0000 (00:36 +0200)
util-src/pposix.c

index 4fb1fb56b5346f062d9310b70a8788c177320a09..a8654995a5daa147049ac782b49776e6167afaa4 100644 (file)
@@ -664,6 +664,7 @@ int lc_meminfo(lua_State* L)
 #if _XOPEN_SOURCE >= 600 || _POSIX_C_SOURCE >= 200112L || defined(_GNU_SOURCE)
 int lc_fallocate(lua_State* L)
 {
+       int ret;
        off_t offset, len;
        FILE *f = *(FILE**) luaL_checkudata(L, 1, LUA_FILEHANDLE);
        if (f == NULL)
@@ -691,7 +692,8 @@ int lc_fallocate(lua_State* L)
 #warning Note that posix_fallocate() will still be used on filesystems that dont support fallocate()
 #endif
 
-       if(posix_fallocate(fileno(f), offset, len) == 0)
+       ret = posix_fallocate(fileno(f), offset, len);
+       if(ret == 0)
        {
                lua_pushboolean(L, 1);
                return 1;
@@ -699,7 +701,7 @@ int lc_fallocate(lua_State* L)
        else
        {
                lua_pushnil(L);
-               lua_pushstring(L, strerror(errno));
+               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 */
                ftruncate(fileno(f), offset);