summaryrefslogtreecommitdiff
path: root/osdep
diff options
context:
space:
mode:
Diffstat (limited to 'osdep')
-rw-r--r--osdep/OSUtils.cpp6
-rw-r--r--osdep/OSUtils.hpp5
2 files changed, 5 insertions, 6 deletions
diff --git a/osdep/OSUtils.cpp b/osdep/OSUtils.cpp
index 33e143da..fd5efed0 100644
--- a/osdep/OSUtils.cpp
+++ b/osdep/OSUtils.cpp
@@ -73,7 +73,7 @@ bool OSUtils::redirectUnixOutputs(const char *stdoutPath,const char *stderrPath)
}
#endif // __UNIX_LIKE__
-std::vector<std::string> OSUtils::listDirectory(const char *path)
+std::vector<std::string> OSUtils::listDirectory(const char *path,bool includeDirectories)
{
std::vector<std::string> r;
@@ -82,7 +82,7 @@ std::vector<std::string> OSUtils::listDirectory(const char *path)
WIN32_FIND_DATAA ffd;
if ((hFind = FindFirstFileA((std::string(path) + "\\*").c_str(),&ffd)) != INVALID_HANDLE_VALUE) {
do {
- if ((strcmp(ffd.cFileName,"."))&&(strcmp(ffd.cFileName,".."))&&((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0))
+ if ( (strcmp(ffd.cFileName,".")) && (strcmp(ffd.cFileName,"..")) && (((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)||(((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)&&(includeDirectories))) )
r.push_back(std::string(ffd.cFileName));
} while (FindNextFileA(hFind,&ffd));
FindClose(hFind);
@@ -98,7 +98,7 @@ std::vector<std::string> OSUtils::listDirectory(const char *path)
if (readdir_r(d,&de,&dptr))
break;
if (dptr) {
- if ((strcmp(dptr->d_name,"."))&&(strcmp(dptr->d_name,".."))&&(dptr->d_type != DT_DIR))
+ if ((strcmp(dptr->d_name,"."))&&(strcmp(dptr->d_name,".."))&&((dptr->d_type != DT_DIR)||(includeDirectories)))
r.push_back(std::string(dptr->d_name));
} else break;
}
diff --git a/osdep/OSUtils.hpp b/osdep/OSUtils.hpp
index 2e007ef2..b84d5d2d 100644
--- a/osdep/OSUtils.hpp
+++ b/osdep/OSUtils.hpp
@@ -104,12 +104,11 @@ public:
/**
* List a directory's contents
*
- * This returns only files, not sub-directories.
- *
* @param path Path to list
+ * @param includeDirectories If true, include directories as well as files
* @return Names of files in directory (without path prepended)
*/
- static std::vector<std::string> listDirectory(const char *path);
+ static std::vector<std::string> listDirectory(const char *path,bool includeDirectories = false);
/**
* Clean a directory of files whose last modified time is older than this