From b2b10f1f878381f7c5401969be6d496f44b209ea Mon Sep 17 00:00:00 2001 From: Andrew Borodin Date: Sat, 17 Aug 2024 14:57:49 +0300 Subject: [PATCH] (file_op_total_context_t): remove. All members were moved to file_op_context_t. Signed-off-by: Andrew Borodin --- src/filemanager/file.c | 167 +++++++++++++++++------------------- src/filemanager/file.h | 13 ++- src/filemanager/filegui.c | 19 ++-- src/filemanager/filegui.h | 4 +- src/filemanager/fileopctx.c | 20 +---- src/filemanager/fileopctx.h | 27 +++--- src/filemanager/tree.c | 20 ++--- src/util.c | 5 +- 8 files changed, 112 insertions(+), 163 deletions(-) diff --git a/src/filemanager/file.c b/src/filemanager/file.c index 1d5786f3c..91ea587ea 100644 --- a/src/filemanager/file.c +++ b/src/filemanager/file.c @@ -814,13 +814,13 @@ panel_operate_init_totals (const WPanel *panel, const vfs_path_t *source, /* --------------------------------------------------------------------------------------------- */ static FileProgressStatus -progress_update_one (file_op_total_context_t *tctx, file_op_context_t *ctx, off_t add) +progress_update_one (file_op_context_t *ctx, off_t add) { gint64 tv_current; static gint64 tv_start = -1; - tctx->progress_count++; - tctx->progress_bytes += (uintmax_t) add; + ctx->progress_count++; + ctx->progress_bytes += (uintmax_t) add; tv_current = g_get_monotonic_time (); @@ -831,8 +831,8 @@ progress_update_one (file_op_total_context_t *tctx, file_op_context_t *ctx, off_ { if (verbose && ctx->dialog_type == FILEGUI_DIALOG_MULTI_ITEM) { - file_progress_show_count (ctx, tctx->progress_count, ctx->total_count); - file_progress_show_total (tctx, ctx, tctx->progress_bytes, TRUE); + file_progress_show_count (ctx, ctx->progress_count, ctx->total_count); + file_progress_show_total (ctx, ctx->progress_bytes, TRUE); } tv_start = tv_current; @@ -1131,8 +1131,8 @@ files_error (const char *format, const char *file1, const char *file2) /* --------------------------------------------------------------------------------------------- */ static void -copy_file_file_display_progress (file_op_total_context_t *tctx, file_op_context_t *ctx, - gint64 tv_current, off_t file_part, off_t file_size) +copy_file_file_display_progress (file_op_context_t *ctx, gint64 tv_current, off_t file_part, + off_t file_size) { gint64 dt; @@ -1156,12 +1156,12 @@ copy_file_file_display_progress (file_op_total_context_t *tctx, file_op_context_ { gint64 total_secs; - total_secs = (tv_current - tctx->total_transfer_start) / G_USEC_PER_SEC; + total_secs = (tv_current - ctx->total_transfer_start) / G_USEC_PER_SEC; total_secs = MAX (1, total_secs); - tctx->total_bps = tctx->copied_bytes / total_secs; - const uintmax_t remain_bytes = ctx->total_bytes - tctx->copied_bytes; - tctx->total_eta_secs = tctx->total_bps != 0 ? remain_bytes / tctx->total_bps : 0; + ctx->total_bps = ctx->copied_bytes / total_secs; + const uintmax_t remain_bytes = ctx->total_bytes - ctx->copied_bytes; + ctx->total_eta_secs = ctx->total_bps != 0 ? remain_bytes / ctx->total_bps : 0; } } @@ -1191,7 +1191,6 @@ try_remove_file (file_op_context_t *ctx, const vfs_path_t *vpath, FileProgressSt * Move single file or one of many files from one location to another. * * @panel pointer to panel in case of single file, NULL otherwise - * @tctx file operation total context object * @ctx file operation context object * @s source file name * @d destination file name @@ -1199,8 +1198,7 @@ try_remove_file (file_op_context_t *ctx, const vfs_path_t *vpath, FileProgressSt * @return operation result */ static FileProgressStatus -move_file_file (const WPanel *panel, file_op_total_context_t *tctx, file_op_context_t *ctx, - const char *s, const char *d) +move_file_file (const WPanel *panel, file_op_context_t *ctx, const char *s, const char *d) { struct stat src_stat, dst_stat; FileProgressStatus return_status = FILE_CONT; @@ -1283,7 +1281,7 @@ move_file_file (const WPanel *panel, file_op_total_context_t *tctx, file_op_cont if (mc_rename (src_vpath, dst_vpath) == 0) { /* FIXME: do we really need to update progress in case of single file? */ - return_status = progress_update_one (tctx, ctx, src_stat.st_size); + return_status = progress_update_one (ctx, src_stat.st_size); goto ret; } } @@ -1324,10 +1322,10 @@ move_file_file (const WPanel *panel, file_op_total_context_t *tctx, file_op_cont goto ret; } - old_ask_overwrite = tctx->ask_overwrite; - tctx->ask_overwrite = FALSE; - return_status = copy_file_file (tctx, ctx, s, d); - tctx->ask_overwrite = old_ask_overwrite; + old_ask_overwrite = ctx->ask_overwrite; + ctx->ask_overwrite = FALSE; + return_status = copy_file_file (ctx, s, d); + ctx->ask_overwrite = old_ask_overwrite; if (return_status != FILE_CONT) goto ret; @@ -1353,7 +1351,7 @@ move_file_file (const WPanel *panel, file_op_total_context_t *tctx, file_op_cont goto ret; if (!copy_done) - return_status = progress_update_one (tctx, ctx, src_stat.st_size); + return_status = progress_update_one (ctx, src_stat.st_size); ret: vfs_path_free (src_vpath, TRUE); @@ -1369,22 +1367,22 @@ move_file_file (const WPanel *panel, file_op_total_context_t *tctx, file_op_cont /** Don't update progress status if progress_count==NULL */ static FileProgressStatus -erase_file (file_op_total_context_t *tctx, file_op_context_t *ctx, const vfs_path_t *vpath) +erase_file (file_op_context_t *ctx, const vfs_path_t *vpath) { struct stat buf; FileProgressStatus return_status; /* check buttons if deleting info was changed */ - if (file_progress_show_deleting (ctx, vpath, &tctx->progress_count)) + if (file_progress_show_deleting (ctx, vpath, &ctx->progress_count)) { - file_progress_show_count (ctx, tctx->progress_count, ctx->total_count); + file_progress_show_count (ctx, ctx->progress_count, ctx->total_count); if (file_progress_check_buttons (ctx) == FILE_ABORT) return FILE_ABORT; mc_refresh (); } - if (tctx->progress_count != 0 && mc_lstat (vpath, &buf) != 0) + if (ctx->progress_count != 0 && mc_lstat (vpath, &buf) != 0) { /* ignore, most likely the mc_unlink fails, too */ buf.st_size = 0; @@ -1393,7 +1391,7 @@ erase_file (file_op_total_context_t *tctx, file_op_context_t *ctx, const vfs_pat if (!try_remove_file (ctx, vpath, &return_status) && return_status == FILE_ABORT) return FILE_ABORT; - if (tctx->progress_count == 0) + if (ctx->progress_count == 0) return FILE_CONT; return file_progress_check_buttons (ctx); @@ -1430,7 +1428,7 @@ try_erase_dir (file_op_context_t *ctx, const vfs_path_t *vpath) ignore_all -> remove as much as possible */ static FileProgressStatus -recursive_erase (file_op_total_context_t *tctx, file_op_context_t *ctx, const vfs_path_t *vpath) +recursive_erase (file_op_context_t *ctx, const vfs_path_t *vpath) { struct vfs_dirent *next; DIR *reading; @@ -1456,9 +1454,9 @@ recursive_erase (file_op_total_context_t *tctx, file_op_context_t *ctx, const vf return FILE_RETRY; } if (S_ISDIR (buf.st_mode)) - return_status = recursive_erase (tctx, ctx, tmp_vpath); + return_status = recursive_erase (ctx, tmp_vpath); else - return_status = erase_file (tctx, ctx, tmp_vpath); + return_status = erase_file (ctx, tmp_vpath); vfs_path_free (tmp_vpath, TRUE); } mc_closedir (reading); @@ -1467,7 +1465,7 @@ recursive_erase (file_op_total_context_t *tctx, file_op_context_t *ctx, const vf return FILE_ABORT; file_progress_show_deleting (ctx, vpath, NULL); - file_progress_show_count (ctx, tctx->progress_count, ctx->total_count); + file_progress_show_count (ctx, ctx->progress_count, ctx->total_count); if (file_progress_check_buttons (ctx) == FILE_ABORT) return FILE_ABORT; @@ -1534,13 +1532,12 @@ erase_dir_iff_empty (file_op_context_t *ctx, const vfs_path_t *vpath, size_t cou /* --------------------------------------------------------------------------------------------- */ static void -erase_dir_after_copy (file_op_total_context_t *tctx, file_op_context_t *ctx, - const vfs_path_t *vpath, FileProgressStatus *status) +erase_dir_after_copy (file_op_context_t *ctx, const vfs_path_t *vpath, FileProgressStatus *status) { if (ctx->erase_at_end && erase_list != NULL) { /* Reset progress count before delete to avoid counting files twice */ - tctx->progress_count = tctx->prev_progress_count; + ctx->progress_count = ctx->prev_progress_count; while (!g_queue_is_empty (erase_list) && *status != FILE_ABORT) { @@ -1549,18 +1546,18 @@ erase_dir_after_copy (file_op_total_context_t *tctx, file_op_context_t *ctx, lp = (link_t *) g_queue_pop_head (erase_list); if (S_ISDIR (lp->st_mode)) - *status = erase_dir_iff_empty (ctx, lp->src_vpath, tctx->progress_count); + *status = erase_dir_iff_empty (ctx, lp->src_vpath, ctx->progress_count); else - *status = erase_file (tctx, ctx, lp->src_vpath); + *status = erase_file (ctx, lp->src_vpath); free_link (lp); } /* Save progress counter before move next directory */ - tctx->prev_progress_count = tctx->progress_count; + ctx->prev_progress_count = ctx->progress_count; } - erase_dir_iff_empty (ctx, vpath, tctx->progress_count); + erase_dir_iff_empty (ctx, vpath, ctx->progress_count); } /* }}} */ @@ -1571,7 +1568,6 @@ erase_dir_after_copy (file_op_total_context_t *tctx, file_op_context_t *ctx, * Move single directory or one of many directories from one location to another. * * @panel pointer to panel in case of single directory, NULL otherwise - * @tctx file operation total context object * @ctx file operation context object * @s source directory name * @d destination directory name @@ -1579,8 +1575,7 @@ erase_dir_after_copy (file_op_total_context_t *tctx, file_op_context_t *ctx, * @return operation result */ static FileProgressStatus -do_move_dir_dir (const WPanel *panel, file_op_total_context_t *tctx, file_op_context_t *ctx, - const char *s, const char *d) +do_move_dir_dir (const WPanel *panel, file_op_context_t *ctx, const char *s, const char *d) { struct stat src_stat, dst_stat; FileProgressStatus return_status = FILE_CONT; @@ -1642,7 +1637,7 @@ do_move_dir_dir (const WPanel *panel, file_op_total_context_t *tctx, file_op_con goto ret; } - return_status = copy_dir_dir (tctx, ctx, s, d, FALSE, TRUE, TRUE, NULL); + return_status = copy_dir_dir (ctx, s, d, FALSE, TRUE, TRUE, NULL); if (return_status != FILE_CONT) goto ret; @@ -1697,7 +1692,7 @@ do_move_dir_dir (const WPanel *panel, file_op_total_context_t *tctx, file_op_con goto ret; } - return_status = copy_dir_dir (tctx, ctx, s, d, FALSE, FALSE, TRUE, NULL); + return_status = copy_dir_dir (ctx, s, d, FALSE, FALSE, TRUE, NULL); if (return_status != FILE_CONT) goto ret; @@ -1719,7 +1714,7 @@ do_move_dir_dir (const WPanel *panel, file_op_total_context_t *tctx, file_op_con mc_refresh (); - erase_dir_after_copy (tctx, ctx, src_vpath, &return_status); + erase_dir_after_copy (ctx, src_vpath, &return_status); ret: erase_list = free_erase_list (erase_list); @@ -2002,9 +1997,8 @@ do_confirm_erase (const WPanel *panel, const char *source, struct stat *src_stat /* --------------------------------------------------------------------------------------------- */ static FileProgressStatus -operate_single_file (const WPanel *panel, file_op_total_context_t *tctx, file_op_context_t *ctx, - const char *src, struct stat *src_stat, const char *dest, - filegui_dialog_type_t dialog_type) +operate_single_file (const WPanel *panel, file_op_context_t *ctx, const char *src, + struct stat *src_stat, const char *dest, filegui_dialog_type_t dialog_type) { FileProgressStatus value; vfs_path_t *src_vpath; @@ -2031,9 +2025,9 @@ operate_single_file (const WPanel *panel, file_op_total_context_t *tctx, file_op if (value == FILE_CONT) { if (is_file) - value = erase_file (tctx, ctx, src_vpath); + value = erase_file (ctx, src_vpath); else - value = erase_dir (tctx, ctx, src_vpath); + value = erase_dir (ctx, src_vpath); } } else @@ -2069,9 +2063,9 @@ operate_single_file (const WPanel *panel, file_op_total_context_t *tctx, file_op } if (is_file) - value = copy_file_file (tctx, ctx, src, dest); + value = copy_file_file (ctx, src, dest); else - value = copy_dir_dir (tctx, ctx, src, dest, TRUE, FALSE, FALSE, NULL); + value = copy_dir_dir (ctx, src, dest, TRUE, FALSE, FALSE, NULL); } break; @@ -2083,9 +2077,9 @@ operate_single_file (const WPanel *panel, file_op_total_context_t *tctx, file_op file_progress_ui_create (ctx, TRUE, FILEGUI_DIALOG_ONE_ITEM); if (is_file) - value = move_file_file (panel, tctx, ctx, src, dest); + value = move_file_file (panel, ctx, src, dest); else - value = do_move_dir_dir (panel, tctx, ctx, src, dest); + value = do_move_dir_dir (panel, ctx, src, dest); break; default: @@ -2105,8 +2099,8 @@ operate_single_file (const WPanel *panel, file_op_total_context_t *tctx, file_op /* --------------------------------------------------------------------------------------------- */ static FileProgressStatus -operate_one_file (const WPanel *panel, file_op_total_context_t *tctx, file_op_context_t *ctx, - const char *src, struct stat *src_stat, const char *dest) +operate_one_file (const WPanel *panel, file_op_context_t *ctx, const char *src, + struct stat *src_stat, const char *dest) { FileProgressStatus value = FILE_CONT; vfs_path_t *src_vpath; @@ -2122,9 +2116,9 @@ operate_one_file (const WPanel *panel, file_op_total_context_t *tctx, file_op_co if (ctx->operation == OP_DELETE) { if (is_file) - value = erase_file (tctx, ctx, src_vpath); + value = erase_file (ctx, src_vpath); else - value = erase_dir (tctx, ctx, src_vpath); + value = erase_dir (ctx, src_vpath); } else { @@ -2145,17 +2139,17 @@ operate_one_file (const WPanel *panel, file_op_total_context_t *tctx, file_op_co is_file = !S_ISDIR (src_stat->st_mode); if (is_file) - value = copy_file_file (tctx, ctx, src, dest); + value = copy_file_file (ctx, src, dest); else - value = copy_dir_dir (tctx, ctx, src, dest, TRUE, FALSE, FALSE, NULL); + value = copy_dir_dir (ctx, src, dest, TRUE, FALSE, FALSE, NULL); dest_dirs = free_linklist (dest_dirs); break; case OP_MOVE: if (is_file) - value = move_file_file (NULL, tctx, ctx, src, dest); + value = move_file_file (NULL, ctx, src, dest); else - value = do_move_dir_dir (NULL, tctx, ctx, src, dest); + value = do_move_dir_dir (NULL, ctx, src, dest); break; default: @@ -2250,8 +2244,7 @@ file_is_symlink_to_dir (const vfs_path_t *vpath, struct stat *st, gboolean *stal /* --------------------------------------------------------------------------------------------- */ FileProgressStatus -copy_file_file (file_op_total_context_t *tctx, file_op_context_t *ctx, - const char *src_path, const char *dst_path) +copy_file_file (file_op_context_t *ctx, const char *src_path, const char *dst_path) { uid_t src_uid = (uid_t) (-1); gid_t src_gid = (gid_t) (-1); @@ -2363,7 +2356,7 @@ copy_file_file (file_op_total_context_t *tctx, file_op_context_t *ctx, goto ret_fast; /* Should we replace destination? */ - if (tctx->ask_overwrite) + if (ctx->ask_overwrite) { ctx->do_reget = 0; return_status = query_replace (ctx, src_path, &src_stat, dst_path, &dst_stat); @@ -2653,7 +2646,7 @@ copy_file_file (file_op_total_context_t *tctx, file_op_context_t *ctx, if (verbose) { - if (tctx->total_bps == 0 || (file_size / tctx->total_bps) > FILEOP_UPDATE_INTERVAL) + if (ctx->total_bps == 0 || (file_size / ctx->total_bps) > FILEOP_UPDATE_INTERVAL) file_progress_show (ctx, 0, file_size, "", TRUE); else file_progress_show (ctx, 1, 1, "", TRUE); @@ -2745,14 +2738,14 @@ copy_file_file (file_op_total_context_t *tctx, file_op_context_t *ctx, } } - tctx->copied_bytes = tctx->progress_bytes + file_part + ctx->do_reget; + ctx->copied_bytes = ctx->progress_bytes + file_part + ctx->do_reget; usecs = tv_current - tv_last_update; update_usecs = tv_current - tv_last_input; if (is_first_time || usecs > FILEOP_UPDATE_INTERVAL_US) { - copy_file_file_display_progress (tctx, ctx, tv_current, file_part, + copy_file_file_display_progress (ctx, tv_current, file_part, file_size - ctx->do_reget); tv_last_update = tv_current; } @@ -2762,14 +2755,14 @@ copy_file_file (file_op_total_context_t *tctx, file_op_context_t *ctx, if (update_usecs > FILEOP_STALLING_INTERVAL_US) stalled_msg = _("(stalled)"); - force_update = (tv_current - tctx->total_transfer_start) > FILEOP_UPDATE_INTERVAL_US; + force_update = (tv_current - ctx->total_transfer_start) > FILEOP_UPDATE_INTERVAL_US; if (verbose) { if (ctx->dialog_type == FILEGUI_DIALOG_MULTI_ITEM) { - file_progress_show_count (ctx, tctx->progress_count, ctx->total_count); - file_progress_show_total (tctx, ctx, tctx->copied_bytes, force_update); + file_progress_show_count (ctx, ctx->progress_count, ctx->total_count); + file_progress_show_total (ctx, ctx->copied_bytes, force_update); } file_progress_show (ctx, file_part + ctx->do_reget, file_size, stalled_msg, @@ -2943,7 +2936,7 @@ copy_file_file (file_op_total_context_t *tctx, file_op_context_t *ctx, } if (return_status == FILE_CONT) - return_status = progress_update_one (tctx, ctx, file_size); + return_status = progress_update_one (ctx, file_size); ret_fast: vfs_path_free (src_vpath, TRUE); @@ -2960,8 +2953,8 @@ copy_file_file (file_op_total_context_t *tctx, file_op_context_t *ctx, function calls */ FileProgressStatus -copy_dir_dir (file_op_total_context_t *tctx, file_op_context_t *ctx, const char *s, const char *d, - gboolean toplevel, gboolean move_over, gboolean do_delete, GSList *parent_dirs) +copy_dir_dir (file_op_context_t *ctx, const char *s, const char *d, gboolean toplevel, + gboolean move_over, gboolean do_delete, GSList *parent_dirs) { struct vfs_dirent *next; struct stat dst_stat, src_stat; @@ -3205,8 +3198,7 @@ copy_dir_dir (file_op_total_context_t *tctx, file_op_context_t *ctx, const char * dir already exists. So, we give the recursive call the flag 0 * meaning no toplevel. */ - return_status = - copy_dir_dir (tctx, ctx, path, mdpath, FALSE, FALSE, do_delete, parent_dirs); + return_status = copy_dir_dir (ctx, path, mdpath, FALSE, FALSE, do_delete, parent_dirs); g_free (mdpath); } else @@ -3214,7 +3206,7 @@ copy_dir_dir (file_op_total_context_t *tctx, file_op_context_t *ctx, const char char *dest_file; dest_file = mc_build_filename (d, x_basename (path), (char *) NULL); - return_status = copy_file_file (tctx, ctx, path, dest_file); + return_status = copy_file_file (ctx, path, dest_file); g_free (dest_file); } @@ -3234,9 +3226,9 @@ copy_dir_dir (file_op_total_context_t *tctx, file_op_context_t *ctx, const char tmp_vpath = NULL; } else if (S_ISDIR (dst_stat.st_mode)) - return_status = erase_dir_iff_empty (ctx, tmp_vpath, tctx->progress_count); + return_status = erase_dir_iff_empty (ctx, tmp_vpath, ctx->progress_count); else - return_status = erase_file (tctx, ctx, tmp_vpath); + return_status = erase_file (ctx, tmp_vpath); } vfs_path_free (tmp_vpath, TRUE); } @@ -3277,9 +3269,9 @@ copy_dir_dir (file_op_total_context_t *tctx, file_op_context_t *ctx, const char /* {{{ Move routines */ FileProgressStatus -move_dir_dir (file_op_total_context_t *tctx, file_op_context_t *ctx, const char *s, const char *d) +move_dir_dir (file_op_context_t *ctx, const char *s, const char *d) { - return do_move_dir_dir (NULL, tctx, ctx, s, d); + return do_move_dir_dir (NULL, ctx, s, d); } /* }}} */ @@ -3288,10 +3280,10 @@ move_dir_dir (file_op_total_context_t *tctx, file_op_context_t *ctx, const char /* {{{ Erase routines */ FileProgressStatus -erase_dir (file_op_total_context_t *tctx, file_op_context_t *ctx, const vfs_path_t *vpath) +erase_dir (file_op_context_t *ctx, const vfs_path_t *vpath) { file_progress_show_deleting (ctx, vpath, NULL); - file_progress_show_count (ctx, tctx->progress_count, ctx->total_count); + file_progress_show_count (ctx, ctx->progress_count, ctx->total_count); if (file_progress_check_buttons (ctx) == FILE_ABORT) return FILE_ABORT; @@ -3310,7 +3302,7 @@ erase_dir (file_op_total_context_t *tctx, file_op_context_t *ctx, const vfs_path error = query_recursive (ctx, vfs_path_as_str (vpath)); if (error == FILE_CONT) - error = recursive_erase (tctx, ctx, vpath); + error = recursive_erase (ctx, vpath); return error; } @@ -3462,7 +3454,6 @@ panel_operate (void *source_panel, FileOperation operation, gboolean force_singl int i; FileProgressStatus value; file_op_context_t *ctx; - file_op_total_context_t *tctx; filegui_dialog_type_t dialog_type = FILEGUI_DIALOG_ONE_ITEM; gboolean do_bg = FALSE; /* do background operation? */ @@ -3508,8 +3499,7 @@ panel_operate (void *source_panel, FileOperation operation, gboolean force_singl goto ret_fast; } - tctx = file_op_total_context_new (); - tctx->total_transfer_start = g_get_monotonic_time (); + ctx->total_transfer_start = g_get_monotonic_time (); #ifdef ENABLE_BACKGROUND /* Did the user select to do a background operation? */ @@ -3586,7 +3576,7 @@ panel_operate (void *source_panel, FileOperation operation, gboolean force_singl } } - value = operate_single_file (panel, tctx, ctx, source, &src_stat, dest, dialog_type); + value = operate_single_file (panel, ctx, source, &src_stat, dest, dialog_type); if ((value == FILE_CONT) && !force_single) unmark_files (panel); } @@ -3630,7 +3620,7 @@ panel_operate (void *source_panel, FileOperation operation, gboolean force_singl source2 = panel->dir.list[i].fname->str; src_stat = panel->dir.list[i].st; - value = operate_one_file (panel, tctx, ctx, source2, &src_stat, dest); + value = operate_one_file (panel, ctx, source2, &src_stat, dest); if (value == FILE_ABORT) break; @@ -3642,8 +3632,8 @@ panel_operate (void *source_panel, FileOperation operation, gboolean force_singl { if (ctx->dialog_type == FILEGUI_DIALOG_MULTI_ITEM) { - file_progress_show_count (ctx, tctx->progress_count, ctx->total_count); - file_progress_show_total (tctx, ctx, tctx->progress_bytes, FALSE); + file_progress_show_count (ctx, ctx->progress_count, ctx->total_count); + file_progress_show_total (ctx, ctx->progress_bytes, FALSE); } if (operation != OP_DELETE) @@ -3692,7 +3682,6 @@ panel_operate (void *source_panel, FileOperation operation, gboolean force_singl } #endif /* ENABLE_BACKGROUND */ - file_op_total_context_destroy (tctx); ret_fast: file_op_context_destroy (ctx); diff --git a/src/filemanager/file.h b/src/filemanager/file.h index bf3507ed1..9e84279b4 100644 --- a/src/filemanager/file.h +++ b/src/filemanager/file.h @@ -41,16 +41,13 @@ struct dirsize_status_msg_t gboolean file_is_symlink_to_dir (const vfs_path_t * path, struct stat *st, gboolean * stale_link); -FileProgressStatus copy_file_file (file_op_total_context_t * tctx, file_op_context_t * ctx, - const char *src_path, const char *dst_path); -FileProgressStatus move_dir_dir (file_op_total_context_t * tctx, file_op_context_t * ctx, - const char *s, const char *d); -FileProgressStatus copy_dir_dir (file_op_total_context_t * tctx, file_op_context_t * ctx, - const char *s, const char *d, +FileProgressStatus copy_file_file (file_op_context_t * ctx, const char *src_path, + const char *dst_path); +FileProgressStatus move_dir_dir (file_op_context_t * ctx, const char *s, const char *d); +FileProgressStatus copy_dir_dir (file_op_context_t * ctx, const char *s, const char *d, gboolean toplevel, gboolean move_over, gboolean do_delete, GSList * parent_dirs); -FileProgressStatus erase_dir (file_op_total_context_t * tctx, file_op_context_t * ctx, - const vfs_path_t * vpath); +FileProgressStatus erase_dir (file_op_context_t * ctx, const vfs_path_t * vpath); gboolean panel_operate (void *source_panel, FileOperation op, gboolean force_single); diff --git a/src/filemanager/filegui.c b/src/filemanager/filegui.c index 510bf68b4..758775bc3 100644 --- a/src/filemanager/filegui.c +++ b/src/filemanager/filegui.c @@ -1052,8 +1052,7 @@ file_progress_show_count (file_op_context_t *ctx, size_t done, size_t total) /* --------------------------------------------------------------------------------------------- */ void -file_progress_show_total (file_op_total_context_t *tctx, file_op_context_t *ctx, - uintmax_t copied_bytes, gboolean show_summary) +file_progress_show_total (file_op_context_t *ctx, uintmax_t copied_bytes, gboolean show_summary) { char buffer2[BUF_TINY]; char buffer3[BUF_TINY]; @@ -1076,7 +1075,7 @@ file_progress_show_total (file_op_total_context_t *tctx, file_op_context_t *ctx, } } - if (!show_summary && tctx->total_bps == 0) + if (!show_summary && ctx->total_bps == 0) return; if (ui->time_label != NULL) @@ -1085,26 +1084,26 @@ file_progress_show_total (file_op_total_context_t *tctx, file_op_context_t *ctx, char buffer4[BUF_TINY]; tv_current = g_get_monotonic_time (); - file_frmt_time (buffer2, (tv_current - tctx->total_transfer_start) / G_USEC_PER_SEC); + file_frmt_time (buffer2, (tv_current - ctx->total_transfer_start) / G_USEC_PER_SEC); if (ctx->totals_computed) { - file_eta_prepare_for_show (buffer3, tctx->total_eta_secs, TRUE); - if (tctx->total_bps == 0) + file_eta_prepare_for_show (buffer3, ctx->total_eta_secs, TRUE); + if (ctx->total_bps == 0) label_set_textv (ui->time_label, _("Time: %s %s"), buffer2, buffer3); else { - file_bps_prepare_for_show (buffer4, (long) tctx->total_bps); + file_bps_prepare_for_show (buffer4, (long) ctx->total_bps); label_set_textv (ui->time_label, _("Time: %s %s (%s)"), buffer2, buffer3, buffer4); } } else { - if (tctx->total_bps == 0) + if (ctx->total_bps == 0) label_set_textv (ui->time_label, _("Time: %s"), buffer2); else { - file_bps_prepare_for_show (buffer4, (long) tctx->total_bps); + file_bps_prepare_for_show (buffer4, (long) ctx->total_bps); label_set_textv (ui->time_label, _("Time: %s (%s)"), buffer2, buffer4); } } @@ -1112,7 +1111,7 @@ file_progress_show_total (file_op_total_context_t *tctx, file_op_context_t *ctx, if (ui->total_bytes_label != NULL) { - size_trunc_len (buffer2, 5, tctx->copied_bytes, 0, panels_options.kilobyte_si); + size_trunc_len (buffer2, 5, ctx->copied_bytes, 0, panels_options.kilobyte_si); if (!ctx->totals_computed) hline_set_textv (ui->total_bytes_label, _(" Total: %s "), buffer2); diff --git a/src/filemanager/filegui.h b/src/filemanager/filegui.h index aee3c8d48..478037495 100644 --- a/src/filemanager/filegui.h +++ b/src/filemanager/filegui.h @@ -30,8 +30,8 @@ FileProgressStatus file_progress_check_buttons (file_op_context_t * ctx); void file_progress_show (file_op_context_t * ctx, off_t done, off_t total, const char *stalled_msg, gboolean force_update); void file_progress_show_count (file_op_context_t * ctx, size_t done, size_t total); -void file_progress_show_total (file_op_total_context_t * tctx, file_op_context_t * ctx, - uintmax_t copied_bytes, gboolean show_summary); +void file_progress_show_total (file_op_context_t * ctx, uintmax_t copied_bytes, + gboolean show_summary); void file_progress_show_source (file_op_context_t * ctx, const vfs_path_t * vpath); void file_progress_show_target (file_op_context_t * ctx, const vfs_path_t * vpath); gboolean file_progress_show_deleting (file_op_context_t * ctx, const vfs_path_t * vpath, diff --git a/src/filemanager/fileopctx.c b/src/filemanager/fileopctx.c index d92466f7b..1d42210a4 100644 --- a/src/filemanager/fileopctx.c +++ b/src/filemanager/fileopctx.c @@ -78,6 +78,7 @@ file_op_context_new (FileOperation op) ctx->preserve_uidgid = (geteuid () == 0); ctx->umask_kill = (mode_t) (~0); ctx->erase_at_end = TRUE; + ctx->ask_overwrite = TRUE; return ctx; } @@ -103,22 +104,3 @@ file_op_context_destroy (file_op_context_t *ctx) } /* --------------------------------------------------------------------------------------------- */ - -file_op_total_context_t * -file_op_total_context_new (void) -{ - file_op_total_context_t *tctx; - tctx = g_new0 (file_op_total_context_t, 1); - tctx->ask_overwrite = TRUE; - return tctx; -} - -/* --------------------------------------------------------------------------------------------- */ - -void -file_op_total_context_destroy (file_op_total_context_t *tctx) -{ - g_free (tctx); -} - -/* --------------------------------------------------------------------------------------------- */ diff --git a/src/filemanager/fileopctx.h b/src/filemanager/fileopctx.h index b94c5a341..4c5dcbc7c 100644 --- a/src/filemanager/fileopctx.h +++ b/src/filemanager/fileopctx.h @@ -91,11 +91,20 @@ typedef struct filegui_dialog_type_t dialog_type; /* Counters for progress indicators */ + size_t progress_count; + size_t prev_progress_count; /* Used in OP_MOVE between copy and remove directories */ + uintmax_t progress_bytes; + uintmax_t copied_bytes; + size_t total_count; uintmax_t total_bytes; /* Whether the panel total has been computed */ gboolean totals_computed; + size_t total_bps; + gint64 total_transfer_start; + double total_eta_secs; + /* Result from the recursive query */ FileCopyMode recursive_result; @@ -155,23 +164,12 @@ typedef struct /* Whether the file operation is in pause */ gboolean suspended; + gboolean ask_overwrite; + /* User interface data goes here */ void *ui; } file_op_context_t; -typedef struct -{ - size_t progress_count; - size_t prev_progress_count; /* Used in OP_MOVE between copy and remove directories */ - uintmax_t progress_bytes; - uintmax_t copied_bytes; - size_t total_bps; - gint64 total_transfer_start; - double total_eta_secs; - - gboolean ask_overwrite; -} file_op_total_context_t; - /*** global variables defined in .c file *********************************************************/ extern const char *op_names[3]; @@ -181,9 +179,6 @@ extern const char *op_names[3]; file_op_context_t *file_op_context_new (FileOperation op); void file_op_context_destroy (file_op_context_t * ctx); -file_op_total_context_t *file_op_total_context_new (void); -void file_op_total_context_destroy (file_op_total_context_t * tctx); - /* The following functions are implemented separately by each port */ FileProgressStatus file_progress_real_query_replace (file_op_context_t * ctx, enum OperationMode mode, const char *src, diff --git a/src/filemanager/tree.c b/src/filemanager/tree.c index d5fd9603e..228fb4dec 100644 --- a/src/filemanager/tree.c +++ b/src/filemanager/tree.c @@ -723,15 +723,12 @@ tree_copy (WTree *tree, const char *default_dest) if (dest != NULL && *dest != '\0') { file_op_context_t *ctx; - file_op_total_context_t *tctx; ctx = file_op_context_new (OP_COPY); - tctx = file_op_total_context_new (); file_progress_ui_create (ctx, FALSE, FILEGUI_DIALOG_MULTI_ITEM); - tctx->ask_overwrite = FALSE; - copy_dir_dir (tctx, ctx, vfs_path_as_str (tree->selected_ptr->name), dest, TRUE, FALSE, - FALSE, NULL); - file_op_total_context_destroy (tctx); + ctx->ask_overwrite = FALSE; + copy_dir_dir (ctx, vfs_path_as_str (tree->selected_ptr->name), dest, TRUE, FALSE, FALSE, + NULL); file_op_context_destroy (ctx); } @@ -770,13 +767,10 @@ tree_move (WTree *tree, const char *default_dest) else { file_op_context_t *ctx; - file_op_total_context_t *tctx; ctx = file_op_context_new (OP_MOVE); - tctx = file_op_total_context_new (); file_progress_ui_create (ctx, FALSE, FILEGUI_DIALOG_ONE_ITEM); - move_dir_dir (tctx, ctx, vfs_path_as_str (tree->selected_ptr->name), dest); - file_op_total_context_destroy (tctx); + move_dir_dir (ctx, vfs_path_as_str (tree->selected_ptr->name), dest); file_op_context_destroy (ctx); } @@ -811,7 +805,6 @@ tree_rmdir (void *data) { WTree *tree = data; file_op_context_t *ctx; - file_op_total_context_t *tctx; if (tree->selected_ptr == NULL) return; @@ -830,12 +823,9 @@ tree_rmdir (void *data) } ctx = file_op_context_new (OP_DELETE); - tctx = file_op_total_context_new (); - file_progress_ui_create (ctx, FALSE, FILEGUI_DIALOG_ONE_ITEM); - if (erase_dir (tctx, ctx, tree->selected_ptr->name) == FILE_CONT) + if (erase_dir (ctx, tree->selected_ptr->name) == FILE_CONT) tree_forget (tree); - file_op_total_context_destroy (tctx); file_op_context_destroy (ctx); } diff --git a/src/util.c b/src/util.c index 6cac67e04..056273c7f 100644 --- a/src/util.c +++ b/src/util.c @@ -55,17 +55,14 @@ check_for_default (const vfs_path_t *default_file_vpath, const vfs_path_t *file_ if (!exist_file (vfs_path_as_str (file_vpath))) { file_op_context_t *ctx; - file_op_total_context_t *tctx; if (!exist_file (vfs_path_as_str (default_file_vpath))) return FALSE; ctx = file_op_context_new (OP_COPY); - tctx = file_op_total_context_new (); file_progress_ui_create (ctx, 0, FALSE); - copy_file_file (tctx, ctx, vfs_path_as_str (default_file_vpath), + copy_file_file (ctx, vfs_path_as_str (default_file_vpath), vfs_path_as_str (file_vpath)); - file_op_total_context_destroy (tctx); file_op_context_destroy (ctx); }