Commit f4250995 authored by Eli Zaretskii's avatar Eli Zaretskii

Revert "file-truename now uses realpath for local files"

This reverts commit a59839d7.
This commit broke the MS-Windows build (because there's no
realpath on MS-Windows).  Even if I change the implementation
to always signal an error on MS-Windows, the build fails.
parent a59839d7
Pipeline #3066 failed with stage
in 54 minutes and 9 seconds
......@@ -1307,14 +1307,9 @@ containing it, until no links are left at any level.
(let ((handler (find-file-name-handler filename 'file-truename)))
;; For file name that has a special handler, call handler.
;; This is so that ange-ftp can save time by doing a no-op.
(if handler
(setq filename (funcall handler 'file-truename filename)
done t)
(condition-case nil
(setq filename (fileio--truename filename)
done t)
(file-missing nil)))
(if handler
(setq filename (funcall handler 'file-truename filename)
done t)
(let ((dir (or (file-name-directory filename) default-directory))
target dirfile)
;; Get the truename of the directory.
......@@ -20,7 +20,6 @@ along with GNU Emacs. If not, see <>. */
#include <config.h>
#include <limits.h>
#include <fcntl.h>
#include <stdlib.h>
#include "sysstdio.h"
#include <sys/types.h>
#include <sys/stat.h>
......@@ -2694,46 +2693,6 @@ file_name_absolute_p (char const *filename)
&& (!filename[1] || IS_DIRECTORY_SEP (filename[1])
|| user_homedir (&filename[1]))));
DEFUN ("fileio--truename", Ffileio__truename, Sfileio__truename, 1, 1, 0,
doc: /* Return the true name of FILENAME, without file name handlers.
The returned string is an absolute file name that does not involve
\".\", \"..\", or symbolic links. Signal an error if FILENAME does
not exist or if its true name cannot be determined. */)
(Lisp_Object filename)
CHECK_STRING (filename);
Lisp_Object absname = Fexpand_file_name (filename, Qnil);
Lisp_Object encoded_absname = ENCODE_FILE (absname);
ptrdiff_t encoded_len = SBYTES (encoded_absname);
char *encoded = SSDATA (encoded_absname);
bool append_slash = (1 < encoded_len
&& IS_DIRECTORY_SEP (encoded[encoded_len - 1])
&& !IS_DIRECTORY_SEP (encoded[encoded_len - 2]));
char *truename = realpath (encoded, NULL);
if (!truename)
report_file_error ("Deriving truename", filename);
ptrdiff_t truename_len = strlen (truename);
if (truename_len == encoded_len - append_slash
&& memcmp (truename, encoded, truename_len) == 0)
/* ABSNAME is already the true name. */
xfree (truename);
return absname;
if (append_slash)
truename = xrealloc (truename, truename_len + 2);
strcpy (truename + truename_len, "/");
Lisp_Object unibyte_truename = build_unibyte_string (truename);
xfree (truename);
return DECODE_FILE (unibyte_truename);
DEFUN ("file-exists-p", Ffile_exists_p, Sfile_exists_p, 1, 1, 0,
doc: /* Return t if file FILENAME exists (whether or not you can read it).
......@@ -6469,7 +6428,6 @@ This includes interactive calls to `delete-file' and
defsubr (&Sadd_name_to_file);
defsubr (&Smake_symbolic_link);
defsubr (&Sfile_name_absolute_p);
defsubr (&Sfileio__truename);
defsubr (&Sfile_exists_p);
defsubr (&Sfile_executable_p);
defsubr (&Sfile_readable_p);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment