mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-02 08:22:22 +00:00
* 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'. * files.texi: Rename `files-equal-p' to `file-equal-p'.
This commit is contained in:
parent
44e97401cd
commit
96b4930127
@ -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:
|
||||
|
@ -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},
|
||||
|
@ -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):
|
||||
|
@ -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)
|
||||
|
@ -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))
|
||||
|
Loading…
Reference in New Issue
Block a user