diff options
| author | Michael Albinus | 2018-06-07 11:16:11 +0200 |
|---|---|---|
| committer | Michael Albinus | 2018-06-07 11:16:11 +0200 |
| commit | 2e2f61efa66b69fbd12c83bbd5370a4be2374f66 (patch) | |
| tree | 8367defda294fb1dee8d353b323f0a5644f4c504 | |
| parent | 4a51deb993d923767f0eddd4f350e636fe8d7c0b (diff) | |
| download | emacs-2e2f61efa66b69fbd12c83bbd5370a4be2374f66.tar.gz emacs-2e2f61efa66b69fbd12c83bbd5370a4be2374f66.zip | |
Remove Tramp "obex" and "synce" methods
* doc/misc/tramp.texi (GVFS based methods): Remove `obex' and `synce'.
* etc/NEWS: Mention obsolete Tramp "obex" and "synce" methods.
* lisp/net/tramp-gvfs.el (tramp-gvfs-methods):
Remove "obex" and "synce".
(top): Do not add defaults for "obex" and "synce".
(tramp-bluez-service, tramp-bluez-interface-manager)
(tramp-bluez-interface-adapter)
(tramp-bluez-discover-devices-timeout, tramp-bluez-discovery)
(tramp-bluez-devices, tramp-hal-service, tramp-hal-path-manager)
(tramp-hal-interface-manager, tramp-hal-interface-device)
(tramp-bluez-address, tramp-bluez-device)
(tramp-bluez-list-devices, tramp-bluez-property-changed)
(tramp-bluez-device-found, tramp-bluez-parse-device-names)
(tramp-synce-list-devices, tramp-synce-parse-device-names): Remove.
(tramp-gvfs-handler-mounted-unmounted)
(tramp-gvfs-connection-mounted-p, tramp-gvfs-mount-spec): Do not
handle "obex" and "synce".
| -rw-r--r-- | doc/misc/tramp.texi | 25 | ||||
| -rw-r--r-- | etc/NEWS | 4 | ||||
| -rw-r--r-- | lisp/net/tramp-gvfs.el | 304 |
3 files changed, 19 insertions, 314 deletions
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 29626138ae1..83585038a8f 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi | |||
| @@ -1110,13 +1110,6 @@ Since Google Drive uses cryptic blob file names internally, | |||
| 1110 | could produce unexpected behavior in case two files in the same | 1110 | could produce unexpected behavior in case two files in the same |
| 1111 | directory have the same @code{display-name}, such a situation must be avoided. | 1111 | directory have the same @code{display-name}, such a situation must be avoided. |
| 1112 | 1112 | ||
| 1113 | @item @option{obex} | ||
| 1114 | @cindex method @option{obex} | ||
| 1115 | @cindex @option{obex} method | ||
| 1116 | |||
| 1117 | OBEX is an FTP-like access protocol for cell phones and similar simple | ||
| 1118 | devices. @value{tramp} supports OBEX over Bluetooth. | ||
| 1119 | |||
| 1120 | @item @option{owncloud} | 1113 | @item @option{owncloud} |
| 1121 | @cindex @acronym{GNOME} Online Accounts | 1114 | @cindex @acronym{GNOME} Online Accounts |
| 1122 | @cindex method @option{owncloud} | 1115 | @cindex method @option{owncloud} |
| @@ -1137,24 +1130,16 @@ This method uses @command{sftp} in order to securely access remote | |||
| 1137 | hosts. @command{sftp} is a more secure option for connecting to hosts | 1130 | hosts. @command{sftp} is a more secure option for connecting to hosts |
| 1138 | that for security reasons refuse @command{ssh} connections. | 1131 | that for security reasons refuse @command{ssh} connections. |
| 1139 | 1132 | ||
| 1140 | @item @option{synce} | ||
| 1141 | @cindex method @option{synce} | ||
| 1142 | @cindex @option{synce} method | ||
| 1143 | |||
| 1144 | @option{synce} method allows connecting to MS Windows Mobile devices. | ||
| 1145 | It uses GVFS for mounting remote files and directories via FUSE and | ||
| 1146 | requires the SYNCE-GVFS plugin. | ||
| 1147 | |||
| 1148 | @end table | 1133 | @end table |
| 1149 | 1134 | ||
| 1150 | @defopt tramp-gvfs-methods | 1135 | @defopt tramp-gvfs-methods |
| 1151 | This user option is a list of external methods for GVFS@. By default, | 1136 | This user option is a list of external methods for GVFS@. By default, |
| 1152 | this list includes @option{afp}, @option{dav}, @option{davs}, | 1137 | this list includes @option{afp}, @option{dav}, @option{davs}, |
| 1153 | @option{gdrive}, @option{obex}, @option{owncloud}, @option{sftp} and | 1138 | @option{gdrive}, @option{owncloud} and @option{sftp}. Other methods |
| 1154 | @option{synce}. Other methods to include are @option{ftp}, | 1139 | to include are @option{ftp}, @option{http}, @option{https} and |
| 1155 | @option{http}, @option{https} and @option{smb}. These methods are not | 1140 | @option{smb}. These methods are not intended to be used directly as |
| 1156 | intended to be used directly as GVFS based method. Instead, they are | 1141 | GVFS based method. Instead, they are added here for the benefit of |
| 1157 | added here for the benefit of @ref{Archive file names}. | 1142 | @ref{Archive file names}. |
| 1158 | @end defopt | 1143 | @end defopt |
| 1159 | 1144 | ||
| 1160 | 1145 | ||
| @@ -430,6 +430,10 @@ process. It now accepts signals specified either by name or by its number. | |||
| 430 | or NextCloud hosted files and directories. | 430 | or NextCloud hosted files and directories. |
| 431 | 431 | ||
| 432 | +++ | 432 | +++ |
| 433 | *** Connection methods "obex" and "synce" are removed, because they | ||
| 434 | are obsoleted in GVFS. | ||
| 435 | |||
| 436 | +++ | ||
| 433 | *** Validated passwords are saved by auth-source backends which support this. | 437 | *** Validated passwords are saved by auth-source backends which support this. |
| 434 | 438 | ||
| 435 | +++ | 439 | +++ |
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index f547f84a17e..87c0c796b69 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el | |||
| @@ -49,10 +49,7 @@ | |||
| 49 | 49 | ||
| 50 | ;; The user option `tramp-gvfs-methods' contains the list of supported | 50 | ;; The user option `tramp-gvfs-methods' contains the list of supported |
| 51 | ;; connection methods. Per default, these are "afp", "dav", "davs", | 51 | ;; connection methods. Per default, these are "afp", "dav", "davs", |
| 52 | ;; "gdrive", "obex", "owncloud", "sftp" and "synce". Note that with | 52 | ;; "gdrive", "owncloud" and "sftp". |
| 53 | ;; "obex" it might be necessary to pair with the other bluetooth | ||
| 54 | ;; device, if it hasn't been done already. There might be also some | ||
| 55 | ;; few seconds delay in discovering available bluetooth devices. | ||
| 56 | 53 | ||
| 57 | ;; "gdrive" and "owncloud" connection methods require a respective | 54 | ;; "gdrive" and "owncloud" connection methods require a respective |
| 58 | ;; account in GNOME Online Accounts, with enabled "Files" service. | 55 | ;; account in GNOME Online Accounts, with enabled "Files" service. |
| @@ -83,18 +80,14 @@ | |||
| 83 | ;; request an additional connection method to be supported, please | 80 | ;; request an additional connection method to be supported, please |
| 84 | ;; drop me a note. | 81 | ;; drop me a note. |
| 85 | 82 | ||
| 86 | ;; For hostname completion, information is retrieved either from the | 83 | ;; For hostname completion, information is retrieved from the zeroconf |
| 87 | ;; bluez daemon (for the "obex" method), the hal daemon (for the | 84 | ;; daemon (for the "afp", "dav", "davs", and "sftp" methods). The |
| 88 | ;; "synce" method), or from the zeroconf daemon (for the "afp", "dav", | 85 | ;; zeroconf daemon is pre-configured to discover services in the |
| 89 | ;; "davs", and "sftp" methods). The zeroconf daemon is pre-configured | 86 | ;; "local" domain. If another domain shall be used for discovering |
| 90 | ;; to discover services in the "local" domain. If another domain | 87 | ;; services, the user option `tramp-gvfs-zeroconf-domain' can be set |
| 91 | ;; shall be used for discovering services, the user option | 88 | ;; accordingly. |
| 92 | ;; `tramp-gvfs-zeroconf-domain' can be set accordingly. | ||
| 93 | 89 | ||
| 94 | ;; Restrictions: | 90 | ;; Restrictions: |
| 95 | |||
| 96 | ;; * The current GVFS implementation does not allow writing on the | ||
| 97 | ;; remote bluetooth device via OBEX. | ||
| 98 | ;; | 91 | ;; |
| 99 | ;; * Two shares of the same SMB server cannot be mounted in parallel. | 92 | ;; * Two shares of the same SMB server cannot be mounted in parallel. |
| 100 | 93 | ||
| @@ -128,10 +121,10 @@ | |||
| 128 | 121 | ||
| 129 | ;;;###tramp-autoload | 122 | ;;;###tramp-autoload |
| 130 | (defcustom tramp-gvfs-methods | 123 | (defcustom tramp-gvfs-methods |
| 131 | '("afp" "dav" "davs" "gdrive" "obex" "owncloud" "sftp" "synce") | 124 | '("afp" "dav" "davs" "gdrive" "owncloud" "sftp") |
| 132 | "List of methods for remote files, accessed with GVFS." | 125 | "List of methods for remote files, accessed with GVFS." |
| 133 | :group 'tramp | 126 | :group 'tramp |
| 134 | :version "26.1" | 127 | :version "27.1" |
| 135 | :type '(repeat (choice (const "afp") | 128 | :type '(repeat (choice (const "afp") |
| 136 | (const "dav") | 129 | (const "dav") |
| 137 | (const "davs") | 130 | (const "davs") |
| @@ -139,11 +132,9 @@ | |||
| 139 | (const "gdrive") | 132 | (const "gdrive") |
| 140 | (const "http") | 133 | (const "http") |
| 141 | (const "https") | 134 | (const "https") |
| 142 | (const "obex") | ||
| 143 | (const "owncloud") | 135 | (const "owncloud") |
| 144 | (const "sftp") | 136 | (const "sftp") |
| 145 | (const "smb") | 137 | (const "smb")))) |
| 146 | (const "synce")))) | ||
| 147 | 138 | ||
| 148 | (defconst tramp-goa-methods '("gdrive" "owncloud") | 139 | (defconst tramp-goa-methods '("gdrive" "owncloud") |
| 149 | "List of methods which require registration at GNOME Online Accounts.") | 140 | "List of methods which require registration at GNOME Online Accounts.") |
| @@ -162,8 +153,6 @@ | |||
| 162 | `("\\`gdrive\\'" nil ,(match-string 1 user-mail-address))) | 153 | `("\\`gdrive\\'" nil ,(match-string 1 user-mail-address))) |
| 163 | (add-to-list 'tramp-default-host-alist | 154 | (add-to-list 'tramp-default-host-alist |
| 164 | '("\\`gdrive\\'" nil ,(match-string 2 user-mail-address)))) | 155 | '("\\`gdrive\\'" nil ,(match-string 2 user-mail-address)))) |
| 165 | ;;;###tramp-autoload | ||
| 166 | (add-to-list 'tramp-default-user-alist '("\\`synce\\'" nil nil)) | ||
| 167 | 156 | ||
| 168 | ;;;###tramp-autoload | 157 | ;;;###tramp-autoload |
| 169 | (defcustom tramp-gvfs-zeroconf-domain "local" | 158 | (defcustom tramp-gvfs-zeroconf-domain "local" |
| @@ -463,132 +452,6 @@ It has been changed in GVFS 1.14.") | |||
| 463 | ;; in order to be compatible with Emacs 24 and 25. | 452 | ;; in order to be compatible with Emacs 24 and 25. |
| 464 | (cl-defstruct (tramp-goa-name (:type list) :named) method user host port) | 453 | (cl-defstruct (tramp-goa-name (:type list) :named) method user host port) |
| 465 | 454 | ||
| 466 | (defconst tramp-bluez-service "org.bluez" | ||
| 467 | "The well known name of the BLUEZ service.") | ||
| 468 | |||
| 469 | (defconst tramp-bluez-interface-manager "org.bluez.Manager" | ||
| 470 | "The manager interface of the BLUEZ daemon.") | ||
| 471 | |||
| 472 | ;; <interface name='org.bluez.Manager'> | ||
| 473 | ;; <method name='DefaultAdapter'> | ||
| 474 | ;; <arg type='o' direction='out'/> | ||
| 475 | ;; </method> | ||
| 476 | ;; <method name='FindAdapter'> | ||
| 477 | ;; <arg type='s' direction='in'/> | ||
| 478 | ;; <arg type='o' direction='out'/> | ||
| 479 | ;; </method> | ||
| 480 | ;; <method name='ListAdapters'> | ||
| 481 | ;; <arg type='ao' direction='out'/> | ||
| 482 | ;; </method> | ||
| 483 | ;; <signal name='AdapterAdded'> | ||
| 484 | ;; <arg type='o'/> | ||
| 485 | ;; </signal> | ||
| 486 | ;; <signal name='AdapterRemoved'> | ||
| 487 | ;; <arg type='o'/> | ||
| 488 | ;; </signal> | ||
| 489 | ;; <signal name='DefaultAdapterChanged'> | ||
| 490 | ;; <arg type='o'/> | ||
| 491 | ;; </signal> | ||
| 492 | ;; </interface> | ||
| 493 | |||
| 494 | (defconst tramp-bluez-interface-adapter "org.bluez.Adapter" | ||
| 495 | "The adapter interface of the BLUEZ daemon.") | ||
| 496 | |||
| 497 | ;; <interface name='org.bluez.Adapter'> | ||
| 498 | ;; <method name='GetProperties'> | ||
| 499 | ;; <arg type='a{sv}' direction='out'/> | ||
| 500 | ;; </method> | ||
| 501 | ;; <method name='SetProperty'> | ||
| 502 | ;; <arg type='s' direction='in'/> | ||
| 503 | ;; <arg type='v' direction='in'/> | ||
| 504 | ;; </method> | ||
| 505 | ;; <method name='RequestMode'> | ||
| 506 | ;; <arg type='s' direction='in'/> | ||
| 507 | ;; </method> | ||
| 508 | ;; <method name='ReleaseMode'/> | ||
| 509 | ;; <method name='RequestSession'/> | ||
| 510 | ;; <method name='ReleaseSession'/> | ||
| 511 | ;; <method name='StartDiscovery'/> | ||
| 512 | ;; <method name='StopDiscovery'/> | ||
| 513 | ;; <method name='ListDevices'> | ||
| 514 | ;; <arg type='ao' direction='out'/> | ||
| 515 | ;; </method> | ||
| 516 | ;; <method name='CreateDevice'> | ||
| 517 | ;; <arg type='s' direction='in'/> | ||
| 518 | ;; <arg type='o' direction='out'/> | ||
| 519 | ;; </method> | ||
| 520 | ;; <method name='CreatePairedDevice'> | ||
| 521 | ;; <arg type='s' direction='in'/> | ||
| 522 | ;; <arg type='o' direction='in'/> | ||
| 523 | ;; <arg type='s' direction='in'/> | ||
| 524 | ;; <arg type='o' direction='out'/> | ||
| 525 | ;; </method> | ||
| 526 | ;; <method name='CancelDeviceCreation'> | ||
| 527 | ;; <arg type='s' direction='in'/> | ||
| 528 | ;; </method> | ||
| 529 | ;; <method name='RemoveDevice'> | ||
| 530 | ;; <arg type='o' direction='in'/> | ||
| 531 | ;; </method> | ||
| 532 | ;; <method name='FindDevice'> | ||
| 533 | ;; <arg type='s' direction='in'/> | ||
| 534 | ;; <arg type='o' direction='out'/> | ||
| 535 | ;; </method> | ||
| 536 | ;; <method name='RegisterAgent'> | ||
| 537 | ;; <arg type='o' direction='in'/> | ||
| 538 | ;; <arg type='s' direction='in'/> | ||
| 539 | ;; </method> | ||
| 540 | ;; <method name='UnregisterAgent'> | ||
| 541 | ;; <arg type='o' direction='in'/> | ||
| 542 | ;; </method> | ||
| 543 | ;; <signal name='DeviceCreated'> | ||
| 544 | ;; <arg type='o'/> | ||
| 545 | ;; </signal> | ||
| 546 | ;; <signal name='DeviceRemoved'> | ||
| 547 | ;; <arg type='o'/> | ||
| 548 | ;; </signal> | ||
| 549 | ;; <signal name='DeviceFound'> | ||
| 550 | ;; <arg type='s'/> | ||
| 551 | ;; <arg type='a{sv}'/> | ||
| 552 | ;; </signal> | ||
| 553 | ;; <signal name='PropertyChanged'> | ||
| 554 | ;; <arg type='s'/> | ||
| 555 | ;; <arg type='v'/> | ||
| 556 | ;; </signal> | ||
| 557 | ;; <signal name='DeviceDisappeared'> | ||
| 558 | ;; <arg type='s'/> | ||
| 559 | ;; </signal> | ||
| 560 | ;; </interface> | ||
| 561 | |||
| 562 | ;;;###tramp-autoload | ||
| 563 | (defcustom tramp-bluez-discover-devices-timeout 60 | ||
| 564 | "Defines seconds since last bluetooth device discovery before rescanning. | ||
| 565 | A value of 0 would require an immediate discovery during hostname | ||
| 566 | completion, nil means to use always cached values for discovered | ||
| 567 | devices." | ||
| 568 | :group 'tramp | ||
| 569 | :version "23.2" | ||
| 570 | :type '(choice (const nil) integer)) | ||
| 571 | |||
| 572 | (defvar tramp-bluez-discovery nil | ||
| 573 | "Indicator for a running bluetooth device discovery. | ||
| 574 | It keeps the timestamp of last discovery.") | ||
| 575 | |||
| 576 | (defvar tramp-bluez-devices nil | ||
| 577 | "Alist of detected bluetooth devices. | ||
| 578 | Every entry is a list (NAME ADDRESS).") | ||
| 579 | |||
| 580 | (defconst tramp-hal-service "org.freedesktop.Hal" | ||
| 581 | "The well known name of the HAL service.") | ||
| 582 | |||
| 583 | (defconst tramp-hal-path-manager "/org/freedesktop/Hal/Manager" | ||
| 584 | "The object path of the HAL daemon manager.") | ||
| 585 | |||
| 586 | (defconst tramp-hal-interface-manager "org.freedesktop.Hal.Manager" | ||
| 587 | "The manager interface of the HAL daemon.") | ||
| 588 | |||
| 589 | (defconst tramp-hal-interface-device "org.freedesktop.Hal.Device" | ||
| 590 | "The device interface of the HAL daemon.") | ||
| 591 | |||
| 592 | ;; "gvfs-<command>" utilities have been deprecated in GVFS 1.31.1. We | 455 | ;; "gvfs-<command>" utilities have been deprecated in GVFS 1.31.1. We |
| 593 | ;; must use "gio <command>" tool instead. | 456 | ;; must use "gio <command>" tool instead. |
| 594 | (defconst tramp-gvfs-gio-mapping | 457 | (defconst tramp-gvfs-gio-mapping |
| @@ -1675,8 +1538,6 @@ file-notify events." | |||
| 1675 | (cadr (assoc "uri" (cadr mount-spec)))))) | 1538 | (cadr (assoc "uri" (cadr mount-spec)))))) |
| 1676 | (when (string-match "^\\(afp\\|smb\\)" method) | 1539 | (when (string-match "^\\(afp\\|smb\\)" method) |
| 1677 | (setq method (match-string 1 method))) | 1540 | (setq method (match-string 1 method))) |
| 1678 | (when (string-equal "obex" method) | ||
| 1679 | (setq host (tramp-bluez-device host))) | ||
| 1680 | (when (and (string-equal "dav" method) (string-equal "true" ssl)) | 1541 | (when (and (string-equal "dav" method) (string-equal "true" ssl)) |
| 1681 | (setq method "davs")) | 1542 | (setq method "davs")) |
| 1682 | (when (and (string-equal "davs" method) | 1543 | (when (and (string-equal "davs" method) |
| @@ -1766,8 +1627,6 @@ file-notify events." | |||
| 1766 | (cadr (assoc "volume" (cadr mount-spec))))))) | 1627 | (cadr (assoc "volume" (cadr mount-spec))))))) |
| 1767 | (when (string-match "^\\(afp\\|smb\\)" method) | 1628 | (when (string-match "^\\(afp\\|smb\\)" method) |
| 1768 | (setq method (match-string 1 method))) | 1629 | (setq method (match-string 1 method))) |
| 1769 | (when (string-equal "obex" method) | ||
| 1770 | (setq host (tramp-bluez-device host))) | ||
| 1771 | (when (and (string-equal "dav" method) (string-equal "true" ssl)) | 1630 | (when (and (string-equal "dav" method) (string-equal "true" ssl)) |
| 1772 | (setq method "davs")) | 1631 | (setq method "davs")) |
| 1773 | (when (and (string-equal "davs" method) | 1632 | (when (and (string-equal "davs" method) |
| @@ -1776,8 +1635,6 @@ file-notify events." | |||
| 1776 | (setq method "owncloud")) | 1635 | (setq method "owncloud")) |
| 1777 | (when (string-equal "google-drive" method) | 1636 | (when (string-equal "google-drive" method) |
| 1778 | (setq method "gdrive")) | 1637 | (setq method "gdrive")) |
| 1779 | (when (and (string-equal "synce" method) (zerop (length user))) | ||
| 1780 | (setq user (or (tramp-file-name-user vec) ""))) | ||
| 1781 | (when (and (string-equal "http" method) (stringp uri)) | 1638 | (when (and (string-equal "http" method) (stringp uri)) |
| 1782 | (setq uri (url-generic-parse-url uri) | 1639 | (setq uri (url-generic-parse-url uri) |
| 1783 | method (url-type uri) | 1640 | method (url-type uri) |
| @@ -1837,10 +1694,6 @@ It was \"a(say)\", but has changed to \"a{sv})\"." | |||
| 1837 | (list (tramp-gvfs-mount-spec-entry "type" "smb-share") | 1694 | (list (tramp-gvfs-mount-spec-entry "type" "smb-share") |
| 1838 | (tramp-gvfs-mount-spec-entry "server" host) | 1695 | (tramp-gvfs-mount-spec-entry "server" host) |
| 1839 | (tramp-gvfs-mount-spec-entry "share" share))) | 1696 | (tramp-gvfs-mount-spec-entry "share" share))) |
| 1840 | ((string-equal "obex" method) | ||
| 1841 | (list (tramp-gvfs-mount-spec-entry "type" method) | ||
| 1842 | (tramp-gvfs-mount-spec-entry | ||
| 1843 | "host" (concat "[" (tramp-bluez-address host) "]")))) | ||
| 1844 | ((string-match "^dav\\|^owncloud" method) | 1697 | ((string-match "^dav\\|^owncloud" method) |
| 1845 | (list (tramp-gvfs-mount-spec-entry "type" "dav") | 1698 | (list (tramp-gvfs-mount-spec-entry "type" "dav") |
| 1846 | (tramp-gvfs-mount-spec-entry "host" host) | 1699 | (tramp-gvfs-mount-spec-entry "host" host) |
| @@ -2139,103 +1992,6 @@ VEC is used only for traces." | |||
| 2139 | (tramp-get-connection-property key "Uri" "file:///")))))))))) | 1992 | (tramp-get-connection-property key "Uri" "file:///")))))))))) |
| 2140 | 1993 | ||
| 2141 | 1994 | ||
| 2142 | ;; D-Bus BLUEZ functions. | ||
| 2143 | |||
| 2144 | (defun tramp-bluez-address (device) | ||
| 2145 | "Return bluetooth device address from a given bluetooth DEVICE name." | ||
| 2146 | (when (stringp device) | ||
| 2147 | (if (string-match tramp-ipv6-regexp device) | ||
| 2148 | (match-string 0 device) | ||
| 2149 | (cadr (assoc device (tramp-bluez-list-devices)))))) | ||
| 2150 | |||
| 2151 | (defun tramp-bluez-device (address) | ||
| 2152 | "Return bluetooth device name from a given bluetooth device ADDRESS. | ||
| 2153 | ADDRESS can have the form \"xx:xx:xx:xx:xx:xx\" or \"[xx:xx:xx:xx:xx:xx]\"." | ||
| 2154 | (when (stringp address) | ||
| 2155 | (while (string-match "[][]" address) | ||
| 2156 | (setq address (replace-match "" t t address))) | ||
| 2157 | (let (result) | ||
| 2158 | (dolist (item (tramp-bluez-list-devices) result) | ||
| 2159 | (when (string-match address (cadr item)) | ||
| 2160 | (setq result (car item))))))) | ||
| 2161 | |||
| 2162 | (defun tramp-bluez-list-devices () | ||
| 2163 | "Return all discovered bluetooth devices as list. | ||
| 2164 | Every entry is a list (NAME ADDRESS). | ||
| 2165 | |||
| 2166 | If `tramp-bluez-discover-devices-timeout' is an integer, and the last | ||
| 2167 | discovery happened more time before indicated there, a rescan will be | ||
| 2168 | started, which lasts some ten seconds. Otherwise, cached results will | ||
| 2169 | be used." | ||
| 2170 | ;; Reset the scanned devices list if time has passed. | ||
| 2171 | (and (integerp tramp-bluez-discover-devices-timeout) | ||
| 2172 | (integerp tramp-bluez-discovery) | ||
| 2173 | (> (tramp-time-diff (current-time) tramp-bluez-discovery) | ||
| 2174 | tramp-bluez-discover-devices-timeout) | ||
| 2175 | (setq tramp-bluez-devices nil)) | ||
| 2176 | |||
| 2177 | ;; Rescan if needed. | ||
| 2178 | (unless tramp-bluez-devices | ||
| 2179 | (let ((object-path | ||
| 2180 | (with-tramp-dbus-call-method tramp-gvfs-dbus-event-vector t | ||
| 2181 | :system tramp-bluez-service "/" | ||
| 2182 | tramp-bluez-interface-manager "DefaultAdapter"))) | ||
| 2183 | (setq tramp-bluez-devices nil | ||
| 2184 | tramp-bluez-discovery t) | ||
| 2185 | (with-tramp-dbus-call-method tramp-gvfs-dbus-event-vector nil | ||
| 2186 | :system tramp-bluez-service object-path | ||
| 2187 | tramp-bluez-interface-adapter "StartDiscovery") | ||
| 2188 | (while tramp-bluez-discovery | ||
| 2189 | (read-event nil nil 0.1)))) | ||
| 2190 | (setq tramp-bluez-discovery (current-time)) | ||
| 2191 | (tramp-message tramp-gvfs-dbus-event-vector 10 "%s" tramp-bluez-devices) | ||
| 2192 | tramp-bluez-devices) | ||
| 2193 | |||
| 2194 | (defun tramp-bluez-property-changed (property value) | ||
| 2195 | "Signal handler for the \"org.bluez.Adapter.PropertyChanged\" signal." | ||
| 2196 | (tramp-message tramp-gvfs-dbus-event-vector 6 "%s %s" property value) | ||
| 2197 | (cond | ||
| 2198 | ((string-equal property "Discovering") | ||
| 2199 | (unless (car value) | ||
| 2200 | ;; "Discovering" FALSE means discovery run has been completed. | ||
| 2201 | ;; We stop it, because we don't need another run. | ||
| 2202 | (setq tramp-bluez-discovery nil) | ||
| 2203 | (with-tramp-dbus-call-method tramp-gvfs-dbus-event-vector t | ||
| 2204 | :system tramp-bluez-service (dbus-event-path-name last-input-event) | ||
| 2205 | tramp-bluez-interface-adapter "StopDiscovery"))))) | ||
| 2206 | |||
| 2207 | (when tramp-gvfs-enabled | ||
| 2208 | (dbus-register-signal | ||
| 2209 | :system nil nil tramp-bluez-interface-adapter "PropertyChanged" | ||
| 2210 | 'tramp-bluez-property-changed)) | ||
| 2211 | |||
| 2212 | (defun tramp-bluez-device-found (device args) | ||
| 2213 | "Signal handler for the \"org.bluez.Adapter.DeviceFound\" signal." | ||
| 2214 | (tramp-message tramp-gvfs-dbus-event-vector 6 "%s %s" device args) | ||
| 2215 | (let ((alias (car (cadr (assoc "Alias" args)))) | ||
| 2216 | (address (car (cadr (assoc "Address" args))))) | ||
| 2217 | ;; Maybe we shall check the device class for being a proper | ||
| 2218 | ;; device, and call also SDP in order to find the obex service. | ||
| 2219 | (add-to-list 'tramp-bluez-devices (list alias address)))) | ||
| 2220 | |||
| 2221 | (when tramp-gvfs-enabled | ||
| 2222 | (dbus-register-signal | ||
| 2223 | :system nil nil tramp-bluez-interface-adapter "DeviceFound" | ||
| 2224 | 'tramp-bluez-device-found)) | ||
| 2225 | |||
| 2226 | (defun tramp-bluez-parse-device-names (_ignore) | ||
| 2227 | "Return a list of (nil host) tuples allowed to access." | ||
| 2228 | (mapcar | ||
| 2229 | (lambda (x) (list nil (car x))) | ||
| 2230 | (tramp-bluez-list-devices))) | ||
| 2231 | |||
| 2232 | ;; Add completion function for OBEX method. | ||
| 2233 | (when (and tramp-gvfs-enabled | ||
| 2234 | (member tramp-bluez-service (dbus-list-known-names :system))) | ||
| 2235 | (tramp-set-completion-function | ||
| 2236 | "obex" '((tramp-bluez-parse-device-names "")))) | ||
| 2237 | |||
| 2238 | |||
| 2239 | ;; D-Bus zeroconf functions. | 1995 | ;; D-Bus zeroconf functions. |
| 2240 | 1996 | ||
| 2241 | (defun tramp-zeroconf-parse-device-names (service) | 1997 | (defun tramp-zeroconf-parse-device-names (service) |
| @@ -2317,41 +2073,6 @@ This uses \"avahi-browse\" in case D-Bus is not enabled in Avahi." | |||
| 2317 | (tramp-set-completion-function | 2073 | (tramp-set-completion-function |
| 2318 | "smb" '((tramp-gvfs-parse-device-names "_smb._tcp")))))))) | 2074 | "smb" '((tramp-gvfs-parse-device-names "_smb._tcp")))))))) |
| 2319 | 2075 | ||
| 2320 | |||
| 2321 | ;; D-Bus SYNCE functions. | ||
| 2322 | |||
| 2323 | (defun tramp-synce-list-devices () | ||
| 2324 | "Return all discovered synce devices as list. | ||
| 2325 | They are retrieved from the hal daemon." | ||
| 2326 | (let (tramp-synce-devices) | ||
| 2327 | (dolist (device | ||
| 2328 | (with-tramp-dbus-call-method tramp-gvfs-dbus-event-vector t | ||
| 2329 | :system tramp-hal-service tramp-hal-path-manager | ||
| 2330 | tramp-hal-interface-manager "GetAllDevices")) | ||
| 2331 | (when (with-tramp-dbus-call-method tramp-gvfs-dbus-event-vector t | ||
| 2332 | :system tramp-hal-service device tramp-hal-interface-device | ||
| 2333 | "PropertyExists" "sync.plugin") | ||
| 2334 | (let ((prop | ||
| 2335 | (with-tramp-dbus-call-method | ||
| 2336 | tramp-gvfs-dbus-event-vector t | ||
| 2337 | :system tramp-hal-service device tramp-hal-interface-device | ||
| 2338 | "GetPropertyString" "pda.pocketpc.name"))) | ||
| 2339 | (unless (member prop tramp-synce-devices) | ||
| 2340 | (push prop tramp-synce-devices))))) | ||
| 2341 | (tramp-message tramp-gvfs-dbus-event-vector 10 "%s" tramp-synce-devices) | ||
| 2342 | tramp-synce-devices)) | ||
| 2343 | |||
| 2344 | (defun tramp-synce-parse-device-names (_ignore) | ||
| 2345 | "Return a list of (nil host) tuples allowed to access." | ||
| 2346 | (mapcar | ||
| 2347 | (lambda (x) (list nil x)) | ||
| 2348 | (tramp-synce-list-devices))) | ||
| 2349 | |||
| 2350 | ;; Add completion function for SYNCE method. | ||
| 2351 | (when tramp-gvfs-enabled | ||
| 2352 | (tramp-set-completion-function | ||
| 2353 | "synce" '((tramp-synce-parse-device-names "")))) | ||
| 2354 | |||
| 2355 | (add-hook 'tramp-unload-hook | 2076 | (add-hook 'tramp-unload-hook |
| 2356 | (lambda () | 2077 | (lambda () |
| 2357 | (unload-feature 'tramp-gvfs 'force))) | 2078 | (unload-feature 'tramp-gvfs 'force))) |
| @@ -2368,11 +2089,6 @@ They are retrieved from the hal daemon." | |||
| 2368 | ;; * Check, how two shares of the same SMB server can be mounted in | 2089 | ;; * Check, how two shares of the same SMB server can be mounted in |
| 2369 | ;; parallel. | 2090 | ;; parallel. |
| 2370 | ;; | 2091 | ;; |
| 2371 | ;; * Apply SDP on bluetooth devices, in order to filter out obex | ||
| 2372 | ;; capability. | ||
| 2373 | ;; | ||
| 2374 | ;; * Implement obex for other serial communication but bluetooth. | ||
| 2375 | ;; | ||
| 2376 | ;; * What's up with ftps dns-sd afc admin computer? | 2092 | ;; * What's up with ftps dns-sd afc admin computer? |
| 2377 | 2093 | ||
| 2378 | ;;; tramp-gvfs.el ends here | 2094 | ;;; tramp-gvfs.el ends here |