* - accessed: Remove by last accessed datetime.
* - accessed_changed_updated: A helper flag representing accessed, changed, and updated flag bits being set.
* - block: Remove by file type: block.
+ * - block_ignore: Ignore during simulate file type: block.
* - changed: Remove by changed datetime.
* - character: Remove by file type: character.
+ * - character_ignore: Ignore during simulate file type: character.
* - copyright: Print copyright.
* - different: Remove by user different from caller.
* - directory: Remove by file type: directory.
+ * - directory_ignore: Ignore during simulate file type: directory.
* - empty_all: Helper flag representing all empty flag bits.
* - empty_only: Remove empty directories.
* - empty_only_fail: Fail on empty directories.
* - empty_not: Remove not empty directories.
* - empty_not_fail: Fail on not empty directories.
* - fifo: Remove by file type: FIFO.
- * - file_types_except_directory: A helper flag representing all file types except for the directory type.
+ * - fifo_ignore: Ignore during simulate file type: FIFO.
+ * - file_types: A helper flag representing all file types flags.
+ * - file_types_except_directory: A helper flag representing all file types flags except for the directory type.
+ * - file_types_ignore: A helper flag representing all file types "ignore" flags.
* - follow: Follow symbolic links for deleting the file being pointed to rather than the link itself (when not set the link itself is deleted).
* - force: Forcibly delete.
* - force_simulate: A helper flag representing force and simulate flag bits being set.
* - group: Remove by GID.
* - help: Print help.
* - link: Remove by file type: link.
+ * - link_ignore: Ignore during simulate file type: link.
* - mode: Remove by mode.
* - option_type: Designates that type match options are specifically in use, overriding the default behavior (one should also set options_used when setting this).
* - option_type_used: A helper flag representing option_type and option_used flag bits being set.
* - prompt_once: Operate in interactive mode: prompting once if removing 3 or more files or when operating recursively.
* - recurse: Recurse directories.
* - regular: Remove by file type: regular.
+ * - regular_ignore: Ignore during simulate file type: regular.
* - remember: Enable remembering paths already processed.
* - root: Allow for deleting root directory (Dangerous!).
* - same: Remove by same user as caller.
* - simulate: Do not actually perform deletes, instead print messages (when silent, should still return 0 or 1).
* - socket: Remove by file type: socket.
+ * - socket_ignore: Ignore during simulate file type: socket.
* - tree: Remove directory tree (parent directories) (remove a/b/c, removes a/b/c, then a/b/, then a).
* - updated: Remove by last updated datetime.
* - user: Remove by UID.
* - unknown: Remove by file type: unknown.
+ * - unknown_ignore: Ignore during simulate file type: unknown.
* - utc: Process dates in UTC mode.
* - version: Print version.
* - version_copyright_help: A helper flag representing version, copyright, and help flag bits being set.
#ifndef _di_kt_remove_main_flag_d_
#define kt_remove_main_flag_none_d 0x0
#define kt_remove_main_flag_accessed_d 0x1
- #define kt_remove_main_flag_accessed_changed_updated_d 0x100000005
+ #define kt_remove_main_flag_accessed_changed_updated_d 0x8000000009
#define kt_remove_main_flag_block_d 0x2
- #define kt_remove_main_flag_changed_d 0x4
- #define kt_remove_main_flag_character_d 0x8
- #define kt_remove_main_flag_copyright_d 0x10
- #define kt_remove_main_flag_different_d 0x20
- #define kt_remove_main_flag_directory_d 0x40
- #define kt_remove_main_flag_empty_all_d 0x780
- #define kt_remove_main_flag_empty_only_d 0x80
- #define kt_remove_main_flag_empty_only_fail_d 0x100
- #define kt_remove_main_flag_empty_not_d 0x200
- #define kt_remove_main_flag_empty_not_fail_d 0x400
- #define kt_remove_main_flag_fifo_d 0x800
- #define kt_remove_main_flag_file_types_except_directory_d 0x44201080a
- #define kt_remove_main_flag_follow_d 0x1000
- #define kt_remove_main_flag_force_d 0x2000
- #define kt_remove_main_flag_force_simulate_d 0x20002000
- #define kt_remove_main_flag_group_d 0x4000
- #define kt_remove_main_flag_help_d 0x8000
- #define kt_remove_main_flag_link_d 0x10000
- #define kt_remove_main_flag_mode_d 0x20000
- #define kt_remove_main_flag_option_type_d 0x40000
- #define kt_remove_main_flag_option_type_used_d 0xc0000
- #define kt_remove_main_flag_option_used_d 0x80000
- #define kt_remove_main_flag_prompt_all_d 0xf00000
- #define kt_remove_main_flag_prompt_each_d 0x100000
- #define kt_remove_main_flag_prompt_follow_d 0x200000
- #define kt_remove_main_flag_prompt_never_d 0x400000
- #define kt_remove_main_flag_prompt_once_d 0x800000
- #define kt_remove_main_flag_recurse_d 0x1000000
- #define kt_remove_main_flag_regular_d 0x2000000
- #define kt_remove_main_flag_remember_d 0x4000000
- #define kt_remove_main_flag_root_d 0x8000000
- #define kt_remove_main_flag_same_d 0x10000000
- #define kt_remove_main_flag_simulate_d 0x20000000
- #define kt_remove_main_flag_socket_d 0x40000000
- #define kt_remove_main_flag_tree_d 0x80000000
- #define kt_remove_main_flag_updated_d 0x100000000
- #define kt_remove_main_flag_user_d 0x200000000
- #define kt_remove_main_flag_unknown_d 0x400000000
- #define kt_remove_main_flag_utc_d 0x800000000
- #define kt_remove_main_flag_version_d 0x1000000000
- #define kt_remove_main_flag_version_copyright_help_d 0x1000008010
+ #define kt_remove_main_flag_block_ignore_d 0x4
+ #define kt_remove_main_flag_changed_d 0x8
+ #define kt_remove_main_flag_character_d 0x10
+ #define kt_remove_main_flag_character_ignore_d 0x20
+ #define kt_remove_main_flag_copyright_d 0x40
+ #define kt_remove_main_flag_different_d 0x80
+ #define kt_remove_main_flag_directory_d 0x100
+ #define kt_remove_main_flag_directory_ignore_d 0x200
+ #define kt_remove_main_flag_empty_all_d 0x3c00
+ #define kt_remove_main_flag_empty_only_d 0x400
+ #define kt_remove_main_flag_empty_only_fail_d 0x800
+ #define kt_remove_main_flag_empty_not_d 0x1000
+ #define kt_remove_main_flag_empty_not_fail_d 0x2000
+ #define kt_remove_main_flag_fifo_d 0x4000
+ #define kt_remove_main_flag_fifo_ignore_d 0x8000
+ #define kt_remove_main_flag_file_types_d 0x21040104112
+ #define kt_remove_main_flag_file_types_except_directory_d 0x21040104012
+ #define kt_remove_main_flag_file_types_ignore_d 0x42080208224
+ #define kt_remove_main_flag_follow_d 0x10000
+ #define kt_remove_main_flag_force_d 0x20000
+ #define kt_remove_main_flag_force_simulate_d 0x800020000
+ #define kt_remove_main_flag_group_d 0x40000
+ #define kt_remove_main_flag_help_d 0x80000
+ #define kt_remove_main_flag_link_d 0x100000
+ #define kt_remove_main_flag_link_ignore_d 0x200000
+ #define kt_remove_main_flag_mode_d 0x400000
+ #define kt_remove_main_flag_option_type_d 0x800000
+ #define kt_remove_main_flag_option_type_used_d 0x1800000
+ #define kt_remove_main_flag_option_used_d 0x1000000
+ #define kt_remove_main_flag_prompt_all_d 0x1e000000
+ #define kt_remove_main_flag_prompt_each_d 0x2000000
+ #define kt_remove_main_flag_prompt_follow_d 0x4000000
+ #define kt_remove_main_flag_prompt_never_d 0x8000000
+ #define kt_remove_main_flag_prompt_once_d 0x10000000
+ #define kt_remove_main_flag_recurse_d 0x20000000
+ #define kt_remove_main_flag_regular_d 0x40000000
+ #define kt_remove_main_flag_regular_ignore_d 0x80000000
+ #define kt_remove_main_flag_remember_d 0x100000000
+ #define kt_remove_main_flag_root_d 0x200000000
+ #define kt_remove_main_flag_same_d 0x400000000
+ #define kt_remove_main_flag_simulate_d 0x800000000
+ #define kt_remove_main_flag_socket_d 0x1000000000
+ #define kt_remove_main_flag_socket_ignore_d 0x2000000000
+ #define kt_remove_main_flag_tree_d 0x4000000000
+ #define kt_remove_main_flag_updated_d 0x8000000000
+ #define kt_remove_main_flag_user_d 0x10000000000
+ #define kt_remove_main_flag_unknown_d 0x20000000000
+ #define kt_remove_main_flag_unknown_ignore_d 0x40000000000
+ #define kt_remove_main_flag_utc_d 0x80000000000
+ #define kt_remove_main_flag_version_d 0x100000000000
+ #define kt_remove_main_flag_version_copyright_help_d 0x100000080040
#endif // _di_kt_remove_main_flag_e_
/**
return flag_out;
}
- kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_block(statistics.st_mode), f_file_type_name_block_s, kt_remove_main_flag_block_d, 0x1, &flag_out);
+ kt_remove_preprocess_file_type(main, 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, 0x1, &flag_out);
- kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_character(statistics.st_mode), f_file_type_name_character_s, kt_remove_main_flag_character_d, 0x1, &flag_out);
+ kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_character(statistics.st_mode), f_file_type_name_character_s, kt_remove_main_flag_character_d, kt_remove_main_flag_character_ignore_d, 0x1, &flag_out);
- kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_directory(statistics.st_mode), f_file_type_name_directory_s, kt_remove_main_flag_directory_d, 0x1, &flag_out);
+ kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_directory(statistics.st_mode), f_file_type_name_directory_s, kt_remove_main_flag_directory_d, kt_remove_main_flag_directory_ignore_d, 0x1, &flag_out);
if (macro_f_file_type_is_directory(statistics.st_mode)) {
flag_out |= kt_remove_flag_file_operate_directory_d;
}
- kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_fifo(statistics.st_mode), f_file_type_name_fifo_s, kt_remove_main_flag_fifo_d, 0x1, &flag_out);
+ kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_fifo(statistics.st_mode), f_file_type_name_fifo_s, kt_remove_main_flag_fifo_d, kt_remove_main_flag_fifo_ignore_d, 0x1, &flag_out);
- kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_link(statistics.st_mode), f_file_type_name_link_s, kt_remove_main_flag_link_d, 0x1, &flag_out);
+ kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_link(statistics.st_mode), f_file_type_name_link_s, kt_remove_main_flag_link_d, kt_remove_main_flag_link_ignore_d, 0x1, &flag_out);
- kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_regular(statistics.st_mode), f_file_type_name_regular_s, kt_remove_main_flag_regular_d, 0x3, &flag_out);
+ kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_regular(statistics.st_mode), f_file_type_name_regular_s, kt_remove_main_flag_regular_d, kt_remove_main_flag_regular_ignore_d, 0x3, &flag_out);
- kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_socket(statistics.st_mode), f_file_type_name_socket_s, kt_remove_main_flag_socket_d, 0x1, &flag_out);
+ kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_socket(statistics.st_mode), f_file_type_name_socket_s, kt_remove_main_flag_socket_d, kt_remove_main_flag_socket_ignore_d, 0x1, &flag_out);
- kt_remove_preprocess_file_type(main, path, macro_f_file_type_is_unknown(statistics.st_mode), f_file_type_name_unknown_s, kt_remove_main_flag_unknown_d, 0x0, &flag_out);
+ kt_remove_preprocess_file_type(main, 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, 0x0, &flag_out);
if (!(main->setting.flag & kt_remove_main_flag_simulate_d) && (flag_out & kt_remove_flag_file_operate_remove_fail_d)) return flag_out;
#endif // _di_kt_remove_preprocess_file_dates_
#ifndef _di_kt_remove_preprocess_file_type_
- void kt_remove_preprocess_file_type(kt_remove_main_t * const main, const f_string_static_t path, const bool is, f_string_static_t name, const uint64_t type, const uint8_t code, uint32_t * const flag_out) {
+ void kt_remove_preprocess_file_type(kt_remove_main_t * const main, const f_string_static_t path, const bool is, f_string_static_t name, const uint64_t type, const uint64_t ignore, const uint8_t code, uint32_t * const flag_out) {
if (!main || !flag_out) return;
}
}
- if (is || (main->setting.flag & type)) {
+ if (is || (main->setting.flag & type) && !(main->setting.flag & ignore)) {
kt_remove_print_simulate_operate_boolean(&main->program.output, name, is);
}
}