1 /* 2 File operation contexts for the Midnight Commander 3 4 Copyright (C) 1999-2024 5 Free Software Foundation, Inc. 6 7 Written by: 8 Federico Mena <federico@nuclecu.unam.mx> 9 Miguel de Icaza <miguel@nuclecu.unam.mx> 10 11 This file is part of the Midnight Commander. 12 13 The Midnight Commander is free software: you can redistribute it 14 and/or modify it under the terms of the GNU General Public License as 15 published by the Free Software Foundation, either version 3 of the License, 16 or (at your option) any later version. 17 18 The Midnight Commander is distributed in the hope that it will be useful, 19 but WITHOUT ANY WARRANTY; without even the implied warranty of 20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 GNU General Public License for more details. 22 23 You should have received a copy of the GNU General Public License 24 along with this program. If not, see <http://www.gnu.org/licenses/>. 25 */ 26 27 /** \file fileopctx.c 28 * \brief Source: file operation contexts 29 * \date 1998-2007 30 * \author Federico Mena <federico@nuclecu.unam.mx> 31 * \author Miguel de Icaza <miguel@nuclecu.unam.mx> 32 */ 33 34 #include <config.h> 35 36 #include <unistd.h> 37 38 #include "lib/global.h" 39 #include "fileopctx.h" 40 #include "filegui.h" 41 #include "lib/search.h" 42 #include "lib/vfs/vfs.h" 43 44 /*** global variables ****************************************************************************/ 45 46 /*** file scope macro definitions ****************************************************************/ 47 48 /*** file scope type declarations ****************************************************************/ 49 50 /*** file scope variables ************************************************************************/ 51 52 /*** file scope functions ************************************************************************/ 53 /* --------------------------------------------------------------------------------------------- */ 54 55 /* --------------------------------------------------------------------------------------------- */ 56 /*** public functions ****************************************************************************/ 57 /* --------------------------------------------------------------------------------------------- */ 58 59 /** 60 * \fn file_op_context_t * file_op_context_new (FileOperation op) 61 * \param op file operation struct 62 * \return The newly-created context, filled with the default file mask values. 63 * 64 * Creates a new file operation context with the default values. If you later want 65 * to have a user interface for this, call file_op_context_create_ui(). 66 */ 67 68 file_op_context_t * 69 file_op_context_new (FileOperation op) /* */ 70 { 71 file_op_context_t *ctx; 72 73 ctx = g_new0 (file_op_context_t, 1); 74 ctx->operation = op; 75 ctx->eta_secs = 0.0; 76 ctx->progress_bytes = 0; 77 ctx->op_preserve = TRUE; 78 ctx->do_reget = 1; 79 ctx->stat_func = mc_lstat; 80 ctx->preserve = TRUE; 81 ctx->preserve_uidgid = (geteuid () == 0); 82 ctx->umask_kill = 0777777; 83 ctx->erase_at_end = TRUE; 84 ctx->skip_all = FALSE; 85 86 return ctx; 87 } 88 89 /* --------------------------------------------------------------------------------------------- */ 90 /** 91 * \fn void file_op_context_destroy (file_op_context_t *ctx) 92 * \param ctx The file operation context to destroy. 93 * 94 * Destroys the specified file operation context and its associated UI data, if 95 * it exists. 96 */ 97 98 void 99 file_op_context_destroy (file_op_context_t * ctx) /* */ 100 { 101 if (ctx != NULL) 102 { 103 file_op_context_destroy_ui (ctx); 104 mc_search_free (ctx->search_handle); 105 g_free (ctx); 106 } 107 } 108 109 /* --------------------------------------------------------------------------------------------- */ 110 111 file_op_total_context_t * 112 file_op_total_context_new (void) /* */ 113 { 114 file_op_total_context_t *tctx; 115 tctx = g_new0 (file_op_total_context_t, 1); 116 tctx->ask_overwrite = TRUE; 117 return tctx; 118 } 119 120 /* --------------------------------------------------------------------------------------------- */ 121 122 void 123 file_op_total_context_destroy (file_op_total_context_t * tctx) /* */ 124 { 125 g_free (tctx); 126 } 127 128 /* --------------------------------------------------------------------------------------------- */