(url-handler-unhandled-file-name-directory):

Handle `file' URLs specially.  Return nil for non-local filenames.
This commit is contained in:
Stefan Monnier 2008-02-06 14:43:05 +00:00
parent da7d7c21f1
commit 791fe18237
2 changed files with 15 additions and 5 deletions

View file

@ -1,3 +1,8 @@
2008-02-06 Stefan Monnier <monnier@iro.umontreal.ca>
* url-handlers.el (url-handler-unhandled-file-name-directory):
Handle `file' URLs specially. Return nil for non-local filenames.
2008-02-04 Magnus Henoch <mange@freemail.hu>
* url-expand.el: Require cl when compiling, for setf.

View file

@ -183,11 +183,16 @@ the arguments that would have been passed to OPERATION."
(url-run-real-handler 'directory-file-name (list dir))))
(defun url-handler-unhandled-file-name-directory (filename)
;; Copied from tramp.el. This is used as the cwd for subprocesses:
;; without it running call-process or start-process in a URL directory
;; signals an error.
;; FIXME: we can do better if `filename' is a "file://" URL.
(expand-file-name "~/"))
(let ((url (url-generic-parse-url filename)))
(if (equal (url-type url) "file")
;; `file' URLs are actually local. The filename part may be ""
;; which really stands for "/".
;; FIXME: maybe we should check that the host part is "" or "localhost"
;; or some name that represents the local host?
(or (file-name-directory (url-filename url)) "/")
;; All other URLs are not expected to be directly accessible from
;; a local process.
nil)))
;; The actual implementation
;;;###autoload