summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStefano Facchini <stefano.facchini@gmail.com>2020-06-15 09:16:12 +0200
committerStefano Facchini <stefano.facchini@gmail.com>2020-06-15 09:16:12 +0200
commit0efc5ffd473d55ea53f20e3aaa9e63278c1ddf32 (patch)
tree92a44b28a56be8d679ff0a82350fff8d65f374f3 /src
parent5aefd36a06eb61670f6ae2d80dc452cd4190da20 (diff)
downloadbaobab-0efc5ffd473d55ea53f20e3aaa9e63278c1ddf32.tar.gz
Split out a function
Diffstat (limited to 'src')
-rw-r--r--src/baobab-scanner.vala82
1 files changed, 43 insertions, 39 deletions
diff --git a/src/baobab-scanner.vala b/src/baobab-scanner.vala
index 04dbfdf..b3ba68c 100644
--- a/src/baobab-scanner.vala
+++ b/src/baobab-scanner.vala
@@ -212,6 +212,48 @@ namespace Baobab {
}
}
+ void add_children (File directory, Results results, ResultsArray results_array) throws Error {
+ var children = directory.enumerate_children (ATTRIBUTES, FileQueryInfoFlags.NOFOLLOW_SYMLINKS, cancellable);
+ FileInfo? child_info;
+ while ((child_info = children.next_file (cancellable)) != null) {
+ switch (child_info.get_file_type ()) {
+ case FileType.DIRECTORY:
+ var child = directory.get_child (child_info.get_name ());
+ var child_results = add_directory (child, child_info, results);
+
+ if (child_results != null) {
+ results.update_with_child (child_results);
+ results_array.results += (owned) child_results;
+ }
+ break;
+
+ case FileType.REGULAR:
+ if (child_info.has_attribute (FileAttribute.UNIX_NLINK)) {
+ if (child_info.get_attribute_uint32 (FileAttribute.UNIX_NLINK) > 1) {
+ var hl = new HardLink (child_info);
+
+ // check if we've already encountered this file
+ if (hl in hardlinks) {
+ continue;
+ }
+
+ hardlinks.add ((owned) hl);
+ }
+
+ }
+
+ var child_results = new Results (child_info, results);
+ results.update_with_child (child_results);
+ results_array.results += (owned) child_results;
+ break;
+
+ default:
+ // ignore other types (symlinks, sockets, devices, etc)
+ break;
+ }
+ }
+ }
+
Results? add_directory (File directory, FileInfo info, Results? parent = null) {
var results_array = new ResultsArray ();
@@ -224,45 +266,7 @@ namespace Baobab {
var results = new Results (info, parent);
try {
- var children = directory.enumerate_children (ATTRIBUTES, FileQueryInfoFlags.NOFOLLOW_SYMLINKS, cancellable);
- FileInfo? child_info;
- while ((child_info = children.next_file (cancellable)) != null) {
- switch (child_info.get_file_type ()) {
- case FileType.DIRECTORY:
- var child = directory.get_child (child_info.get_name ());
- var child_results = add_directory (child, child_info, results);
-
- if (child_results != null) {
- results.update_with_child (child_results);
- results_array.results += (owned) child_results;
- }
- break;
-
- case FileType.REGULAR:
- if (child_info.has_attribute (FileAttribute.UNIX_NLINK)) {
- if (child_info.get_attribute_uint32 (FileAttribute.UNIX_NLINK) > 1) {
- var hl = new HardLink (child_info);
-
- // check if we've already encountered this file
- if (hl in hardlinks) {
- continue;
- }
-
- hardlinks.add ((owned) hl);
- }
-
- }
-
- var child_results = new Results (child_info, results);
- results.update_with_child (child_results);
- results_array.results += (owned) child_results;
- break;
-
- default:
- // ignore other types (symlinks, sockets, devices, etc)
- break;
- }
- }
+ add_children (directory, results, results_array);
} catch (Error e) {
results.error = e;
}