]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/files.el (file-equal-p): Work around Haiku stat bug.
authorPo Lu <luangruo@yahoo.com>
Sat, 18 Feb 2023 03:03:07 +0000 (11:03 +0800)
committerPo Lu <luangruo@yahoo.com>
Sat, 18 Feb 2023 03:03:07 +0000 (11:03 +0800)
lisp/files.el

index 0d24852358ea0d8c047ab2b302505dfdcc8e2c2a..57e013403591b3cb23e0a8f6a916767b263749f1 100644 (file)
@@ -6357,7 +6357,18 @@ If FILE1 or FILE2 does not exist, the return value is unspecified."
       (let (f1-attr f2-attr)
         (and (setq f1-attr (file-attributes (file-truename file1)))
             (setq f2-attr (file-attributes (file-truename file2)))
-            (equal f1-attr f2-attr))))))
+             (progn
+               ;; Haiku systems change the file's last access timestamp
+               ;; every time `stat' is called.  Make sure to not compare
+               ;; the timestamps in that case.
+               (or (equal f1-attr f2-attr)
+                   (when (and (eq system-type 'haiku)
+                              (consp (nthcdr 4 f1-attr))
+                              (consp (nthcdr 4 f2-attr)))
+                     (ignore-errors
+                       (setcar (nthcdr 4 f1-attr) nil)
+                       (setcar (nthcdr 4 f2-attr) nil))
+                    (equal f1-attr f2-attr)))))))))
 
 (defun file-in-directory-p (file dir)
   "Return non-nil if DIR is a parent directory of FILE.