if (F_status_is_error(recurse->state.status)) return;
}
+ if (recurse->flag & f_directory_recurse_do_flag_list_e) {
+ recurse->state.status = F_okay;
+
+ recurse->listing.block.used = 0;
+ recurse->listing.character.used = 0;
+ recurse->listing.directory.used = 0;
+ recurse->listing.regular.used = 0;
+ recurse->listing.link.used = 0;
+ recurse->listing.fifo.used = 0;
+ recurse->listing.socket.used = 0;
+ recurse->listing.unknown.used = 0;
+
+ recurse->state.status = private_fl_directory_list(recurse->path, 0, 0, recurse->flag & f_directory_recurse_do_flag_dereference_e, &recurse->listing);
+
+ if (F_status_is_error(recurse->state.status)) {
+ private_inline_fl_directory_do_handle(recurse, f_string_empty_s, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_list_e | f_directory_recurse_do_flag_path_e);
+
+ if (F_status_is_error(recurse->state.status)) return;
+ }
+
+ recurse->action(recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_list_e);
+
+ if (F_status_is_error(recurse->state.status)) {
+ private_inline_fl_directory_do_handle(recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_list_e);
+
+ if (F_status_is_error(recurse->state.status)) return;
+ }
+
+ if (recurse->state.status == F_done) {
+ recurse->state.status = F_okay;
+
+ return;
+ }
+ }
+
recurse->state.status = F_okay;
recurse->action(recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_directory_e);