summaryrefslogtreecommitdiff
path: root/node/Utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Utils.cpp')
-rw-r--r--node/Utils.cpp29
1 files changed, 27 insertions, 2 deletions
diff --git a/node/Utils.cpp b/node/Utils.cpp
index 7b2a17af..7a4d51ba 100644
--- a/node/Utils.cpp
+++ b/node/Utils.cpp
@@ -29,14 +29,13 @@
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
-#include "Utils.hpp"
-#include "Mutex.hpp"
#if defined(__APPLE__) || defined(__linux__) || defined(linux) || defined(__LINUX__) || defined(__linux)
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <dirent.h>
#endif
#ifdef _WIN32
@@ -46,6 +45,9 @@
#include <sys/stat.h>
#include <openssl/rand.h>
+#include "Utils.hpp"
+#include "Mutex.hpp"
+
namespace ZeroTier {
const char Utils::HEXCHARS[16] = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' };
@@ -214,6 +216,29 @@ const char Utils::base64DecMap[128] = {
static const char *DAY_NAMES[7] = { "Sun","Mon","Tue","Wed","Thu","Fri","Sat" };
static const char *MONTH_NAMES[12] = { "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" };
+std::map<std::string,bool> Utils::listDirectory(const char *path)
+{
+ struct dirent de;
+ struct dirent *dptr;
+ std::map<std::string,bool> r;
+
+ DIR *d = opendir(path);
+ if (!d)
+ return r;
+
+ dptr = (struct dirent *)0;
+ for(;;) {
+ if (readdir_r(d,&de,&dptr))
+ break;
+ if (dptr) {
+ if ((!strcmp(dptr->d_name,"."))&&(!strcmp(dptr->d_name,"..")))
+ r[std::string(dptr->d_name)] = (dptr->d_type == DT_DIR);
+ } else break;
+ }
+
+ return r;
+}
+
std::string Utils::base64Encode(const void *data,unsigned int len)
{
if (!len)