1
0

A globally-accessible OS-independent GetDirectoryContents() function for listing all objects in a folder as an AStringList

git-svn-id: http://mc-server.googlecode.com/svn/trunk@433 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
madmaxoft@gmail.com
2012-03-25 14:24:51 +00:00
parent 534e221316
commit ba5b6ca751
6 changed files with 81 additions and 85 deletions

View File

@@ -16,7 +16,7 @@ extern "C"
#include "ManualBindings.h"
#ifdef _WIN32
#include "wdirent.h"
// #include "wdirent.h"
#else
#include <dirent.h>
#endif
@@ -59,38 +59,32 @@ bool cPlugin_NewLua::Initialize()
std::string PluginPath = std::string("Plugins/") + m_Directory + "/";
// Load all files for this plugin, and execute them
DIR* dp;
struct dirent *entry;
if(dp = opendir( PluginPath.c_str() ))
AStringList Files = GetDirectoryContents(PluginPath.c_str());
for (AStringList::const_iterator itr = Files.begin(); itr != Files.end(); ++itr)
{
while(entry = readdir(dp))
if (itr->rfind(".lua") == AString::npos)
{
std::string FileName = entry->d_name;
if( FileName.find(".lua") != std::string::npos )
{
std::string Path = PluginPath + FileName;
int s = luaL_loadfile(m_LuaState, Path.c_str() );
if( report_errors( m_LuaState, s ) )
{
LOGERROR("Can't load plugin %s because of an error in file %s", m_Directory.c_str(), Path.c_str() );
lua_close( m_LuaState );
m_LuaState = 0;
return false;
}
s = lua_pcall(m_LuaState, 0, LUA_MULTRET, 0);
if( report_errors( m_LuaState, s ) )
{
LOGERROR("Error in plugin %s in file %s", m_Directory.c_str(), Path.c_str() );
lua_close( m_LuaState );
m_LuaState = 0;
return false;
}
}
continue;
}
AString Path = PluginPath + *itr;
int s = luaL_loadfile(m_LuaState, Path.c_str() );
if( report_errors( m_LuaState, s ) )
{
LOGERROR("Can't load plugin %s because of an error in file %s", m_Directory.c_str(), Path.c_str() );
lua_close( m_LuaState );
m_LuaState = 0;
return false;
}
closedir( dp );
}
s = lua_pcall(m_LuaState, 0, LUA_MULTRET, 0);
if( report_errors( m_LuaState, s ) )
{
LOGERROR("Error in plugin %s in file %s", m_Directory.c_str(), Path.c_str() );
lua_close( m_LuaState );
m_LuaState = 0;
return false;
}
} // for itr - Files[]
// Call intialize function
if( !PushFunction("Initialize") )
@@ -101,7 +95,6 @@ bool cPlugin_NewLua::Initialize()
}
tolua_pushusertype(m_LuaState, this, "cPlugin_NewLua");
if( !CallFunction(1, 1, "Initialize") )
{