updated: [abc295c] Merge branch 'mc-4.6'

Sergei Trofimovich slyfox at inbox.ru
Wed Jan 28 23:13:18 UTC 2009


The following commit has been merged in the master branch:
commit abc295cee2f4098c745429ed8464907628b49386
Merge: cad6ffd2bb47beb653e574d69d539fc6b9ffaaf9 66c9fde141b2e3534d8e52087cc7ca688d388687
Author: Sergei Trofimovich <slyfox at inbox.ru>
Date:   Thu Jan 29 01:12:09 2009 +0200

    Merge branch 'mc-4.6'
    
    * mc-4.6:
      Now a trailing slash will only be added in copy & move dialogs if the path itselfs
      copy/move dialog: add trailing '/' to default destination path (fix #181)

diff --combined src/file.c
index 100ab3e,b8d54e7..5606691
--- a/src/file.c
+++ b/src/file.c
@@@ -50,6 -50,8 +50,8 @@@
  #include <sys/stat.h>
  #include <unistd.h>
  
+ #include <mhl/string.h>
+ 
  #include "global.h"
  #include "tty.h"
  #include "eregex.h"
@@@ -212,7 -214,7 +214,7 @@@ do_transform_source (FileOpContext *ctx
  	case '*':
  	    if (next_reg < 0 || next_reg >= RE_NREGS
  		|| ctx->regs.start[next_reg] < 0) {
 -		message (1, MSG_ERROR, _(" Invalid target mask "));
 +		message (D_ERROR, MSG_ERROR, _(" Invalid target mask "));
  		transform_error = FILE_ABORT;
  		return NULL;
  	    }
@@@ -312,7 -314,7 +314,7 @@@ check_hardlinks (const char *src_name, 
  		    }
  		}
  	    }
 -	    message (1, MSG_ERROR, _(" Cannot make the hardlink "));
 +	    message (D_ERROR, MSG_ERROR, _(" Cannot make the hardlink "));
  	    return 0;
  	}
      lp = (struct link *) g_malloc (sizeof (struct link) + strlen (src_name)
@@@ -366,7 -368,7 +368,7 @@@ make_symlink (FileOpContext *ctx, cons
  
      if (ctx->stable_symlinks)
  	if (!vfs_file_is_local (src_path) || !vfs_file_is_local (dst_path)) {
 -	    message (1, MSG_ERROR,
 +	    message (D_ERROR, MSG_ERROR,
  			_(" Cannot make stable symlinks across "
  			  "non-local filesystems: \n\n"
  			  " Option Stable Symlinks will be disabled "));
@@@ -510,7 -512,7 +512,7 @@@ copy_file_file (FileOpContext *ctx, con
      if (dst_exists) {
  	/* Destination already exists */
  	if (sb.st_dev == sb2.st_dev && sb.st_ino == sb2.st_ino) {
 -	    message (1, MSG_ERROR,
 +	    message (D_ERROR, MSG_ERROR,
  		    _(" `%s' and `%s' are the same file "), src_path, dst_path);
  	    do_refresh ();
  	    return FILE_SKIP;
@@@ -586,7 -588,7 +588,7 @@@
  
      if (ctx->do_reget) {
  	if (mc_lseek (src_desc, ctx->do_reget, SEEK_SET) != ctx->do_reget) {
 -	    message (1, _("Warning"),
 +	    message (D_ERROR, _("Warning"),
  			_(" Reget failed, about to overwrite file "));
  	    ctx->do_reget = ctx->do_append = 0;
  	}
@@@ -868,7 -870,7 +870,7 @@@ copy_dir_dir (FileOpContext *ctx, cons
  
      if (is_in_linklist (parent_dirs, s, &cbuf)) {
  	/* we found a cyclic symbolic link */
 -	message (1, MSG_ERROR,
 +	message (D_ERROR, MSG_ERROR,
  		    _(" Cannot copy cyclic symbolic link \n `%s' "), s);
  	return FILE_SKIP;
      }
@@@ -1052,14 -1054,14 +1054,14 @@@ move_file_file (FileOpContext *ctx, con
  
  	    strcpy (st, path_trunc (s, msize));
  	    strcpy (dt, path_trunc (d, msize));
 -	    message (1, MSG_ERROR,
 +	    message (D_ERROR, MSG_ERROR,
  			_(" `%s' and `%s' are the same file "), st, dt);
  	    do_refresh ();
  	    return FILE_SKIP;
  	}
  
  	if (S_ISDIR (dst_stats.st_mode)) {
 -	    message (1, MSG_ERROR,
 +	    message (D_ERROR, MSG_ERROR,
  			_(" Cannot overwrite directory `%s' "), d);
  	    do_refresh ();
  	    return FILE_SKIP;
@@@ -1175,7 -1177,7 +1177,7 @@@ move_dir_dir (FileOpContext *ctx, cons
  
  	strcpy (st, path_trunc (s, msize));
  	strcpy (dt, path_trunc (d, msize));
 -	message (1, MSG_ERROR,
 +	message (D_ERROR, MSG_ERROR,
  		    _(" `%s' and `%s' are the same directory "), st, dt);
  	do_refresh ();
  	return FILE_SKIP;
@@@ -1753,7 -1755,7 +1755,7 @@@ panel_operate (void *source_panel, File
  	}
  
  	if (!strcmp (source, "..")) {
 -	    message (1, MSG_ERROR, _(" Cannot operate on \"..\"! "));
 +	    message (D_ERROR, MSG_ERROR, _(" Cannot operate on \"..\"! "));
  	    return 0;
  	}
      }
@@@ -1777,6 -1779,7 +1779,7 @@@
  	}
      } else if (operation != OP_DELETE) {
  	char *dest_dir;
+ 	char *dest_dir_;
  
  	/* Forced single operations default to the original name */
  	if (force_single)
@@@ -1786,9 -1789,31 +1789,31 @@@
  	else
  	    dest_dir = panel->cwd;
  
+ 	/*
+ 	 * Add trailing backslash only when do non-locally ops.
+ 	 * It saves user from occasional file renames (when destination
+ 	 * dir is deleted)
+ 	 */
+ 	if (force_single)
+ 	    /* just copy */
+ 	    dest_dir_ = mhl_str_dup (dest_dir);
+ 	else
+ 	    /* add trailing separator */
+ 	    if (*dest_dir && strcmp(&dest_dir[strlen(dest_dir)-1], PATH_SEP_STR)) {
+ 		dest_dir_ = mhl_str_concat (dest_dir, PATH_SEP_STR);
+ 	} else {
+ 		dest_dir_ = mhl_str_dup (dest_dir);
+ 	}
+ 	if (!dest_dir_) {
+ 	    file_op_context_destroy (ctx);
+ 	    return 0;
+ 	}
+ 
  	dest =
- 	    file_mask_dialog (ctx, operation, cmd_buf, dest_dir,
+ 	    file_mask_dialog (ctx, operation, cmd_buf, dest_dir_,
  			      single_entry, &do_bg);
+ 	mhl_mem_free(dest_dir_);
+ 
  	if (!dest) {
  	    file_op_context_destroy (ctx);
  	    return 0;
@@@ -1808,7 -1833,7 +1833,7 @@@
  			   g_strconcat (op_names[operation], ": ",
  					panel->cwd, NULL));
  	if (v == -1) {
 -	    message (1, MSG_ERROR,
 +	    message (D_ERROR, MSG_ERROR,
  		     _(" Sorry, I could not put the job in background "));
  	}
  

-- 
Midnight Commander Development



More information about the mc-devel mailing list