emacs-devel
[Top][All Lists]
Advanced

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

Re: file-equal-p


From: Andreas Schwab
Subject: Re: file-equal-p
Date: Thu, 16 Feb 2023 10:15:07 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)

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.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."



reply via email to

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