]> git.eshelyaron.com Git - emacs.git/commitdiff
(url-handler-unhandled-file-name-directory):
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 6 Feb 2008 14:43:05 +0000 (14:43 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 6 Feb 2008 14:43:05 +0000 (14:43 +0000)
Handle `file' URLs specially.  Return nil for non-local filenames.

lisp/url/ChangeLog
lisp/url/url-handlers.el

index 784e8d5c320a73f41052f3bb1c495e603a4e01ec..11f99ec52803e619175133c92491cfa57b4efd03 100644 (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.
index acc85b939a188a7d964ccfcb6069ed2a8faa2d93..088e7a6a5346518280fffc346c8f7997855765d4 100644 (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