#pragma once #include #include #include #include #include #include #if __cplusplus >= 201703L #include #endif #include "String.h" class Utils { public: static int max(int a, int b) { return (a > b) ? a : b; } static int min(int a, int b) { return (a > b) ? b : a; } static void Mkdir(const String& path) { #if __cplusplus >= 201703L std::filesystem::create_directory(path.getCharArray()); #else mkdir(path.getCharArray(), 0777); #endif } //https://stackoverflow.com/questions/4568681/using-chmod-in-a-c-program static void Chmod(const String& path) { #if __cplusplus >= 201703L std::filesystem::permissions(path.getCharArray(), std::filesystem::perms::all); #else String command = "chmod 777 " + String::DQuotes(path); int i=system(command.getCharArray()); printf("chmod 777 '%s' return code = %d\n", path.getCharArray(), i); #endif } //https://stackoverflow.com/questions/230062/whats-the-best-way-to-check-if-a-file-exists-in-c static bool Exists(const String& path) { #if __cplusplus >= 201703L return std::filesystem::exists(path.getCharArray()); #else struct stat buffer; return (stat(path.getCharArray(), &buffer) == 0); #endif } //in seconds static void Sleep(int s) { std::chrono::seconds timespan(s); std::this_thread::sleep_for(timespan); } static void Copy(const String& src, const String& dst) { #if __cplusplus >= 201703L std::filesystem::copy(src.getCharArray(), dst.getCharArray()); #else String command = "cp " + String::DQuotes(src) + " " + String::DQuotes(dst); int i = system(command.getCharArray()); printf("cp '%s' return code = %d\n",src.getCharArray(), i); #endif } static void CopyDirectory(const String& src, const String& dst) { #if __cplusplus >= 201703L std::filesystem::copy((src+ "/.").getCharArray(), dst.getCharArray(), std::filesystem::copy_options::recursive); #else String command = "cp -r " + String::DQuotes(src + "/.") + " " + String::DQuotes(dst); int i = system(command.getCharArray()); printf("cp -r '%s' return code = %d\n",src.getCharArray(),i); #endif } static time_t getAbsoluteTime() { return time(NULL); } static String getDate() { auto ttime = time(NULL); String res(ctime(&ttime)); return res; } };