From aa7ec54121832a89fb7f7ed629f761a702200673 Mon Sep 17 00:00:00 2001 From: Bart van Strien Date: Thu, 6 Jan 2011 22:54:51 +0100 Subject: [PATCH] Add love.filesystem.getLastModified (issue #163) --- src/modules/filesystem/physfs/Filesystem.cpp | 14 ++++++++++++++ src/modules/filesystem/physfs/Filesystem.h | 2 ++ src/modules/filesystem/physfs/wrap_Filesystem.cpp | 6 ++++++ src/modules/filesystem/physfs/wrap_Filesystem.h | 1 + 4 files changed, 23 insertions(+) diff --git a/src/modules/filesystem/physfs/Filesystem.cpp b/src/modules/filesystem/physfs/Filesystem.cpp index 595b716b4..915782e0f 100644 --- a/src/modules/filesystem/physfs/Filesystem.cpp +++ b/src/modules/filesystem/physfs/Filesystem.cpp @@ -557,6 +557,20 @@ namespace physfs } } + int Filesystem::getLastModified(lua_State * L) + { + const char * filename = luaL_checkstring(L, 1); + int64_t time = PHYSFS_getLastModTime(filename); + if (time == -1) + { + lua_pushnil(L); + lua_pushstring(L, "Could not determine file modification date."); + return 2; + } + lua_pushnumber(L, time); + return 1; + } + } // physfs } // filesystem } // love diff --git a/src/modules/filesystem/physfs/Filesystem.h b/src/modules/filesystem/physfs/Filesystem.h index 3a5018b86..94e5bf32f 100644 --- a/src/modules/filesystem/physfs/Filesystem.h +++ b/src/modules/filesystem/physfs/Filesystem.h @@ -278,6 +278,8 @@ namespace physfs **/ int load(lua_State * L); + int getLastModified(lua_State * L); + }; // Filesystem } // physfs diff --git a/src/modules/filesystem/physfs/wrap_Filesystem.cpp b/src/modules/filesystem/physfs/wrap_Filesystem.cpp index d2e4bbcba..fe6ef0d6b 100644 --- a/src/modules/filesystem/physfs/wrap_Filesystem.cpp +++ b/src/modules/filesystem/physfs/wrap_Filesystem.cpp @@ -221,6 +221,11 @@ namespace physfs return instance->load(L); } + int w_getLastModified(lua_State * L) + { + return instance->getLastModified(L); + } + int loader(lua_State * L) { const char * filename = lua_tostring(L, -1); @@ -297,6 +302,7 @@ namespace physfs { "enumerate", w_enumerate }, { "lines", w_lines }, { "load", w_load }, + { "getLastModified", w_getLastModified }, { "newFileData", w_newFileData }, { 0, 0 } }; diff --git a/src/modules/filesystem/physfs/wrap_Filesystem.h b/src/modules/filesystem/physfs/wrap_Filesystem.h index c1990c5f2..f11b5c48e 100644 --- a/src/modules/filesystem/physfs/wrap_Filesystem.h +++ b/src/modules/filesystem/physfs/wrap_Filesystem.h @@ -57,6 +57,7 @@ namespace physfs int w_enumerate(lua_State * L); int w_lines(lua_State * L); int w_load(lua_State * L); + int w_getLastModified(lua_State * L); int loader(lua_State * L); extern "C" LOVE_EXPORT int luaopen_love_filesystem(lua_State * L);