]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/files.el (file-equal-p): renamed from `files-equal-p'.
authorthierry volpiatto <thierry.volpiatto@gmail.com>
Tue, 28 Feb 2012 09:28:52 +0000 (10:28 +0100)
committerthierry volpiatto <thierry.volpiatto@gmail.com>
Tue, 28 Feb 2012 09:28:52 +0000 (10:28 +0100)
Now return nil when one or both files doesn't exists.
(file-subdir-of-p): Now only top directory must exists,
return nil if it doesn't.
(copy-directory): No need to test with `file-subdir-of-p' after creating dir.
* tramp.el (tramp-file-name-for-operation): Rename `files-equal-p' to `file-equal-p'.
* files.texi: Rename `files-equal-p' to `file-equal-p'.

doc/lispref/ChangeLog
doc/lispref/files.texi
lisp/ChangeLog
lisp/files.el
lisp/net/tramp.el

index b27bcef9c1200c34c792ae42ab1d0aac82ac0a52..1b5418b47aa44c45906fb9e43b012a782af256a0 100644 (file)
@@ -1,3 +1,8 @@
+2012-02-28  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
+
+       * files.texi Rename files-equal-p to file-equal-p.
+       Update chnaged behavior of file-subdir-of-p.
+
 2012-02-28  Glenn Morris  <rgm@gnu.org>
 
        * advice.texi, anti.texi, display.texi, elisp.texi:
index cffaef3798820b3ae3a7f3b28e4d61f4eaf88f5d..87a3035403fe56e76bf48bfd2ac6cecc5cb71e39 100644 (file)
@@ -1018,7 +1018,7 @@ a regular file (not a directory, named pipe, terminal, or
 other I/O device).
 @end defun
 
-@defun files-equal-p file1 file2
+@defun file-equal-p file1 file2
 This function returns @code{t} if the files @var{file1} and
 @var{file2} name the same file.  Two ordinary files are considered to
 be the same if the function @code{file-attributes} (@pxref{File
@@ -1029,9 +1029,8 @@ Attributes}) returns @code{equal} values for them.
 This function returns @code{t} if directory @var{dir1} is a
 subdirectory of @var{dir2}, or if @var{dir1} and @var{dir2} are the
 same directory.  It compares the @code{file-truename} values of the
-two directories (@pxref{Truenames}).  If either @var{dir1} or
-@var{dir2} do not name existing directories, the return value is
-@code{nil}.
+two directories (@pxref{Truenames}).  If @var{dir2} 
+do not name an existing directory, the return value is @code{nil}.
 @end defun
 
 @node Truenames
@@ -2722,7 +2721,7 @@ first, before handlers for jobs such as remote file access.
 @code{file-ownership-preserved-p},
 @code{file-readable-p}, @code{file-regular-p}, @code{file-subdir-of-p},
 @code{file-symlink-p}, @code{file-truename}, @code{file-writable-p},
-@code{files-equal-p}, @code{find-backup-file-name},
+@code{file-equal-p}, @code{find-backup-file-name},
 @c Not sure why it was here:   @code{find-file-noselect},@*
 @code{get-file-buffer},
 @code{insert-directory},
index ab70527073acd0ebdf36c05bf13ab23246a35d25..b92ef3d6b1204e47c6e4fde5ad80e5db7cf14b61 100644 (file)
@@ -1,3 +1,12 @@
+2012-02-28  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
+
+       * lisp/files.el (file-equal-p): renamed from `files-equal-p'.
+       Now return nil when one or both files doesn't exists.
+       (file-subdir-of-p): Now only top directory must exists,
+       return nil if it doesn't.
+       (copy-directory): No need to test with `file-subdir-of-p' after creating dir.
+       * tramp.el (tramp-file-name-for-operation): Rename `files-equal-p' to `file-equal-p'.
+
 2012-02-28  Glenn Morris  <rgm@gnu.org>
 
        * shell.el (shell-mode):
