diff options
author | dec05eba <dec05eba@protonmail.com> | 2017-12-09 01:14:41 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2017-12-09 01:14:47 +0100 |
commit | fb2072deb3e50afdb062570a3a80ec1afb5bfb56 (patch) | |
tree | 44baddd61a9aac3ead96ac8a6fab95d087d0bdd7 /src/FileUtil.cpp | |
parent | bf24f6fc48b4eebb06cdcd7029d1d31d4c6028dd (diff) |
Finished project config file parsing
Diffstat (limited to 'src/FileUtil.cpp')
-rw-r--r-- | src/FileUtil.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/FileUtil.cpp b/src/FileUtil.cpp index 511a324..30fe03d 100644 --- a/src/FileUtil.cpp +++ b/src/FileUtil.cpp @@ -18,7 +18,7 @@ namespace sibs } } - void walkDirectory(const char *directory, FileWalkCallbackFunc callbackFunc) + void walkDirFiles(const char *directory, FileWalkCallbackFunc callbackFunc) { tinydir_dir dir; tinydir_open(&dir, directory); @@ -27,30 +27,39 @@ namespace sibs { tinydir_file file; tinydir_readfile(&dir, &file); - callbackFunc(&file); + if(file.is_reg) + callbackFunc(&file); + else if(_tinydir_strcmp(file.name, ".") != 0 && _tinydir_strcmp(file.name, "..") != 0) + walkDirFiles(file.path, callbackFunc); tinydir_next(&dir); } tinydir_close(&dir); } - Result<string> getFileContent(const char *filepath) + Result<StringView> getFileContent(const char *filepath) { FILE *file = fopen(filepath, "rb"); if(!file || errno != 0) { perror(filepath); - return Result<string>::Err("Failed to open file"); + return Result<StringView>::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); + char *result = (char*)malloc(fileSize + 1); + if(!result) + { + std::string errMsg = "Failed to load file content from file: "; + errMsg += filepath; + throw std::runtime_error(errMsg); + } + result[fileSize] = '\0'; + fread(result, 1, fileSize, file); fclose(file); - return Result<string>::Ok(std::move(result)); + return Result<StringView>::Ok(StringView(result, fileSize)); } }
\ No newline at end of file |