summaryrefslogtreecommitdiffstats
path: root/source/ap/mc
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/mc')
-rw-r--r--source/ap/mc/changeset_446748619b5cb77ea63360a81bb16cd2dd2caff7.diff87
-rw-r--r--source/ap/mc/changeset_54a5139eec69438f8771ffddcff96a2e72a197ff.diff66
-rwxr-xr-xsource/ap/mc/mc.SlackBuild11
-rw-r--r--source/ap/mc/mc.image.sh.geeqie.diff18
-rw-r--r--source/ap/mc/mc.save.file.diff37
5 files changed, 169 insertions, 50 deletions
diff --git a/source/ap/mc/changeset_446748619b5cb77ea63360a81bb16cd2dd2caff7.diff b/source/ap/mc/changeset_446748619b5cb77ea63360a81bb16cd2dd2caff7.diff
new file mode 100644
index 000000000..080d6276f
--- /dev/null
+++ b/source/ap/mc/changeset_446748619b5cb77ea63360a81bb16cd2dd2caff7.diff
@@ -0,0 +1,87 @@
+Index: doc/man/mc.1.in
+===================================================================
+--- doc/man/mc.1.in (revision 6da546bcf3a09b7710bc3b69d38e736e3273c34b)
++++ doc/man/mc.1.in (revision 446748619b5cb77ea63360a81bb16cd2dd2caff7)
+@@ -173,9 +173,10 @@
+ .PP
+ If both paths are specified, the first path name is the directory to show
+-in the left panel; the second path name is the directory to be shown in
+-the right panel.
++in the active panel; the second path name is the directory to be shown in
++the other panel.
+ .PP
+ If one path is specified, the path name is the directory to show
+-in the active panel; current directory is shown in the passive panel.
++in the active panel; value of "other_dir" from panels.ini is the directory
++to be shown in the passive panel.
+ .PP
+ If no paths are specified, current directory is shown in the active panel;
+Index: doc/man/ru/mc.1.in
+===================================================================
+--- doc/man/ru/mc.1.in (revision 6da546bcf3a09b7710bc3b69d38e736e3273c34b)
++++ doc/man/ru/mc.1.in (revision 446748619b5cb77ea63360a81bb16cd2dd2caff7)
+@@ -150,11 +150,12 @@
+ .PP
+ Если в командной строке указаны два каталога, первый будет отображаться
+-в левой панели, второй \- в правой.
++в активной панели, второй \- в другой панели.
+ .PP
+ Если указан только один каталог, он будет отображён в активной панели,
+-во второй панели будет отображён текущий каталог.
++во второй панели будет отображён каталог, указанный в параметре "other_dir"
++в файле panels.ini.
+ .PP
+ Если каталоги не указаны, в активной панели будет отображён текущий каталог,
+-а во второй панели \- каталог, указанный в параметре "other_dir" в файла panels.ini.
++а во второй панели \- каталог, указанный в параметре "other_dir" в файле panels.ini.
+ .\"NODE "Overview"
+ .SH "Главное окно программы"
+Index: src/filemanager/midnight.c
+===================================================================
+--- src/filemanager/midnight.c (revision b451e8d13ddf89f1b1a00b1c2f240e4deaf8abe7)
++++ src/filemanager/midnight.c (revision 446748619b5cb77ea63360a81bb16cd2dd2caff7)
+@@ -585,13 +585,13 @@
+ * 'mc' (no arguments): mc_run_param0 == NULL, mc_run_param1 == NULL
+ * active panel uses current directory
+- * passive panel uses "other_dir" from ini
++ * passive panel uses "other_dir" from panels.ini
+ *
+ * 'mc dir1 dir2' (two arguments): mc_run_param0 != NULL, mc_run_param1 != NULL
+- * left panel uses mc_run_param0
+- * right panel uses mc_run_param1
++ * active panel uses mc_run_param0
++ * passive panel uses mc_run_param1
+ *
+ * 'mc dir1' (single argument): mc_run_param0 != NULL, mc_run_param1 == NULL
+- * active panel uses current directory
+- * passive panel uses mc_run_param0
++ * active panel uses mc_run_param0
++ * passive panel uses "other_dir" from panels.ini
+ */
+
+@@ -620,6 +620,6 @@
+ {
+ /* one argument */
+- current_dir = NULL; /* assume current dir */
+- other_dir = (char *) mc_run_param0;
++ current_dir = (char *) mc_run_param0;
++ other_dir = saved_other_dir; /* from ini */
+ }
+ }
+@@ -641,12 +641,12 @@
+ {
+ /* two arguments */
+- current_dir = mc_run_param1;
+- other_dir = (char *) mc_run_param0;
++ current_dir = (char *) mc_run_param0;
++ other_dir = mc_run_param1;
+ }
+ else /* mc_run_param0 != NULL && mc_run_param1 == NULL */
+ {
+ /* one argument */
+- current_dir = NULL; /* assume current dir */ ;
+- other_dir = (char *) mc_run_param0;
++ current_dir = (char *) mc_run_param0;
++ other_dir = saved_other_dir; /* from ini */
+ }
+ }
diff --git a/source/ap/mc/changeset_54a5139eec69438f8771ffddcff96a2e72a197ff.diff b/source/ap/mc/changeset_54a5139eec69438f8771ffddcff96a2e72a197ff.diff
new file mode 100644
index 000000000..bfb33b5c1
--- /dev/null
+++ b/source/ap/mc/changeset_54a5139eec69438f8771ffddcff96a2e72a197ff.diff
@@ -0,0 +1,66 @@
+Index: src/filemanager/file.c
+===================================================================
+--- src/filemanager/file.c (revision 0fe4734fd6efb169a4057b84a44c223108b957cb)
++++ src/filemanager/file.c (revision 54a5139eec69438f8771ffddcff96a2e72a197ff)
+@@ -1273,6 +1273,6 @@
+ /** Initialize variables for progress bars */
+ static FileProgressStatus
+-panel_operate_init_totals (FileOperation operation, const WPanel * panel, const char *source,
+- FileOpContext * ctx, filegui_dialog_type_t dialog_type)
++panel_operate_init_totals (const WPanel * panel, const char *source, FileOpContext * ctx,
++ filegui_dialog_type_t dialog_type)
+ {
+ FileProgressStatus status;
+@@ -1283,5 +1283,5 @@
+ #endif
+
+- if (operation != OP_MOVE && verbose && file_op_compute_totals)
++ if (verbose && file_op_compute_totals)
+ {
+ ComputeDirSizeUI *ui;
+@@ -2379,11 +2379,4 @@
+ if (ctx->erase_at_end)
+ {
+- /* remove files after move */
+- if (erase_list != NULL)
+- {
+- file_op_context_destroy_ui (ctx);
+- file_op_context_create_ui (ctx, FALSE, FILEGUI_DIALOG_DELETE_ITEM);
+- }
+-
+ while (erase_list != NULL && return_status != FILE_ABORT)
+ {
+@@ -2793,12 +2786,10 @@
+ if (operation == OP_DELETE)
+ dialog_type = FILEGUI_DIALOG_DELETE_ITEM;
++ else if (single_entry && S_ISDIR (selection (panel)->st.st_mode))
++ dialog_type = FILEGUI_DIALOG_MULTI_ITEM;
++ else if (single_entry || force_single)
++ dialog_type = FILEGUI_DIALOG_ONE_ITEM;
+ else
+- {
+- dialog_type = ((operation != OP_COPY) || single_entry || force_single)
+- ? FILEGUI_DIALOG_ONE_ITEM : FILEGUI_DIALOG_MULTI_ITEM;
+-
+- if (single_entry && (operation == OP_COPY) && S_ISDIR (selection (panel)->st.st_mode))
+- dialog_type = FILEGUI_DIALOG_MULTI_ITEM;
+- }
++ dialog_type = FILEGUI_DIALOG_MULTI_ITEM;
+ }
+
+@@ -2845,6 +2836,6 @@
+ source_with_vpath = vfs_path_append_new (panel->cwd_vpath, source, (char *) NULL);
+ #endif /* WITH_FULL_PATHS */
+- if (panel_operate_init_totals
+- (operation, panel, vfs_path_as_str (source_with_vpath), ctx, dialog_type) == FILE_CONT)
++ if (panel_operate_init_totals (panel, vfs_path_as_str (source_with_vpath), ctx, dialog_type)
++ == FILE_CONT)
+ {
+ if (operation == OP_DELETE)
+@@ -2937,5 +2928,5 @@
+ }
+
+- if (panel_operate_init_totals (operation, panel, NULL, ctx, dialog_type) == FILE_CONT)
++ if (panel_operate_init_totals (panel, NULL, ctx, dialog_type) == FILE_CONT)
+ {
+ /* Loop for every file, perform the actual copy operation */
diff --git a/source/ap/mc/mc.SlackBuild b/source/ap/mc/mc.SlackBuild
index 21d997db6..bb78ba596 100755
--- a/source/ap/mc/mc.SlackBuild
+++ b/source/ap/mc/mc.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2008, 2009, 2010, 2011 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010, 2011, 2013 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -64,12 +64,15 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Fix tmp path for saving files:
-zcat $CWD/mc.save.file.diff.gz | patch -p1 --verbose || exit 1
-
# Use geeqie instead of gqview as an external image viewer:
zcat $CWD/mc.image.sh.geeqie.diff.gz | patch -p1 --verbose || exit 1
+# Upstream bugfix for crash moving directories:
+zcat $CWD/changeset_54a5139eec69438f8771ffddcff96a2e72a197ff.diff.gz | patch -p0 --verbose || exit 1
+
+# Upstream fix for cmdline directory handling:
+zcat $CWD/changeset_446748619b5cb77ea63360a81bb16cd2dd2caff7.diff.gz | patch -p0 --verbose || exit 1
+
if [ ! -x ./configure ]; then
./autogen.sh
fi
diff --git a/source/ap/mc/mc.image.sh.geeqie.diff b/source/ap/mc/mc.image.sh.geeqie.diff
index 413807e92..8a7fe1c56 100644
--- a/source/ap/mc/mc.image.sh.geeqie.diff
+++ b/source/ap/mc/mc.image.sh.geeqie.diff
@@ -1,11 +1,11 @@
---- ./misc/ext.d/image.sh.orig 2012-07-18 04:30:23.000000000 -0500
-+++ ./misc/ext.d/image.sh 2012-09-08 14:39:11.998159169 -0500
-@@ -36,7 +36,7 @@
- if [ "$DISPLAY" = "" ]; then
- zgv "${MC_EXT_FILENAME}"
- else
+--- ./misc/ext.d/image.sh.orig 2013-05-29 01:53:42.379848005 -0500
++++ ./misc/ext.d/image.sh 2013-05-29 01:54:54.639853218 -0500
+@@ -39,7 +39,7 @@
+ ;;
+ *)
+ if [ -n "$DISPLAY" ]; then
- (gqview "${MC_EXT_FILENAME}" &)
+ (geeqie "${MC_EXT_FILENAME}" &)
- fi
- ;;
- esac
+ elif see >/dev/null 2>&1; then
+ (see "${MC_EXT_FILENAME}" &)
+ else
diff --git a/source/ap/mc/mc.save.file.diff b/source/ap/mc/mc.save.file.diff
deleted file mode 100644
index f54748c1b..000000000
--- a/source/ap/mc/mc.save.file.diff
+++ /dev/null
@@ -1,37 +0,0 @@
-diff --git a/src/editor/editcmd.c b/src/editor/editcmd.c
-index 2261aaa..536ac7e 100644
---- a/src/editor/editcmd.c
-+++ b/src/editor/editcmd.c
-@@ -222,7 +222,8 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath)
- if (savedir == NULL)
- savedir = g_strdup (".");
-
-- saveprefix = mc_build_filename (savedir, "cooledit", NULL);
-+ /* Token-related function never return leading slash, so we need add it manually */
-+ saveprefix = mc_build_filename ("/", savedir, "cooledit", NULL);
- g_free (savedir);
- fd = mc_mkstemps (&savename_vpath, saveprefix, NULL);
- g_free (saveprefix);
-@@ -365,13 +366,21 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath)
-
- if (this_save_mode == EDIT_DO_BACKUP)
- {
-+ char *tmp_store_filename;
-+ vfs_path_element_t *last_vpath_element;
- vfs_path_t *tmp_vpath;
- gboolean ok;
-
- #ifdef HAVE_ASSERT_H
- assert (option_backup_ext != NULL);
- #endif
-- tmp_vpath = vfs_path_append_new (real_filename_vpath, option_backup_ext, (char *) NULL);
-+ /* add backup extention to the path */
-+ tmp_vpath = vfs_path_clone (real_filename_vpath);
-+ last_vpath_element = (vfs_path_element_t *) vfs_path_get_by_index (tmp_vpath, -1);
-+ tmp_store_filename = last_vpath_element->path;
-+ last_vpath_element->path = g_strdup_printf ("%s%s", tmp_store_filename, option_backup_ext);
-+ g_free (tmp_store_filename);
-+
- ok = (mc_rename (real_filename_vpath, tmp_vpath) != -1);
- vfs_path_free (tmp_vpath);
- if (!ok)