]> git.eshelyaron.com Git - emacs.git/commitdiff
* url-handlers.el (file-remote-p): Add handler.
authorMichael Albinus <michael.albinus@gmx.de>
Wed, 6 Feb 2008 20:34:23 +0000 (20:34 +0000)
committerMichael Albinus <michael.albinus@gmx.de>
Wed, 6 Feb 2008 20:34:23 +0000 (20:34 +0000)
(url-handler-file-remote-p): New fun.

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

index 11f99ec52803e619175133c92491cfa57b4efd03..dca2782b0f579d6969339f3e80d52f663f548119 100644 (file)
@@ -1,3 +1,8 @@
+2008-02-06  Michael Albinus  <michael.albinus@gmx.de>
+
+       * url-handlers.el (file-remote-p): Add handler.
+       (url-handler-file-remote-p): New fun.
+
 2008-02-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * url-handlers.el (url-handler-unhandled-file-name-directory):
index 088e7a6a5346518280fffc346c8f7997855765d4..7fa797e121b08c02c113d5663c8a8d2b30d7c14a 100644 (file)
@@ -73,6 +73,7 @@
 ;; file-ownership-preserved-p          No way to know
 ;; file-readable-p                     Finished
 ;; file-regular-p                      !directory_p
+;; file-remote-p                       Finished
 ;; file-symlink-p                      Needs DAV bindings
 ;; file-truename                       Needs DAV bindings
 ;; file-writable-p                     Check for LOCK?
@@ -151,6 +152,7 @@ the arguments that would have been passed to OPERATION."
 (put 'expand-file-name 'url-file-handlers 'url-handler-expand-file-name)
 (put 'directory-file-name 'url-file-handlers 'url-handler-directory-file-name)
 (put 'unhandled-file-name-directory 'url-file-handlers 'url-handler-unhandled-file-name-directory)
+(put 'file-remote-p 'url-file-handlers 'url-handler-file-remote-p)
 ;; (put 'file-name-as-directory 'url-file-handlers 'url-handler-file-name-as-directory)
 
 ;; These are operations that we do not support yet (DAV!!!)
@@ -194,6 +196,25 @@ the arguments that would have been passed to OPERATION."
       ;; a local process.
       nil)))
 
+(defun url-handler-file-remote-p (filename &optional identification connected)
+  (let ((url (url-generic-parse-url filename)))
+    (if (and (url-type url) (not (equal (url-type url) "file")))
+       ;; Maybe we can find a suitable check for CONNECTED.  For now,
+       ;; we ignore it.
+       (cond
+        ((eq identification 'method) (url-type url))
+        ((eq identification 'user) (url-user url))
+        ((eq identification 'host) (url-host url))
+        ((eq identification 'localname) (url-filename url))
+        (t (url-recreate-url
+            (url-parse-make-urlobj (url-type url) (url-user url) nil
+                                   (url-host url) (url-port url)))))
+      ;; If there is no URL type, or it is a "file://" URL, the
+      ;; filename is expected to be non remote.  A more subtle check
+      ;; for "file://" URLs could be applied, as said in
+      ;; `url-handler-unhandled-file-name-directory'.
+      nil)))
+
 ;; The actual implementation
 ;;;###autoload
 (defun url-copy-file (url newname &optional ok-if-already-exists keep-time)