aboutsummaryrefslogtreecommitdiff
path: root/src/FileUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/FileUtil.cpp')
-rw-r--r--src/FileUtil.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/FileUtil.cpp b/src/FileUtil.cpp
index b41808b..d33c94d 100644
--- a/src/FileUtil.cpp
+++ b/src/FileUtil.cpp
@@ -175,7 +175,11 @@ namespace sibs
tinydir_file file;
tinydir_readfile(&dir, &file);
if(_tinydir_strncmp(file.name, TINYDIR_STRING("."), 1) != 0)
- callbackFunc(&file);
+ {
+ bool doContinue = callbackFunc(&file);
+ if(!doContinue)
+ break;
+ }
tinydir_next(&dir);
}
@@ -193,7 +197,11 @@ namespace sibs
tinydir_file file;
tinydir_readfile(&dir, &file);
if(file.is_reg)
- callbackFunc(&file);
+ {
+ bool doContinue = callbackFunc(&file);
+ if(!doContinue)
+ break;
+ }
tinydir_next(&dir);
}
@@ -201,7 +209,7 @@ namespace sibs
}
// TODO: Handle failure (directory doesn't exist, no permission etc)
- void walkDirFilesRecursive(const _tinydir_char_t *directory, FileWalkCallbackFunc callbackFunc)
+ bool walkDirFilesRecursive(const _tinydir_char_t *directory, FileWalkCallbackFunc callbackFunc)
{
tinydir_dir dir;
tinydir_open(&dir, directory);
@@ -211,13 +219,22 @@ namespace sibs
tinydir_file file;
tinydir_readfile(&dir, &file);
if(file.is_reg)
- callbackFunc(&file);
+ {
+ bool doContinue = callbackFunc(&file);
+ if(!doContinue)
+ return false;
+ }
else if(_tinydir_strncmp(file.name, TINYDIR_STRING("."), 1) != 0)
- walkDirFilesRecursive(file.path, callbackFunc);
+ {
+ bool doContinue = walkDirFilesRecursive(file.path, callbackFunc);
+ if(!doContinue)
+ return false;
+ }
tinydir_next(&dir);
}
tinydir_close(&dir);
+ return true;
}
Result<StringView> getFileContent(const _tinydir_char_t *filepath)