From d7409bbc5e24267b275692b48116254d842d3821 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Thu, 18 Feb 2021 11:38:44 +0100 Subject: fstree_from_file: Implement basic file globbing The base path is passed to the fstree_from_file function and in turn to the individual callbacks. The line parsing function is modified to allow '*' as mode, uid and gid for specifically marked callbacks. A glob callback is added that internally uses the fstree_from_dir scanning functions in combination with a filter callback. Directory scanning flags are parsed from the extra arguments before interpreting it as a path fragment. Signed-off-by: David Oberhollenzer --- tests/fstree_from_dir.c | 13 +++++++------ tests/fstree_fuzz.c | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) (limited to 'tests') diff --git a/tests/fstree_from_dir.c b/tests/fstree_from_dir.c index 8e08aeb..af48d4d 100644 --- a/tests/fstree_from_dir.c +++ b/tests/fstree_from_dir.c @@ -321,7 +321,8 @@ int main(void) /* recursively scan into root */ TEST_ASSERT(fstree_init(&fs, NULL) == 0); - TEST_ASSERT(fstree_from_dir(&fs, fs.root, TEST_PATH, 0) == 0); + TEST_ASSERT(fstree_from_dir(&fs, fs.root, TEST_PATH, + NULL, NULL, 0) == 0); fstree_post_process(&fs); check_hierarchy(fs.root, true); @@ -329,8 +330,8 @@ int main(void) /* non-recursively scan into root */ TEST_ASSERT(fstree_init(&fs, NULL) == 0); - TEST_ASSERT(fstree_from_dir(&fs, fs.root, - TEST_PATH, DIR_SCAN_NO_RECURSION) == 0); + TEST_ASSERT(fstree_from_dir(&fs, fs.root, TEST_PATH, NULL, NULL, + DIR_SCAN_NO_RECURSION) == 0); fstree_post_process(&fs); check_hierarchy(fs.root, false); @@ -346,7 +347,7 @@ int main(void) TEST_NOT_NULL(n); fs.root->data.dir.children = n; - TEST_ASSERT(fstree_from_dir(&fs, n, TEST_PATH, 0) == 0); + TEST_ASSERT(fstree_from_dir(&fs, n, TEST_PATH, NULL, NULL, 0) == 0); TEST_ASSERT(fs.root->data.dir.children == n); TEST_NULL(n->next); @@ -365,8 +366,8 @@ int main(void) TEST_NOT_NULL(n); fs.root->data.dir.children = n; - TEST_ASSERT(fstree_from_dir(&fs, n, - TEST_PATH, DIR_SCAN_NO_RECURSION) == 0); + TEST_ASSERT(fstree_from_dir(&fs, n, TEST_PATH, NULL, NULL, + DIR_SCAN_NO_RECURSION) == 0); TEST_ASSERT(fs.root->data.dir.children == n); TEST_NULL(n->next); diff --git a/tests/fstree_fuzz.c b/tests/fstree_fuzz.c index 9618814..ebc8c45 100644 --- a/tests/fstree_fuzz.c +++ b/tests/fstree_fuzz.c @@ -24,7 +24,7 @@ int main(int argc, char **argv) if (fstree_init(&fs, NULL)) return EXIT_FAILURE; - if (fstree_from_file(&fs, argv[1])) + if (fstree_from_file(&fs, argv[1], NULL)) goto out_fs; ret = EXIT_SUCCESS; -- cgit v1.2.3