diff options
| author | Paul Eggert | 2019-09-06 14:30:33 -0700 |
|---|---|---|
| committer | Paul Eggert | 2019-09-06 14:31:38 -0700 |
| commit | a59839d7556ef85058e09b005f0ff32e59b20ec3 (patch) | |
| tree | 7e4eb3909246dde8efdcaecd77cfd41e75b93593 /lisp | |
| parent | 5b117511aa1b5c451773891b505a7098a67f9532 (diff) | |
| download | emacs-a59839d7556ef85058e09b005f0ff32e59b20ec3.tar.gz emacs-a59839d7556ef85058e09b005f0ff32e59b20ec3.zip | |
file-truename now uses realpath for local files
This uses fewer syscalls on GNU/Linux and other GNUish platforms.
* lisp/files.el (file-truename): Try fileio--truename
if there are no handlers.
* src/fileio.c: Include stdlib.h, for realpath.
(Ffileio__truename): New function.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/files.el | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lisp/files.el b/lisp/files.el index ce4dd99bd53..d32c6acb82c 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -1307,9 +1307,14 @@ containing it, until no links are left at any level. | |||
| 1307 | (let ((handler (find-file-name-handler filename 'file-truename))) | 1307 | (let ((handler (find-file-name-handler filename 'file-truename))) |
| 1308 | ;; For file name that has a special handler, call handler. | 1308 | ;; For file name that has a special handler, call handler. |
| 1309 | ;; This is so that ange-ftp can save time by doing a no-op. | 1309 | ;; This is so that ange-ftp can save time by doing a no-op. |
| 1310 | (if handler | 1310 | (or |
| 1311 | (setq filename (funcall handler 'file-truename filename) | 1311 | (if handler |
| 1312 | done t) | 1312 | (setq filename (funcall handler 'file-truename filename) |
| 1313 | done t) | ||
| 1314 | (condition-case nil | ||
| 1315 | (setq filename (fileio--truename filename) | ||
| 1316 | done t) | ||
| 1317 | (file-missing nil))) | ||
| 1313 | (let ((dir (or (file-name-directory filename) default-directory)) | 1318 | (let ((dir (or (file-name-directory filename) default-directory)) |
| 1314 | target dirfile) | 1319 | target dirfile) |
| 1315 | ;; Get the truename of the directory. | 1320 | ;; Get the truename of the directory. |