]> Kevux Git Server - fll/commitdiff
Bugfix: The fl_directory_do() needs to operate on the parent directory during recursion. development
authorKevin Day <Kevin@kevux.org>
Thu, 10 Apr 2025 03:51:18 +0000 (22:51 -0500)
committerKevin Day <Kevin@kevux.org>
Thu, 10 Apr 2025 03:51:18 +0000 (22:51 -0500)
The parent directory must be processed after recursion during the recursion steps.
These should not have the `f_directory_recurse_do_flag_top_after_e` flags because these are not top level.
These must have action because the action is expected to be performed on the directory just like other file types.

level_1/fl_directory/c/private-directory.c

index 659bbc0fc6aa876d6cd618c843a5f2b4e1b04cf8..fc17ce221b488458c028375c55953df10c8c317d 100644 (file)
@@ -199,12 +199,14 @@ extern "C" {
 
               --recurse->depth;
             }
-            else {
-              recurse->action(recurse, recurse->listing.directory.array[i], f_directory_recurse_do_flag_directory_e);
 
-              if (F_status_is_error(recurse->state.status)) {
-                private_inline_fl_directory_do_handle(recurse, recurse->listing.directory.array[i], f_directory_recurse_do_flag_directory_e);
-              }
+            // This loop is not considered a loop for breaking and continuing.
+            if (recurse->state.status == F_break || recurse->state.status == F_done || recurse->state.status == F_continue || F_status_set_fine(recurse->state.status) == F_interrupt) break;
+
+            recurse->action(recurse, recurse->listing.directory.array[i], f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_directory_e);
+
+            if (F_status_is_error(recurse->state.status)) {
+              private_inline_fl_directory_do_handle(recurse, recurse->listing.directory.array[i], f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_directory_e);
             }
 
             // This loop is not considered a loop for breaking and continuing.