summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2019-09-07 10:14:31 +0300
committerEli Zaretskii <eliz@gnu.org>2019-09-07 10:14:31 +0300
commitf42509955901bbc81284b5141cf272a1f6c6ad4c (patch)
tree7e4ef2dd5346a18fe66ba9c359644834ef2bbe4b
parenta59839d7556ef85058e09b005f0ff32e59b20ec3 (diff)
downloademacs-f42509955901bbc81284b5141cf272a1f6c6ad4c.tar.gz
Revert "file-truename now uses realpath for local files"
This reverts commit a59839d7556ef85058e09b005f0ff32e59b20ec3. 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.
-rw-r--r--lisp/files.el11
-rw-r--r--src/fileio.c42
2 files changed, 3 insertions, 50 deletions
diff --git a/lisp/files.el b/lisp/files.el
index d32c6acb82c..ce4dd99bd53 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -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.
- (or
- (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.
diff --git a/src/fileio.c b/src/fileio.c
index adf2f3d9705..968a55e5956 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -20,7 +20,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#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;
- }
- else
- {
- 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);