branch: externals/jarchive
commit 8c3c9fc24b62b553ee9d410bac9ca8193860f92c
Author: Danny Freeman <[email protected]>
Commit: Danny Freeman <[email protected]>
Implement file-name-as-directory operation
From bug report #2
When calling
(file-relative-name buffer-file-name "/some/directory")
from a file opened with jarchive, file-relative-name is unable to build
a path relative to another directory. file-name-as-directory is called
repeatedly on the full `jar` or `zipfile` file URI, which always
includes the scheme. The path is never relative to a directory, which
keeps dwindling down the "/some/directory" -> "/some" -> "/" -> nil
until an error is thrown trying to check if the dwindled down path of
nil is a prefix of the full jar URI. This throws an exception. Having
`file-name-as-directory` operate on the jar path doesn't quite return a
correct answer (usually it returns `"."` in my testing), but the file in
the jar can't really be relative to anything on the filesystem, since
the jar acts like a remote file system with a separate file tree. This
at least doesn't throw an error.
---
jarchive.el | 1 +
1 file changed, 1 insertion(+)
diff --git a/jarchive.el b/jarchive.el
index eabe1ffb59..73d8ae7715 100644
--- a/jarchive.el
+++ b/jarchive.el
@@ -94,6 +94,7 @@ primitive. See `(elisp)Magic File Names'."
((eq op 'file-attributes) nil)
((eq op 'make-auto-save-file-name) nil)
((eq op 'abbreviate-file-name) uri)
+ ((eq op 'file-name-as-directory) (file-name-as-directory jar-path))
;; Predicates
((eq op 'file-directory-p) nil)