Mercurial > emacs
comparison lisp/net/tramp-gvfs.el @ 103691:1cd332c1ef9a
* net/tramp-gvfs.el (tramp-gvfs-handler-mounted-unmounted)
(tramp-gvfs-connection-mounted-p): Handle changed mount-info
interface.
author | Michael Albinus <michael.albinus@gmx.de> |
---|---|
date | Thu, 02 Jul 2009 15:27:21 +0000 |
parents | 2d532360a64b |
children | 585c452d8bf2 |
comparison
equal
deleted
inserted
replaced
103690:6cf0c4de552b | 103691:1cd332c1ef9a |
---|---|
867 (defun tramp-gvfs-handler-mounted-unmounted (mount-info) | 867 (defun tramp-gvfs-handler-mounted-unmounted (mount-info) |
868 "Signal handler for the \"org.gtk.vfs.MountTracker.mounted\" and | 868 "Signal handler for the \"org.gtk.vfs.MountTracker.mounted\" and |
869 \"org.gtk.vfs.MountTracker.unmounted\" signals." | 869 \"org.gtk.vfs.MountTracker.unmounted\" signals." |
870 (ignore-errors | 870 (ignore-errors |
871 (let* ((signal-name (dbus-event-member-name last-input-event)) | 871 (let* ((signal-name (dbus-event-member-name last-input-event)) |
872 (mount-spec (nth 1 (nth 9 mount-info))) | 872 ;; The interface of mount-info has been changed. We must |
873 ;; handle both cases. | |
874 (last-nth (if (nth 9 mount-info) 9 8)) | |
875 (mount-spec (nth 1 (nth last-nth mount-info))) | |
873 (method (dbus-byte-array-to-string (cadr (assoc "type" mount-spec)))) | 876 (method (dbus-byte-array-to-string (cadr (assoc "type" mount-spec)))) |
874 (user (dbus-byte-array-to-string (cadr (assoc "user" mount-spec)))) | 877 (user (dbus-byte-array-to-string (cadr (assoc "user" mount-spec)))) |
875 (domain (dbus-byte-array-to-string | 878 (domain (dbus-byte-array-to-string |
876 (cadr (assoc "domain" mount-spec)))) | 879 (cadr (assoc "domain" mount-spec)))) |
877 (host (dbus-byte-array-to-string | 880 (host (dbus-byte-array-to-string |
896 (if (string-equal signal-name "unmounted") | 899 (if (string-equal signal-name "unmounted") |
897 (tramp-set-file-property v "/" "fuse-mountpoint" nil) | 900 (tramp-set-file-property v "/" "fuse-mountpoint" nil) |
898 (tramp-set-file-property | 901 (tramp-set-file-property |
899 v "/" "fuse-mountpoint" | 902 v "/" "fuse-mountpoint" |
900 (file-name-nondirectory | 903 (file-name-nondirectory |
901 (dbus-byte-array-to-string (nth 8 mount-info))))))))) | 904 (dbus-byte-array-to-string (nth (1- last-nth) mount-info))))))))) |
902 | 905 |
903 (dbus-register-signal | 906 (dbus-register-signal |
904 :session nil tramp-gvfs-path-mounttracker | 907 :session nil tramp-gvfs-path-mounttracker |
905 tramp-gvfs-interface-mounttracker "mounted" | 908 tramp-gvfs-interface-mounttracker "mounted" |
906 'tramp-gvfs-handler-mounted-unmounted) | 909 'tramp-gvfs-handler-mounted-unmounted) |
918 (with-file-property vec "/" "list-mounts" | 921 (with-file-property vec "/" "list-mounts" |
919 (with-tramp-dbus-call-method vec t | 922 (with-tramp-dbus-call-method vec t |
920 :session tramp-gvfs-service-daemon tramp-gvfs-path-mounttracker | 923 :session tramp-gvfs-service-daemon tramp-gvfs-path-mounttracker |
921 tramp-gvfs-interface-mounttracker "listMounts")) | 924 tramp-gvfs-interface-mounttracker "listMounts")) |
922 nil) | 925 nil) |
923 (let* ((mount-spec (nth 1 (nth 9 elt))) | 926 ;; The interface of mount-info has been changed. We must handle |
927 ;; both cases. | |
928 (let* ((last-nth (if (nth 9 mount-info) 9 8)) | |
929 (mount-spec (nth 1 (nth last-nth elt))) | |
924 (method (dbus-byte-array-to-string | 930 (method (dbus-byte-array-to-string |
925 (cadr (assoc "type" mount-spec)))) | 931 (cadr (assoc "type" mount-spec)))) |
926 (user (dbus-byte-array-to-string | 932 (user (dbus-byte-array-to-string |
927 (cadr (assoc "user" mount-spec)))) | 933 (cadr (assoc "user" mount-spec)))) |
928 (domain (dbus-byte-array-to-string | 934 (domain (dbus-byte-array-to-string |
948 (string-equal method (tramp-file-name-method vec)) | 954 (string-equal method (tramp-file-name-method vec)) |
949 (string-equal user (or (tramp-file-name-user vec) "")) | 955 (string-equal user (or (tramp-file-name-user vec) "")) |
950 (string-equal host (tramp-file-name-host vec))) | 956 (string-equal host (tramp-file-name-host vec))) |
951 (tramp-set-file-property | 957 (tramp-set-file-property |
952 vec "/" "fuse-mountpoint" | 958 vec "/" "fuse-mountpoint" |
953 (file-name-nondirectory (dbus-byte-array-to-string (nth 8 elt)))) | 959 (file-name-nondirectory |
960 (dbus-byte-array-to-string (nth (1- last-nth) elt)))) | |
954 (throw 'mounted t)))))) | 961 (throw 'mounted t)))))) |
955 | 962 |
956 (defun tramp-gvfs-mount-spec (vec) | 963 (defun tramp-gvfs-mount-spec (vec) |
957 "Return a mount-spec for \"org.gtk.vfs.MountTracker.mountLocation\"." | 964 "Return a mount-spec for \"org.gtk.vfs.MountTracker.mountLocation\"." |
958 (let* ((method (tramp-file-name-method vec)) | 965 (let* ((method (tramp-file-name-method vec)) |