Function: ediff-same-contents
ediff-same-contents is a byte-compiled function defined in
ediff-diff.el.gz.
Signature
(ediff-same-contents D1 D2 &optional FILTER-RE)
Documentation
Return t if D1 and D2 have the same content.
D1 and D2 can either be both directories or both regular files. Symlinks and the likes are not handled. If FILTER-RE is non-nil, recursive checking in directories affects only files whose names match the expression.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/ediff-diff.el.gz
(defun ediff-same-contents (d1 d2 &optional filter-re)
"Return t if D1 and D2 have the same content.
D1 and D2 can either be both directories or both regular files.
Symlinks and the likes are not handled.
If FILTER-RE is non-nil, recursive checking in directories
affects only files whose names match the expression."
;; Normalize empty filter RE to nil.
(unless (> (length filter-re) 0) (setq filter-re nil))
;; Indicate progress
(message "Comparing `%s' and `%s' modulo `%s'" d1 d2 filter-re)
(cond
;; D1 & D2 directories => recurse
((and (file-directory-p d1)
(file-directory-p d2))
(if (null ediff-recurse-to-subdirectories)
(if (y-or-n-p "Compare subdirectories recursively? ")
(setq ediff-recurse-to-subdirectories 'yes)
(setq ediff-recurse-to-subdirectories 'no)))
(if (eq ediff-recurse-to-subdirectories 'yes)
(let* ((all-entries-1 (directory-files d1 t filter-re))
(all-entries-2 (directory-files d2 t filter-re))
(entries-1 (ediff-delete-all-matches "^\\.\\.?$" all-entries-1))
(entries-2 (ediff-delete-all-matches "^\\.\\.?$" all-entries-2))
)
(ediff-same-file-contents-lists entries-1 entries-2 filter-re)
))
) ; end of the directories case
;; D1 & D2 are both files => compare directly
((and (file-regular-p d1)
(file-regular-p d2))
(ediff-same-file-contents d1 d2))
;; Otherwise => false: unequal contents
)
)