kt_remove_preprocess_file_type(main, kt_remove_flag_simulate_none_d, path, macro_f_file_type_is_unknown(statistics.st_mode), f_file_type_name_unknown_s, kt_remove_main_flag_unknown_d, kt_remove_main_flag_unknown_ignore_d, &flag_out);
- if (!(main->setting.flag & kt_remove_main_flag_simulate_d) && (flag_out & kt_remove_flag_operate_remove_fail_d)) return flag_out;
+ if (!(main->setting.flag & kt_remove_main_flag_simulate_d) && (flag_out & kt_remove_flag_operate_remove_fail_d)) {
+ main->setting.state.status = F_status_set_error(F_no);
+
+ return flag_out;
+ }
if (main->setting.flag & kt_remove_main_flag_user_d) {
for (i = 0; i < main->setting.users.used; ++i) {
if (main->setting.state.status == F_true || main->setting.state.status == F_false) {
if (main->setting.state.status == F_true) {
flag_out |= kt_remove_flag_operate_empty_d;
+ } else {
+ flag_out &= ~kt_remove_flag_operate_empty_d;
}
kt_remove_print_simulate_operate_boolean(&main->program.output, flag_out, kt_remove_empty_s, main->setting.state.status);
if (!(flag_out & kt_remove_flag_operate_remove_not_d)) {
if (main->setting.flag & kt_remove_main_flag_empty_all_d) {
- if (main->setting.state.status == F_true) {
+ if (flag_out & kt_remove_flag_operate_empty_d) {
if (main->setting.flag & kt_remove_main_flag_empty_not_fail_d) {
kt_remove_print_error_file_is_a(&main->program.error, path, kt_remove_empty_s, 0);
flag_out |= kt_remove_flag_operate_remove_not_d;
}
}
- else if (main->setting.state.status == F_false) {
+ else {
if (main->setting.flag & kt_remove_main_flag_empty_only_fail_d) {
kt_remove_print_error_file_is_a(&main->program.error, path, kt_remove_not_empty_s, 0);
}
}
}
- else if (main->setting.state.status == F_false) {
+ else if (!(flag_out & kt_remove_flag_operate_empty_d)) {
if (!(main->setting.flag & kt_remove_main_flag_recurse_d)) {
kt_remove_print_error_file_is_a(&main->program.error, path, kt_remove_not_empty_s, 0);
}
if (F_status_is_error_not(main->setting.state.status)) {
- main->setting.state.status = F_okay;
+ main->setting.state.status = !(main->setting.flag & kt_remove_main_flag_simulate_d) && (flag_out & kt_remove_flag_operate_remove_fail_d)
+ ? F_status_set_error(F_no)
+ : F_okay;
}
return flag_out;
will_return(__wrap_f_file_stat, &stats[i]);
will_return(__wrap_f_file_stat, F_okay);
- if (macro_f_file_type_is_directory(stats[i].st_mode)) {
- will_return(__wrap_f_directory_empty, F_true);
-
- will_return(__wrap_fl_directory_do, 1);
- will_return(__wrap_fl_directory_do, &target);
- will_return(__wrap_fl_directory_do, &target);
- will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_directory_d);
- }
-
// Process file.
if (i == type) {
if (macro_f_file_type_is_directory(stats[i].st_mode)) {
+ will_return(__wrap_f_directory_empty, F_true);
+
+ will_return(__wrap_fl_directory_do, 1);
+ will_return(__wrap_fl_directory_do, &target);
+ will_return(__wrap_fl_directory_do, &target);
+ will_return(__wrap_fl_directory_do, f_directory_recurse_do_flag_action_d | f_directory_recurse_do_flag_directory_d);
+ }
+
+ if (macro_f_file_type_is_directory(stats[i].st_mode)) {
// The pre-process gets called again before the final removal for directories.
will_return(__wrap_f_file_exists, F_true);