Update all of the files and callbacks.
* The macro_f_directory_recurse_do_t_initialize_2() all arguments except for internally managed source, destination, mode, and depth.
*/
#ifndef _di_f_directory_recurse_do_t_
- typedef struct {
+ typedef struct f_directory_recurse_do_t_ f_directory_recurse_do_t;
+
+ struct f_directory_recurse_do_t_ {
f_number_unsigned_t depth;
f_number_unsigned_t depth_max;
uint16_t flag;
f_string_dynamic_t path_cache;
const f_string_static_t *path_top;
- void (*action)(void * const recurse, const f_string_static_t name, const uint16_t flag);
- void (*handle)(void * const recurse, const f_string_static_t name, const uint16_t flag);
- } f_directory_recurse_do_t;
+ void (*action)(f_directory_recurse_do_t * const recurse, const f_string_static_t name, const uint16_t flag);
+ void (*handle)(f_directory_recurse_do_t * const recurse, const f_string_static_t name, const uint16_t flag);
+ } ;
#define f_directory_recurse_do_t_initialize { \
0, \
if ((recurse->flag & f_directory_recurse_do_flag_top_e) && (recurse->flag & f_directory_recurse_do_flag_before_e)) {
recurse->state.status = F_okay;
- recurse->action((void *) recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_path_e | f_directory_recurse_do_flag_before_e);
+ recurse->action(recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_path_e | f_directory_recurse_do_flag_before_e);
if (F_status_is_error(recurse->state.status)) {
private_inline_fl_directory_do_handle(recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_path_e | f_directory_recurse_do_flag_before_e);
recurse->state.status = F_okay;
- recurse->action((void *) recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_directory_e);
+ recurse->action(recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_directory_e);
if (F_status_is_error(recurse->state.status)) {
private_inline_fl_directory_do_handle(recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_directory_e);
if ((recurse->flag & f_directory_recurse_do_flag_top_e) && (recurse->flag & f_directory_recurse_do_flag_after_e)) {
recurse->state.status = F_okay;
- recurse->action((void *) recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_path_e | f_directory_recurse_do_flag_after_e);
+ recurse->action(recurse, path, f_directory_recurse_do_flag_top_e | f_directory_recurse_do_flag_path_e | f_directory_recurse_do_flag_after_e);
}
if (F_status_is_error(recurse->state.status)) {
recurse->state.status = F_okay;
if (recurse->flag & f_directory_recurse_do_flag_list_e) {
- recurse->action((void *) recurse, recurse->path, f_directory_recurse_do_flag_list_e);
+ recurse->action(recurse, recurse->path, f_directory_recurse_do_flag_list_e);
if (F_status_is_error(recurse->state.status)) {
private_inline_fl_directory_do_handle(recurse, recurse->path, f_directory_recurse_do_flag_list_e);
if (!flag_actions[j] || (recurse->flag & flag_actions[j])) {
recurse->state.status = F_okay;
- recurse->action((void *) recurse, list[k]->array[i], flag_actions[j] | flags[k]);
+ recurse->action(recurse, list[k]->array[i], flag_actions[j] | flags[k]);
if (F_status_is_error(recurse->state.status)) {
private_inline_fl_directory_do_handle(recurse, recurse->listing.directory.array[i], f_directory_recurse_do_flag_before_e | flags[k]);
if (flag_actions[j]) {
if (recurse->flag & flag_actions[j]) {
- recurse->action((void *) recurse, recurse->listing.directory.array[i], flag_actions[j] | f_directory_recurse_do_flag_directory_e);
+ recurse->action(recurse, recurse->listing.directory.array[i], flag_actions[j] | f_directory_recurse_do_flag_directory_e);
if (F_status_is_error(recurse->state.status)) {
private_inline_fl_directory_do_handle(recurse, recurse->listing.directory.array[i], flag_actions[j] | f_directory_recurse_do_flag_directory_e);
if (F_status_is_error(recurse->state.status)) break;
}
else {
- recurse->action((void *) recurse, recurse->listing.directory.array[i], f_directory_recurse_do_flag_directory_e);
+ recurse->action(recurse, recurse->listing.directory.array[i], f_directory_recurse_do_flag_directory_e);
if (F_status_is_error(recurse->state.status)) {
private_inline_fl_directory_do_handle(recurse, recurse->listing.directory.array[i], f_directory_recurse_do_flag_directory_e);
#endif
#ifndef _di_fake_do_copy_action_
- void fake_do_copy_action(void * const void_recurse, const f_string_static_t name, const uint16_t flag) {
+ void fake_do_copy_action(f_directory_recurse_do_t * const recurse, const f_string_static_t name, const uint16_t flag) {
- if (!void_recurse) return;
+ if (!recurse || !recurse->state.custom) return;
- f_directory_recurse_do_t * const recurse = (f_directory_recurse_do_t *) void_recurse;
+ fake_local_t * const local = (fake_local_t *) recurse->state.custom;
- if (!recurse->state.custom) return;
+ if (!local->main) return;
- fake_local_t * const local = (fake_local_t *) recurse->state.custom;
+ if (fake_signal_check(local->main)) {
+ recurse->state.status = F_status_set_error(F_interrupt);
+
+ return;
+ }
if (!local->custom_1) {
recurse->state.status = F_status_set_error(F_parameter);
#endif // _di_fake_do_copy_action_
#ifndef _di_fake_do_copy_handle_
- void fake_do_copy_handle(void * const void_recurse, const f_string_static_t name, const uint16_t flag) {
-
- if (!void_recurse) return;
-
- f_directory_recurse_do_t * const recurse = (f_directory_recurse_do_t *) void_recurse;
-
- // Do not print any errors on interrupts.
- if (F_status_set_fine(recurse->state.status) == F_interrupt) return;
+ void fake_do_copy_handle(f_directory_recurse_do_t * const recurse, const f_string_static_t name, const uint16_t flag) {
- if (!recurse->state.custom) return;
+ if (!recurse || !recurse->state.custom || F_status_set_fine(recurse->state.status) == F_interrupt) return;
fake_local_t * const local = (fake_local_t *) recurse->state.custom;
*
* @param recurse
* The recuse structure.
- * Must be of type f_directory_recurse_do_t.
+ *
+ * Must not be NULL.
*
* The recurse.state.code relevant flags:
* - fake_state_code_clone_d: Designate that this is a clone instead of copy.
* @see fake_build_copy()
*/
#ifndef _di_fake_do_copy_action_
- extern void fake_do_copy_action(void * const recurse, const f_string_static_t name, const uint16_t flag);
+ extern void fake_do_copy_action(f_directory_recurse_do_t * const recurse, const f_string_static_t name, const uint16_t flag);
#endif // _di_fake_do_copy_action_
/**
*
* @param recurse
* The recuse structure.
- * Must be of type f_directory_recurse_do_t.
+ *
+ * Must not be NULL.
*
* The recurse.state.code relevant flags:
* - fake_state_code_clone_d: Designate that this is a clone instead of copy.
* The flags representing the action.
*/
#ifndef _di_fake_do_copy_handle_
- extern void fake_do_copy_handle(void * const recurse, const f_string_static_t name, const uint16_t flag);
+ extern void fake_do_copy_handle(f_directory_recurse_do_t * const recurse, const f_string_static_t name, const uint16_t flag);
#endif // _di_fake_do_copy_handle_
#ifdef __cplusplus