2 * \brief Header: File and directory operation routines
8 #include <inttypes.h> /* off_t, uintmax_t */
10 #include "lib/global.h"
11 #include "lib/widget.h"
13 #include "fileopctx.h"
15 /*** typedefs(not structures) and defined constants **********************************************/
17 typedef struct dirsize_status_msg_t dirsize_status_msg_t
;
19 /*** enums ***************************************************************************************/
21 /*** structures declarations (and typedefs of structures)*****************************************/
23 /* status dialog of directory size computing */
24 struct dirsize_status_msg_t
26 status_msg_t status_msg
; /* base class */
33 const vfs_path_t
*dirname_vpath
;
38 /*** global variables defined in .c file *********************************************************/
40 /*** declarations of public functions ************************************************************/
42 gboolean
file_is_symlink_to_dir (const vfs_path_t
* path
, struct stat
*st
, gboolean
* stale_link
);
44 FileProgressStatus
copy_file_file (file_op_total_context_t
* tctx
, file_op_context_t
* ctx
,
45 const char *src_path
, const char *dst_path
);
46 FileProgressStatus
move_dir_dir (file_op_total_context_t
* tctx
, file_op_context_t
* ctx
,
47 const char *s
, const char *d
);
48 FileProgressStatus
copy_dir_dir (file_op_total_context_t
* tctx
, file_op_context_t
* ctx
,
49 const char *s
, const char *d
,
50 gboolean toplevel
, gboolean move_over
, gboolean do_delete
,
51 GSList
* parent_dirs
);
52 FileProgressStatus
erase_dir (file_op_total_context_t
* tctx
, file_op_context_t
* ctx
,
53 const vfs_path_t
* vpath
);
55 gboolean
panel_operate (void *source_panel
, FileOperation op
, gboolean force_single
);
57 /* Error reporting routines */
59 /* Report error with one file */
60 FileProgressStatus
file_error (gboolean allow_retry
, const char *format
, const char *file
);
62 /* return value is FILE_CONT or FILE_ABORT */
63 FileProgressStatus
compute_dir_size (const vfs_path_t
* dirname_vpath
, dirsize_status_msg_t
* sm
,
64 size_t *ret_dir_count
, size_t *ret_marked_count
,
65 uintmax_t * ret_total
, gboolean follow_symlinks
);
67 void dirsize_status_init_cb (status_msg_t
* sm
);
68 int dirsize_status_update_cb (status_msg_t
* sm
);
69 void dirsize_status_deinit_cb (status_msg_t
* sm
);
71 /*** inline functions ****************************************************************************/
72 #endif /* MC__FILE_H */