Added freetype2 support.
[fltk_mvc_template.git] / _template / src / FSHelper.cxx
index b727d35..238b66d 100644 (file)
@@ -11,6 +11,7 @@
 #include <fstream>
 #include <dirent.h>
 #include <sys/types.h>
+#include <FL/fl_utf8.h>
 #include <unistd.h>
 #include <sys/stat.h>
 #include <cstring>
@@ -66,11 +67,7 @@ void FSHelper::copyFile(const std::string &src, const std::string &dest)
 void FSHelper::makeDir(const std::string &dir)
 {
     if(!dirExists(dir))
-#if defined(_WIN32)
-        if(mkdir(dir.c_str()) < 0)
-#else
-        if(mkdir(dir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) < 0)
-#endif
+        if(fl_mkdir(dir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) < 0)
             throw std::string("Failed to create directory: " + dir);
 
 }
@@ -137,8 +134,6 @@ void FSHelper::copyDir(const std::string &src, const std::string &dest)
     for(auto inFile : files)
     {
         File outFile = inFile;
-        unsigned int idx = 0;
-
         // ersetze Qellordner mit zielordner
         outFile.first.replace(outFile.first.find(from), from.length(), to);
         try
@@ -169,7 +164,7 @@ bool FSHelper::validFileName(const std::string &fName)
                             ';', ':', '+', '=', '*', '/', '<', '>', '?', ',', '[', ']', '{', '}'
                           };
 
-    int pos = fName.find_first_of(invalidChars, 0, sizeof(invalidChars));
+    unsigned int pos = fName.find_first_of(invalidChars, 0, sizeof(invalidChars));
     if (pos != std::string::npos)
         return false;
 
@@ -182,7 +177,7 @@ bool FSHelper::dirExists(const std::string &directory)
 
     // überprüfe existenz
     struct stat info;
-    if( stat( dir.c_str(), &info ) != 0 )
+    if( fl_stat( dir.c_str(), &info ) != 0 )
         return false;
     if( info.st_mode & S_IFDIR )
         return true;
@@ -282,11 +277,37 @@ bool FSHelper::listDirsRecursive(const std::string &path, std::vector<std::strin
     return true;
 }
 
+std::vector<std::string> FSHelper::listDirsNonRecursive(const std::string &path,const bool showHiddenDirs)
+{
+    std::vector<std::string> folders;
+    std::string dir = addDirLastSlash(path);
+    DIR *dpdf;
+    struct dirent *epdf;
+    dpdf = opendir(dir.c_str());
+    if(dpdf != nullptr)
+    {
+        while((epdf = readdir(dpdf)) != nullptr)
+        {
+            struct stat s;
+
+            stat((dir + std::string(epdf->d_name)).c_str(), &s);
+            if(showHiddenDirs ? (S_ISDIR(s.st_mode) && std::string(epdf->d_name) != ".." && std::string(epdf->d_name) != "." ) :
+                    (S_ISDIR(s.st_mode) && strstr(epdf->d_name,"..") == NULL && strstr(epdf->d_name,".") == NULL ))
+            {
+                if(!(std::find(folders.begin(), folders.end(), dir+epdf->d_name) != folders.end()))
+                    folders.push_back(addDirLastSlash(dir+epdf->d_name));
+            }
+        }
+    }
+    closedir(dpdf);
+    return folders;
+}
+
 std::string FSHelper::getCurrentWorkingDir()
 {
     char temp[PATH_MAX];
 
-    if(getcwd(temp, PATH_MAX))
+    if(fl_getcwd(temp, PATH_MAX))
 #if defined(_WIN32)
         return convertPathToWindows(temp);
 #else
@@ -401,11 +422,6 @@ void FSHelper::executeCommand(const std::string &path, const std::string &comman
     // String vector zu char array
     std::vector<char*> charParams;
 
-
-
-    if(!log.empty())
-        FILE* logFile = freopen(log.c_str(),"a",stdout);
-
     // Param Array muss wie folgt aufgebaut sein:
     // 0 -> command
     // 1 -> param 1
@@ -441,10 +457,7 @@ void FSHelper::executeCommand(const std::string &path, const std::string &comman
     charParams.emplace_back(nullptr); //Letztes element muss ein nullpointer sein
 
     int status;
-    pid_t parent_pid;
     pid_t child_pid;
-    parent_pid = getpid();
-
     child_pid = fork();
     switch(child_pid)
     {
@@ -482,7 +495,7 @@ void FSHelper::executeCommand(const std::string &path, const std::string &comman
         delete [] curParam;
 
     // Logfile schliessen
-    fcloseall();
+    //fcloseall();
 
     if(!WIFEXITED(status))
         throw std::string("Could not execute command: " + command);