Subject: 26.3; Doc of `file-equal-p'
From: Drew Adams <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Wed, 20 Jul 2022 20:41:45 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

1. I don't understand this part of the doc (in both doc string and
manual):

  If FILE1 or FILE2 does not exist, the return value is unspecified.

What's that about?  Looking at the code, it looks like if either doesn't
exist then its own part in the test is just nil.

OK, if there's a file handler then that case could be unspecified.  But
if there's a file handler then the result could always be unspecified,
no?  (The handler doc, if there is one, presumably would "specify" what
its handling of `file-equal-p' does/means, however.)

Is that caveat only about the case where there's a file handler
involved?  If so, it would be more helpful to just say so.

But if there's no file handler, how can evaluating this give something
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)))

`file-attributes' just returns nil if the file can't be opened.

In what case(s) is the result unspecified because one or both file
doesn't exist?

2. How about adding this sentence from the manual to the doc string
(also)?

  This is similar to comparing their truenames, except that remote file
  names are also handled in an appropriate manner.

In GNU Emacs 26.3 (build 1, x86_64-w64-mingw32)
 of 2019-08-29
Repository revision: 96dd0196c28bc36779584e47fffcca433c9309cd
Windowing system distributor `Microsoft Corp.', version 10.0.19044
Configured using:
 `configure --without-dbus --host=x86_64-w64-mingw32
 --without-compress-install 'CFLAGS=-O2 -static -g3''