]> Kevux Git Server - kevux-tools/commitdiff
Progress: Continue working on completing the remove program.
authorKevin Day <Kevin@kevux.org>
Thu, 17 Apr 2025 03:33:49 +0000 (22:33 -0500)
committerKevin Day <Kevin@kevux.org>
Fri, 18 Apr 2025 04:52:49 +0000 (23:52 -0500)
Update in regards to recent FLL directory changes.

data/build/stand_alone/configs/remove-config.h
sources/c/program/kevux/tools/remove/main/common/define.h
sources/c/program/kevux/tools/remove/main/operate.c
sources/c/program/kevux/tools/remove/main/preprocess.h
tests/unit/remove/c/test-remove-directory_no_args.c
tests/unit/remove/c/test-remove-directory_recurse_simple.c

index 7aea9e87093488d1a08e4cbeefe6d8c871b927c8..a3224d0b3c4c35d9555c735299863671bdb37f04 100644 (file)
 #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_
 #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_
 #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_
index f3637ea8a6581d1b0eaa0984e7076bb7bfd4e857..97a7e2384ce6281e2bf9aa8e439aa33b070a35e9 100644 (file)
@@ -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:
index 5028ed5da4bb61d62d0fb954ee3b219d38494d3b..bc8dcc1ded119076b68585e9a9a6d5edd3606f64 100644 (file)
@@ -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;
     }
index dcac5468e7d06b11c986ee7951e9ff8b3e7e781d..d9947d61f476cfe59b7569f767daac1e8106540d 100644 (file)
@@ -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
index db85a11b035cf746e8e63e7d0c3933c11f2b0eaa..8ff25c4e2eec9834e57b2d996ec4be512111abc6 100644 (file)
@@ -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);
index 163e9fccec5f45a6b18477a125604716372731b4..f1b4c93e40c53895e60e3631e8ed036333f0392c 100644 (file)
@@ -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);