index 8ebb98c001b314e943d891017bf9f6d7299e75ae..0d687a157fee0ee5f76123a58fc06f408c61c153 100644 (file)
@@ -4985,27 +4985,26 @@ given.  With a prefix argument, TRASH is nil."
                 directory 'full directory-files-no-dot-files-regexp)))
       (delete-directory-internal directory)))))
 
-(defun files-equal-p (file1 file2)
-  "Return non-nil if FILE1 and FILE2 name the same file.
-Ordinary files are considered to be the same if `file-attributes'
-returns `equal' values for them."
-  (let ((handler (or (find-file-name-handler file1 'files-equal-p)
-                     (find-file-name-handler file2 'files-equal-p))))
+(defun file-equal-p (file1 file2)
+  "Return non-nil if existing files FILE1 and FILE2 name the same file.
+Return nil if one or both files doesn't exists."
+  (let ((handler (or (find-file-name-handler file1 'file-equal-p)
+                     (find-file-name-handler file2 'file-equal-p))))
     (if handler
-        (funcall handler 'files-equal-p file1 file2)
-      (equal (file-attributes (file-truename file1))
-             (file-attributes (file-truename file2))))))
+        (funcall handler 'file-equal-p file1 file2)
+      (let ((f1-attr (file-attributes (file-truename file1)))
+            (f2-attr (file-attributes (file-truename file2))))
+        (and f1-attr f2-attr (equal f1-attr f2-attr))))))
 
 (defun file-subdir-of-p (dir1 dir2)
   "Return non-nil if DIR1 is a subdirectory of DIR2.
 A directory is considered to be a subdirectory of itself.
-Return nil if DIR1 or DIR2 are not existing directories."
+Return nil if top directory DIR2 is not an existing directory."
   (let ((handler (or (find-file-name-handler dir1 'file-subdir-of-p)
                      (find-file-name-handler dir2 'file-subdir-of-p))))
     (if handler
         (funcall handler 'file-subdir-of-p dir1 dir2)
-      (when (and (file-directory-p dir1)
-                 (file-directory-p dir2))
+      (when (file-directory-p dir2) ; Top dir must exist.
        (setq dir1 (file-truename dir1)
              dir2 (file-truename dir2))
        (let ((ls1  (or (split-string dir1 "/" t) '("/")))
@@ -5019,7 +5018,7 @@ Return nil if DIR1 or DIR2 are not existing directories."
            (setq ls1 (cdr ls1)
                  ls2 (cdr ls2)))
          (unless mismatch
-           (files-equal-p (file-truename root) dir2)))))))
+           (file-equal-p root dir2)))))))
 
 (defun copy-directory (directory newname &optional keep-time parents copy-contents)
   "Copy DIRECTORY to NEWNAME.  Both args must be strings.
@@ -5065,12 +5064,7 @@ directly into NEWNAME instead."
       (cond ((not (file-directory-p newname))
             ;; If NEWNAME is not an existing directory, create it;
             ;; that is where we will copy the files of DIRECTORY.
-            (make-directory newname parents)
-             ;; `file-subdir-of-p' doesn't handle non--existing directories,
-             ;; so double check now if NEWNAME is not a subdir of DIRECTORY.
-             (and (file-subdir-of-p newname directory)
-                  (error "Cannot copy `%s' into its subdirectory `%s'"
-                         directory newname)))
+            (make-directory newname parents))
            ;; If NEWNAME is an existing directory and COPY-CONTENTS
            ;; is nil, copy into NEWNAME/[DIRECTORY-BASENAME].
            ((not copy-contents)
index a5e3da9d04cb5d53a1915305a1101c953066f337..df0ac53a8f89d01ad8a880495f0379a14f2cede6 100644 (file)
@@ -1810,7 +1810,7 @@ ARGS are the arguments OPERATION has been called with."
                  ;; Emacs 23+ only.
                  'copy-directory
                  ;; Emacs 24+ only.
-                 'files-equal-p 'file-subdir-of-p
+                 'file-equal-p 'file-subdir-of-p
                  ;; XEmacs only.
                  'dired-make-relative-symlink
                  'vm-imap-move-mail 'vm-pop-move-mail 'vm-spool-move-mail))