kt_remove_operate_memory_check(main, path, &flag_out);
if (F_status_is_error(main->setting.state.status) || (flag_out & kt_remove_flag_file_operate_processed_d)) return flag_out;
- main->setting.state.status = f_file_exists(path, main->setting.flag & kt_remove_main_flag_follow_d);
+ f_number_unsigned_t i = 0;
- if (main->setting.state.status == F_true) {
- const f_status_t status = f_file_is(path, F_file_type_link_d, F_false);
+ struct stat statistics;
- if (F_status_is_error(status)) {
- kt_remove_print_simulate_operate_file(&main->program.output, simulate, path, flag_operate);
+ memset(&statistics, 0, sizeof(struct stat));
- main->setting.state.status = status;
+ {
+ const f_status_t exists = main->setting.state.status = f_file_exists(path, main->setting.flag & kt_remove_main_flag_follow_d);
- remove_print_warning_file_reason(&main->program.warning, path, kt_remove_print_reason_stat_fail_s);
+ if (exists == F_true) {
+ main->setting.state.status = f_file_is(path, F_file_type_link_d, F_false);
- return 0;
- }
-
- if (status == F_true) {
- flag_out |= kt_remove_flag_file_operate_link_d;
- }
- }
- else if (main->setting.state.status == F_false || F_status_is_error(main->setting.state.status)) {
- kt_remove_print_simulate_operate_file(&main->program.output, simulate, path, flag_operate);
+ if (F_status_is_error(main->setting.state.status)) {
+ kt_remove_print_simulate_operate_file(&main->program.output, simulate, path, flag_operate);
- kt_remove_print_simulate_operate_file_exists(&main->program.output, simulate, path, flag_out);
+ remove_print_warning_file_reason(&main->program.warning, path, kt_remove_print_reason_stat_fail_s);
- if (main->setting.state.status == F_false) {
- kt_remove_print_simulate_operate_boolean(&main->program.output, simulate, kt_remove_ignore_s, main->setting.flag & kt_remove_main_flag_force_d);
+ return 0;
+ }
- return kt_remove_flag_file_operate_missing_d;
+ if (main->setting.state.status == F_true) {
+ flag_out |= kt_remove_flag_file_operate_link_d;
+ }
}
+ else if (exists == F_false || F_status_is_error(exists)) {
+ kt_remove_print_simulate_operate_file(&main->program.output, simulate, path, flag_operate);
- remove_print_warning_file_reason(&main->program.warning, path, kt_remove_print_reason_no_access_s);
+ kt_remove_print_simulate_operate_file_exists(&main->program.output, simulate, path, flag_out, exists);
- return 0;
- }
+ if (exists == F_false) {
+ kt_remove_print_simulate_operate_boolean(&main->program.output, simulate, kt_remove_ignore_s, main->setting.flag & kt_remove_main_flag_force_d);
- if (macro_kt_remove_signal_check(&main->program, &main->setting.state)) return 0;
+ return kt_remove_flag_file_operate_missing_d;
+ }
- if (main->setting.flag & kt_remove_main_flag_follow_d) {
- flag_out |= kt_remove_flag_file_operate_follow_d;
- }
+ remove_print_warning_file_reason(&main->program.warning, path, kt_remove_print_reason_no_access_s);
- f_number_unsigned_t i = 0;
+ return 0;
+ }
- struct stat statistics;
+ if (macro_kt_remove_signal_check(&main->program, &main->setting.state)) return 0;
- memset(&statistics, 0, sizeof(struct stat));
+ if (main->setting.flag & kt_remove_main_flag_follow_d) {
+ flag_out |= kt_remove_flag_file_operate_follow_d;
+ }
- if (recurse == 0x2) {
- memcpy(&statistics, &main->cache.statistics, sizeof(struct stat));
- }
- else {
- main->setting.state.status = f_file_stat(path, main->setting.flag & kt_remove_main_flag_follow_d, &statistics);
+ if (recurse == 0x2) {
+ memcpy(&statistics, &main->cache.statistics, sizeof(struct stat));
+ }
+ else {
+ main->setting.state.status = f_file_stat(path, main->setting.flag & kt_remove_main_flag_follow_d, &statistics);
- if (F_status_is_error(main->setting.state.status)) {
- kt_remove_print_simulate_operate_file(&main->program.output, simulate, path, flag_operate);
+ if (F_status_is_error(main->setting.state.status)) {
+ kt_remove_print_simulate_operate_file(&main->program.output, simulate, path, flag_operate);
- kt_remove_print_simulate_operate_file_exists(&main->program.output, simulate, path, flag_out);
+ kt_remove_print_simulate_operate_file_exists(&main->program.output, simulate, path, flag_out, F_false);
- remove_print_warning_file_reason(&main->program.warning, path, kt_remove_print_reason_stat_fail_s);
+ remove_print_warning_file_reason(&main->program.warning, path, kt_remove_print_reason_stat_fail_s);
- return flag_out;
+ return flag_out;
+ }
}
- }
- if (macro_f_file_type_is_directory(statistics.st_mode)) {
- flag_out |= kt_remove_flag_file_operate_directory_d;
+ if (macro_f_file_type_is_directory(statistics.st_mode)) {
+ flag_out |= kt_remove_flag_file_operate_directory_d;
- if (!recurse) {
- memcpy(&main->cache.statistics, &statistics, sizeof(struct stat));
+ if (!recurse) {
+ memcpy(&main->cache.statistics, &statistics, sizeof(struct stat));
+ }
}
- }
- // Directories get pre-processed before recursion to prevent unnecessary recursion but the pre-process again happens after recursion to perform actual operations because the child paths must be all be removed before the directory.
- simulate = (main->setting.flag & kt_remove_main_flag_simulate_d)
- ? (flag_out & kt_remove_flag_file_operate_directory_d)
- ? recurse
- ? kt_remove_flag_simulate_directory_recurse_d
- : kt_remove_flag_simulate_directory_d
- : kt_remove_flag_simulate_directory_not_d
- : kt_remove_flag_simulate_none_d;
+ // Directories get pre-processed before recursion to prevent unnecessary recursion but the pre-process again happens after recursion to perform actual operations because the child paths must be all be removed before the directory.
+ simulate = (main->setting.flag & kt_remove_main_flag_simulate_d)
+ ? (flag_out & kt_remove_flag_file_operate_directory_d)
+ ? recurse
+ ? kt_remove_flag_simulate_directory_recurse_d
+ : kt_remove_flag_simulate_directory_d
+ : kt_remove_flag_simulate_directory_not_d
+ : kt_remove_flag_simulate_none_d;
- kt_remove_print_simulate_operate_file(&main->program.output, simulate, path, flag_operate);
+ kt_remove_print_simulate_operate_file(&main->program.output, simulate, path, flag_operate);
- kt_remove_print_simulate_operate_file_exists(&main->program.output, simulate, path, flag_out);
+ kt_remove_print_simulate_operate_file_exists(&main->program.output, simulate, path, flag_out, exists);
+ }
kt_remove_preprocess_file_type(main, kt_remove_flag_simulate_is_a_d | simulate, path, macro_f_file_type_is_block(statistics.st_mode), f_file_type_name_block_s, kt_remove_main_flag_block_d, kt_remove_main_flag_block_ignore_d, &flag_out);