From bf24f6fc48b4eebb06cdcd7029d1d31d4c6028dd Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 8 Dec 2017 00:49:15 +0100 Subject: Added loading of project file and file validations Next up: parse project.conf file --- src/FileUtil.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/FileUtil.cpp (limited to 'src/FileUtil.cpp') diff --git a/src/FileUtil.cpp b/src/FileUtil.cpp new file mode 100644 index 0000000..511a324 --- /dev/null +++ b/src/FileUtil.cpp @@ -0,0 +1,56 @@ +#include "../include/FileUtil.hpp" +#include + +using namespace std; + +namespace sibs +{ + FileType getFileType(const char *path) + { + tinydir_file file; + if(tinydir_file_open(&file, path) == 0) + { + return file.is_dir ? FileType::DIRECTORY : FileType::REGULAR; + } + else + { + return FileType::FILE_NOT_FOUND; + } + } + + void walkDirectory(const char *directory, FileWalkCallbackFunc callbackFunc) + { + tinydir_dir dir; + tinydir_open(&dir, directory); + + while (dir.has_next) + { + tinydir_file file; + tinydir_readfile(&dir, &file); + callbackFunc(&file); + tinydir_next(&dir); + } + + tinydir_close(&dir); + } + + Result getFileContent(const char *filepath) + { + FILE *file = fopen(filepath, "rb"); + if(!file || errno != 0) + { + perror(filepath); + return Result::Err("Failed to open file"); + } + + fseek(file, 0, SEEK_END); + size_t fileSize = ftell(file); + fseek(file, 0, SEEK_SET); + + string result; + result.resize(fileSize); + fread(&result[0], 1, fileSize, file); + fclose(file); + return Result::Ok(std::move(result)); + } +} \ No newline at end of file -- cgit v1.2.3