diff options
author | madmaxoft <github@xoft.cz> | 2013-09-18 18:43:03 +0200 |
---|---|---|
committer | madmaxoft <github@xoft.cz> | 2013-09-18 20:40:09 +0200 |
commit | edd7363eddc9f6ef6a7f798a092500b328d5a7f3 (patch) | |
tree | 83055f891681c9e774ec5bd8a3bee7b514f2839b | |
parent | cPluginManager:BindConsoleCommand can be called with the dot operator, too. (diff) | |
download | cuberite-edd7363eddc9f6ef6a7f798a092500b328d5a7f3.tar cuberite-edd7363eddc9f6ef6a7f798a092500b328d5a7f3.tar.gz cuberite-edd7363eddc9f6ef6a7f798a092500b328d5a7f3.tar.bz2 cuberite-edd7363eddc9f6ef6a7f798a092500b328d5a7f3.tar.lz cuberite-edd7363eddc9f6ef6a7f798a092500b328d5a7f3.tar.xz cuberite-edd7363eddc9f6ef6a7f798a092500b328d5a7f3.tar.zst cuberite-edd7363eddc9f6ef6a7f798a092500b328d5a7f3.zip |
-rw-r--r-- | source/OSSupport/File.cpp | 14 | ||||
-rw-r--r-- | source/OSSupport/File.h | 3 | ||||
-rw-r--r-- | source/PluginManager.cpp | 6 |
3 files changed, 20 insertions, 3 deletions
diff --git a/source/OSSupport/File.cpp b/source/OSSupport/File.cpp index cc0916711..871d9fb94 100644 --- a/source/OSSupport/File.cpp +++ b/source/OSSupport/File.cpp @@ -287,6 +287,20 @@ bool cFile::Rename(const AString & a_OrigFileName, const AString & a_NewFileName +bool cFile::IsFolder(const AString & a_Path) +{ + #ifdef _WIN32 + return ((GetFileAttributes(a_Path.c_str()) & FILE_ATTRIBUTE_DIRECTORY) != 0); + #else + struct stat st; + return ((stat(a_Path.c_str(), &st) == 0) && S_ISDIR(st.st_mode)); + #endif +} + + + + + int cFile::Printf(const char * a_Fmt, ...) { AString buf; diff --git a/source/OSSupport/File.h b/source/OSSupport/File.h index 8a057afa8..d4ea0d3a8 100644 --- a/source/OSSupport/File.h +++ b/source/OSSupport/File.h @@ -99,6 +99,9 @@ public: /// Renames a file, returns true if successful. May fail if dest already exists (libc-dependant)! static bool Rename(const AString & a_OrigFileName, const AString & a_NewFileName); + /// Returns true if the specified path is a folder + static bool IsFolder(const AString & a_Path); + int Printf(const char * a_Fmt, ...); private: diff --git a/source/PluginManager.cpp b/source/PluginManager.cpp index 93ee71926..e7cac457c 100644 --- a/source/PluginManager.cpp +++ b/source/PluginManager.cpp @@ -75,14 +75,14 @@ void cPluginManager::FindPlugins(void) AStringList Files = GetDirectoryContents(PluginsPath.c_str()); for (AStringList::const_iterator itr = Files.begin(); itr != Files.end(); ++itr) { - if (itr->rfind(".") != AString::npos) + if (!cFile::IsFolder(*itr)) { - // Ignore files, we only want directories + // We only want folders continue; } // Add plugin name/directory to the list - if (m_Plugins.find( *itr ) == m_Plugins.end()) + if (m_Plugins.find(*itr) == m_Plugins.end()) { m_Plugins[ *itr ] = NULL; } |