From: Kevin Day Date: Sat, 19 Apr 2025 02:19:11 +0000 (-0500) Subject: Bugfix: The fl_directory_do() needs to always process at the top level. X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=feee25805ef1d09101c0bfc792dc55607a0da3ea;p=fll Bugfix: The fl_directory_do() needs to always process at the top level. The top level directory is not being processed when the depth is less than the max depth. Make sure to add the directory flag as well. --- diff --git a/level_1/fl_directory/c/directory.c b/level_1/fl_directory/c/directory.c index ddf2080..a046944 100644 --- a/level_1/fl_directory/c/directory.c +++ b/level_1/fl_directory/c/directory.c @@ -122,37 +122,38 @@ extern "C" { return; } } - else { - const uint32_t flag_actions[] = { - recurse->flag & f_directory_recurse_do_flag_before_d ? f_directory_recurse_do_flag_before_d : 0, - f_directory_recurse_do_flag_action_d, - recurse->flag & f_directory_recurse_do_flag_after_d ? f_directory_recurse_do_flag_after_d : 0, - }; - uint8_t action = 0; + const uint32_t flag_actions[] = { + recurse->flag & f_directory_recurse_do_flag_before_d ? f_directory_recurse_do_flag_before_d : 0, + f_directory_recurse_do_flag_action_d, + recurse->flag & f_directory_recurse_do_flag_after_d ? f_directory_recurse_do_flag_after_d : 0, + }; - for (action = 0; action < 3; ++action) { + uint8_t action = 0; - if (recurse->state.interrupt) { - recurse->state.interrupt((void *) &recurse->state, (void *) recurse); - if (F_status_set_fine(recurse->state.status) == F_interrupt) break; - } + recurse->depth = 0; - if (flag_actions[action]) { - recurse->state.status = F_okay; + for (action = 0; action < 3; ++action) { - recurse->action(recurse, path, flag_actions[action] | recurse->flag); + if (recurse->state.interrupt) { + recurse->state.interrupt((void *) &recurse->state, (void *) recurse); + if (F_status_set_fine(recurse->state.status) == F_interrupt) break; + } - if (F_status_is_error(recurse->state.status)) { - private_inline_fl_directory_do_handle(recurse, path, flag_actions[action] | recurse->flag); - if (F_status_is_error(recurse->state.status)) break; - } + if (flag_actions[action]) { + recurse->state.status = F_okay; - // There is nothing to continue onto, so all of these result in a break out of the loop. - 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, path, flag_actions[action] | recurse->flag | f_directory_recurse_do_flag_directory_d); + + if (F_status_is_error(recurse->state.status)) { + private_inline_fl_directory_do_handle(recurse, path, flag_actions[action] | recurse->flag | f_directory_recurse_do_flag_directory_d); + if (F_status_is_error(recurse->state.status)) break; } - } // for - } + + // There is nothing to continue onto, so all of these result in a break out of the loop. + 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; + } + } // for recurse->state.status = F_okay; }