emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: file-equal-p


From: Michael Albinus
Subject: Re: file-equal-p
Date: Thu, 16 Feb 2023 11:35:42 +0100
User-agent: Gnus/5.13 (Gnus v5.13)

Andreas Schwab <schwab@suse.de> writes:

Hi,

> On Feb 16 2023, Po Lu wrote:
>
>> diff --git a/lisp/files.el b/lisp/files.el
>> index b0ec6bb09d0..dcd17df166a 100644
>> --- a/lisp/files.el
>> +++ b/lisp/files.el
>> @@ -6360,7 +6360,17 @@ file-equal-p
>>        (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.
>> +               (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)))))))
>
> Why does that compare more than the inode and device number?  The other
> attributes can change any time, if another process accesses the file or
> modifies the inode between the two calls of file-attribute.

For this we have file-attribute-file-identifier. So it might be
sufficient to call

--8<---------------cut here---------------start------------->8---
(equal (file-attribute-file-identifier f1-attr) (file-attribute-file-identifier 
f2-attr))
--8<---------------cut here---------------end--------------->8---

Best regards, Michael.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]