changeset 30663:0e46bd381f99

(dired-do-create-files): On DOS/Windows, allow to rename a directory to a name that differs only by its letter case.
author Eli Zaretskii <eliz@gnu.org>
date Tue, 08 Aug 2000 10:51:51 +0000
parents 13658e19c398
children d5d6448f6b89
files lisp/dired-aux.el
diffstat 1 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/dired-aux.el	Tue Aug 08 10:43:33 2000 +0000
+++ b/lisp/dired-aux.el	Tue Aug 08 10:51:51 2000 +0000
@@ -1232,7 +1232,25 @@
 		    (concat (if dired-one-file op1 operation) " %s to: ")
 		    (dired-dwim-target-directory)
 		    op-symbol arg rfn-list)))
-	 (into-dir (cond ((null how-to) (file-directory-p target))
+	 (into-dir (cond ((null how-to)
+			  ;; Allow DOS/Windows users to change the letter
+			  ;; case of a directory.  If we don't test these
+			  ;; conditions up front, file-directory-p below
+			  ;; will return t because the filesystem is
+			  ;; case-insensitive, and Emacs will try to move
+			  ;; foo -> foo/foo, which fails.
+			  (if (and (memq system-type '(ms-dos windows-nt))
+				   (eq op-symbol 'move)
+				   dired-one-file
+				   (string= (downcase
+					     (expand-file-name (car fn-list)))
+					    (downcase
+					     (expand-file-name target)))
+				   (not (string=
+					 (file-name-nondirectory (car fn-list))
+					 (file-name-nondirectory target))))
+			      nil
+			    (file-directory-p target)))
 			 ((eq how-to t) nil)
 			 (t (funcall how-to target)))))
     (if (and (consp into-dir) (functionp (car into-dir)))