From 02bdf3397facbfda16aafd04c22ed3d1a342ebe4 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Wed, 16 Apr 2025 22:33:49 -0500 Subject: [PATCH] Progress: Continue working on completing the remove program. Update in regards to recent FLL directory changes. --- data/build/stand_alone/configs/remove-config.h | 8 ++++++-- .../c/program/kevux/tools/remove/main/common/define.h | 10 ---------- sources/c/program/kevux/tools/remove/main/operate.c | 16 ++++++++-------- sources/c/program/kevux/tools/remove/main/preprocess.h | 3 ++- tests/unit/remove/c/test-remove-directory_no_args.c | 12 ++++++------ .../unit/remove/c/test-remove-directory_recurse_simple.c | 12 ++++++------ 6 files changed, 28 insertions(+), 33 deletions(-) diff --git a/data/build/stand_alone/configs/remove-config.h b/data/build/stand_alone/configs/remove-config.h index 7aea9e8..a3224d0 100644 --- a/data/build/stand_alone/configs/remove-config.h +++ b/data/build/stand_alone/configs/remove-config.h @@ -234,11 +234,15 @@ #define _di_f_date_t_ #define _di_f_directory_at_d_ //#define _di_f_directory_back_s_ +#define _di_f_directory_close_ +//#define _di_f_directory_compare_call_t_ #define _di_f_directory_create_ #define _di_f_directory_create_at_ //#define _di_f_directory_current_s_ +//#define _di_f_directory_entity_t_ //#define _di_f_directory_exists_ #define _di_f_directory_exists_at_ +//#define _di_f_directory_filter_call_t_ //#define _di_f_directory_flag_d_ #define _di_f_directory_is_ #define _di_f_directory_is_at_ @@ -257,7 +261,7 @@ #define _di_f_directory_open_at_ //#define _di_f_directory_recurse_do_delete_ #define _di_f_directory_recurse_do_destroy_ -//#define _di_f_directory_recurse_do_flag_e_ +//#define _di_f_directory_recurse_do_flag_d_ //#define _di_f_directory_recurse_do_t_ #define _di_f_directory_recurse_dos_delete_callback_ #define _di_f_directory_recurse_dos_destroy_callback_ @@ -1650,7 +1654,7 @@ #define _di_fll_print_ #define _di_fll_print_character_ #define _di_fll_print_character_safely_ -#define _di_fll_print_dynamic_ +//#define _di_fll_print_dynamic_ #define _di_fll_print_dynamic_partial_ #define _di_fll_print_dynamic_partial_raw_ #define _di_fll_print_dynamic_partial_raw_safely_ diff --git a/sources/c/program/kevux/tools/remove/main/common/define.h b/sources/c/program/kevux/tools/remove/main/common/define.h index f3637ea..97a7e23 100644 --- a/sources/c/program/kevux/tools/remove/main/common/define.h +++ b/sources/c/program/kevux/tools/remove/main/common/define.h @@ -225,16 +225,6 @@ extern "C" { #endif // _di_kt_remove_flag_mode_d_ /** - * Defines for bitwise directory recurse flag enumeration combinations. - * - * _di_kt_remove_flag_recurse_*_d: - * - directory_not: All non-directory flags combined. - */ -#ifndef _di_kt_remove_flag_recurse_d_ - #define kt_remove_flag_recurse_directory_not_d (f_directory_recurse_do_flag_block_e | f_directory_recurse_do_flag_character_e | f_directory_recurse_do_flag_fifo_e | f_directory_recurse_do_flag_link_e | f_directory_recurse_do_flag_path_e | f_directory_recurse_do_flag_regular_e | f_directory_recurse_do_flag_socket_e | f_directory_recurse_do_flag_unknown_e) -#endif // _di_kt_remove_flag_recurse_d_ - -/** * Flags passed to the main function or program. * * kt_remove_main_flag_*_d: diff --git a/sources/c/program/kevux/tools/remove/main/operate.c b/sources/c/program/kevux/tools/remove/main/operate.c index 5028ed5..bc8dcc1 100644 --- a/sources/c/program/kevux/tools/remove/main/operate.c +++ b/sources/c/program/kevux/tools/remove/main/operate.c @@ -369,7 +369,7 @@ extern "C" { void kt_remove_operate_recurse_action(f_directory_recurse_do_t * const recurse, const f_string_static_t name, const uint32_t flag) { if (!recurse || !recurse->state.custom || F_status_set_fine(recurse->state.status) == F_interrupt) return; - if (!kt_remove_operate_shall_remove(recurse->state.code) || !(flag & f_directory_recurse_do_flag_action_e)) return; + if (!kt_remove_operate_shall_remove(recurse->state.code) || !(flag & f_directory_recurse_do_flag_action_d)) return; kt_remove_main_t * const main = (kt_remove_main_t *) recurse->state.custom; @@ -393,30 +393,30 @@ extern "C" { kt_remove_main_t * const main = (kt_remove_main_t *) recurse->state.custom; // Arguments to fl_recurse_do() are invalid (parameter checking). - if (flag == f_directory_recurse_do_flag_top_e) { + if (!recurse->depth) { kt_remove_print_error_status(&main->program.error, macro_kt_remove_f(fl_recurse_do), recurse->state.status); return; } - if (flag & f_directory_recurse_do_flag_list_e && recurse->state.status == F_status_set_error(F_recurse)) { + if (flag & f_directory_recurse_do_flag_list_d && recurse->state.status == F_status_set_error(F_recurse)) { recurse->state.status = F_status_set_error(F_directory_empty_not); - kt_remove_print_error_file_status(&main->program.error, macro_kt_remove_f(fl_recurse_do), flag & f_directory_recurse_do_flag_top_after_e ? *recurse->path_top : recurse->path, f_file_operation_delete_s, fll_error_file_type_directory_e, recurse->state.status); + kt_remove_print_error_file_status(&main->program.error, macro_kt_remove_f(fl_recurse_do), (!recurse->depth && (flag & f_directory_recurse_do_flag_after_d)) ? *recurse->path_top : recurse->path, f_file_operation_delete_s, fll_error_file_type_directory_e, recurse->state.status); return; } // The top-level path is an empty string or an error occurred while processing the top-level path. - if (flag == (f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_path_e) || flag == (f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_path_e | f_directory_recurse_do_flag_before_e)) { - kt_remove_print_error_file_status(&main->program.error, macro_kt_remove_f(fl_recurse_do), flag & f_directory_recurse_do_flag_top_after_e ? *recurse->path_top : recurse->path, f_file_operation_stat_s, fll_error_file_type_path_e, recurse->state.status); + if (!recurse->depth && (flag == f_directory_recurse_do_flag_path_d || flag == f_directory_recurse_do_flag_path_before_d)) { + kt_remove_print_error_file_status(&main->program.error, macro_kt_remove_f(fl_recurse_do), *recurse->path_top, f_file_operation_stat_s, fll_error_file_type_path_e, recurse->state.status); return; } // An error happened during directory list loading. - if (flag == (f_directory_recurse_do_flag_list_e | f_directory_recurse_do_flag_path_e)) { - kt_remove_print_error_file_status(&main->program.error, macro_kt_remove_f(fl_recurse_do), flag & f_directory_recurse_do_flag_top_after_e ? *recurse->path_top : recurse->path, f_file_operation_list_s, fll_error_file_type_directory_e, recurse->state.status); + if (flag == f_directory_recurse_do_flag_path_list_d) { + kt_remove_print_error_file_status(&main->program.error, macro_kt_remove_f(fl_recurse_do), recurse->depth ? recurse->path : *recurse->path_top, f_file_operation_list_s, fll_error_file_type_directory_e, recurse->state.status); return; } diff --git a/sources/c/program/kevux/tools/remove/main/preprocess.h b/sources/c/program/kevux/tools/remove/main/preprocess.h index dcac546..d9947d6 100644 --- a/sources/c/program/kevux/tools/remove/main/preprocess.h +++ b/sources/c/program/kevux/tools/remove/main/preprocess.h @@ -35,7 +35,8 @@ extern "C" { * The operate file specific flags from kt_remove_flag_file_operate_*_e. * @param recurse * If F_true as 0x1, then this function is being called during directory recursion. - * If F_true as 0x2, then this funtion is being called during directory recursion and it represents the parent directory being recursed. + * If F_true as 0x2, then this function is being called during directory recursion and it represents the parent directory being recursed. + * If F_true as 0x3, then this function is being called during directory recursion and it represents the parent tree directories are being recursed. * If F_false, then this function is being called outside of directory recursion. * * @return diff --git a/tests/unit/remove/c/test-remove-directory_no_args.c b/tests/unit/remove/c/test-remove-directory_no_args.c index db85a11..8ff25c4 100644 --- a/tests/unit/remove/c/test-remove-directory_no_args.c +++ b/tests/unit/remove/c/test-remove-directory_no_args.c @@ -245,7 +245,7 @@ void test__kt_remove__directory_no_args__one_empty_not_exists_link(void **state) will_return(__wrap_fl_directory_do, 1); will_return(__wrap_fl_directory_do, &file); will_return(__wrap_fl_directory_do, &file); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_directory_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_directory_d); // The pre-process gets called again before the final removal for directories. will_return(__wrap_f_file_exists, F_true); @@ -282,7 +282,7 @@ void test__kt_remove__directory_no_args__one_empty_not_exists_link(void **state) will_return(__wrap_fl_directory_do, 1); will_return(__wrap_fl_directory_do, &file); will_return(__wrap_fl_directory_do, &file); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_directory_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_directory_d); // The pre-process gets called again before the final removal for directories. will_return(__wrap_f_file_exists, F_true); @@ -319,7 +319,7 @@ void test__kt_remove__directory_no_args__one_empty_not_exists_link(void **state) will_return(__wrap_fl_directory_do, 1); will_return(__wrap_fl_directory_do, &file); will_return(__wrap_fl_directory_do, &file); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_directory_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_directory_d); // The pre-process gets called again before the final removal for directories. will_return(__wrap_f_file_exists, F_true); @@ -370,7 +370,7 @@ void test__kt_remove__directory_no_args__one_empty_not_exists_link_not(void **st // Child will_return(__wrap_fl_directory_do, &child); will_return(__wrap_fl_directory_do, &child); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_regular_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_regular_d); will_return(__wrap_f_file_exists, F_true); will_return(__wrap_f_file_is, F_false); // Not a link, kt_remove_flag_file_operate_link_d is not set. will_return(__wrap_f_file_stat, &statistics_regular); @@ -405,7 +405,7 @@ void test__kt_remove__directory_no_args__one_empty_not_exists_link_not(void **st will_return(__wrap_fl_directory_do, 1); will_return(__wrap_fl_directory_do, &file); will_return(__wrap_fl_directory_do, &file); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_directory_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_directory_d); // The pre-process gets called again before the final removal for directories. will_return(__wrap_f_file_exists, F_true); @@ -442,7 +442,7 @@ void test__kt_remove__directory_no_args__one_empty_not_exists_link_not(void **st will_return(__wrap_fl_directory_do, 1); will_return(__wrap_fl_directory_do, &file); will_return(__wrap_fl_directory_do, &file); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_directory_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_directory_d); // The pre-process gets called again before the final removal for directories. will_return(__wrap_f_file_exists, F_true); diff --git a/tests/unit/remove/c/test-remove-directory_recurse_simple.c b/tests/unit/remove/c/test-remove-directory_recurse_simple.c index 163e9fc..f1b4c93 100644 --- a/tests/unit/remove/c/test-remove-directory_recurse_simple.c +++ b/tests/unit/remove/c/test-remove-directory_recurse_simple.c @@ -40,7 +40,7 @@ void test__kt_remove__directory_recurse_simple__one_child_one_exists_link(void * // The first child pre-processing. will_return(__wrap_fl_directory_do, &child_1); will_return(__wrap_fl_directory_do, &child_1); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_regular_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_regular_d); will_return(__wrap_f_file_exists, F_true); will_return(__wrap_f_file_is, F_false); // Not a link, kt_remove_flag_file_operate_link_d is not set. will_return(__wrap_f_file_stat, &stat_regular); @@ -88,7 +88,7 @@ void test__kt_remove__directory_recurse_simple__one_child_one_exists_link_not(vo // The first child pre-processing. will_return(__wrap_fl_directory_do, &child_1); will_return(__wrap_fl_directory_do, &child_1); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_regular_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_regular_d); will_return(__wrap_f_file_exists, F_true); will_return(__wrap_f_file_is, F_false); // Not a link, kt_remove_flag_file_operate_link_d is not set. will_return(__wrap_f_file_stat, &stat_regular); @@ -137,7 +137,7 @@ void test__kt_remove__directory_recurse_simple__one_child_two_exists_link(void * // The first child processing. will_return(__wrap_fl_directory_do, &child_1); will_return(__wrap_fl_directory_do, &child_1); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_regular_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_regular_d); will_return(__wrap_f_file_exists, F_true); will_return(__wrap_f_file_is, F_false); // Not a link, kt_remove_flag_file_operate_link_d is not set. will_return(__wrap_f_file_stat, &stat_regular); @@ -147,7 +147,7 @@ void test__kt_remove__directory_recurse_simple__one_child_two_exists_link(void * // The second child processing. will_return(__wrap_fl_directory_do, &child_2); will_return(__wrap_fl_directory_do, &child_2); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_regular_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_regular_d); will_return(__wrap_f_file_exists, F_true); will_return(__wrap_f_file_is, F_true); // A link, kt_remove_flag_file_operate_link_d is set. will_return(__wrap_f_file_stat, &stat_regular); @@ -196,7 +196,7 @@ void test__kt_remove__directory_recurse_simple__one_child_two_exists_link_not(vo // The first child processing. will_return(__wrap_fl_directory_do, &child_1); will_return(__wrap_fl_directory_do, &child_1); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_regular_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_regular_d); will_return(__wrap_f_file_exists, F_true); will_return(__wrap_f_file_is, F_false); // Not a link, kt_remove_flag_file_operate_link_d is not set. will_return(__wrap_f_file_stat, &stat_regular); @@ -206,7 +206,7 @@ void test__kt_remove__directory_recurse_simple__one_child_two_exists_link_not(vo // The second child processing. will_return(__wrap_fl_directory_do, &child_2); will_return(__wrap_fl_directory_do, &child_2); - will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_e | f_directory_recurse_do_flag_regular_e); + will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_regular_d); will_return(__wrap_f_file_exists, F_true); will_return(__wrap_f_file_is, F_true); // A link, kt_remove_flag_file_operate_link_d is set. will_return(__wrap_f_file_stat, &stat_regular); -- 1.8.3.1