changeset 91582:9c08b66c6c21

(url-handler-unhandled-file-name-directory): Handle `file' URLs specially. Return nil for non-local filenames.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Wed, 06 Feb 2008 14:43:05 +0000
parents 93691642bd78
children 846fe57f9c57
files lisp/url/ChangeLog lisp/url/url-handlers.el
diffstat 2 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/url/ChangeLog	Wed Feb 06 12:00:56 2008 +0000
+++ b/lisp/url/ChangeLog	Wed Feb 06 14:43:05 2008 +0000
@@ -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.
--- a/lisp/url/url-handlers.el	Wed Feb 06 12:00:56 2008 +0000
+++ b/lisp/url/url-handlers.el	Wed Feb 06 14:43:05 2008 +0000
@@ -183,11 +183,16 @@
     (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