diff --git a/src/filemanager/filegui.c b/src/filemanager/filegui.c index ffca554b3..32a345fbf 100644 --- a/src/filemanager/filegui.c +++ b/src/filemanager/filegui.c @@ -1371,49 +1371,49 @@ file_mask_dialog (file_op_context_t * ctx, FileOperation operation, gboolean onl quick_widgets, NULL, NULL }; - ask_file_mask: - val = quick_dialog_skip (&qdlg, 4); - - if (val == B_CANCEL) + while (TRUE) { - g_free (def_text_secure); - return NULL; - } + val = quick_dialog_skip (&qdlg, 4); - ctx->stat_func = ctx->follow_links ? mc_stat : mc_lstat; + if (val == B_CANCEL) + { + g_free (def_text_secure); + return NULL; + } - if (ctx->op_preserve) - { - ctx->preserve = TRUE; - ctx->umask_kill = 0777777; - ctx->preserve_uidgid = (geteuid () == 0); - } - else - { - mode_t i2; + ctx->stat_func = ctx->follow_links ? mc_stat : mc_lstat; - ctx->preserve = ctx->preserve_uidgid = FALSE; - i2 = umask (0); - umask (i2); - ctx->umask_kill = i2 ^ 0777777; - } + if (ctx->op_preserve) + { + ctx->preserve = TRUE; + ctx->umask_kill = 0777777; + ctx->preserve_uidgid = (geteuid () == 0); + } + else + { + mode_t i2; - if ((dest_dir == NULL) || (*dest_dir == '\0')) - { - g_free (def_text_secure); - g_free (source_mask); - g_free (dest_dir); - return NULL; - } + ctx->preserve = ctx->preserve_uidgid = FALSE; + i2 = umask (0); + umask (i2); + ctx->umask_kill = i2 ^ 0777777; + } - ctx->search_handle = mc_search_new (source_mask, NULL); + if (dest_dir == NULL || *dest_dir == '\0') + { + g_free (def_text_secure); + g_free (source_mask); + g_free (dest_dir); + return NULL; + } + + ctx->search_handle = mc_search_new (source_mask, NULL); + if (ctx->search_handle != NULL) + break; - if (ctx->search_handle == NULL) - { message (D_ERROR, MSG_ERROR, _("Invalid source pattern '%s'"), source_mask); MC_PTR_FREE (dest_dir); MC_PTR_FREE (source_mask); - goto ask_file_mask; } g_free (def_text_secure);