Mercurial > emacs
changeset 108377:7827d5a5c826
* net/tramp-compat.el (byte-compile-not-obsolete-vars): Define if
not bound.
(tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT.
(tramp-compat-funcall): New defmacro.
(tramp-compat-line-beginning-position)
(tramp-compat-line-end-position)
(tramp-compat-temporary-file-directory)
(tramp-compat-make-temp-file, tramp-compat-file-attributes)
(tramp-compat-copy-file, tramp-compat-copy-directory)
(tramp-compat-delete-file, tramp-compat-delete-directory)
(tramp-compat-number-sequence, tramp-compat-process-running-p)
* net/tramp.el (top, with-progress-reporter)
(tramp-rfn-eshadow-setup-minibuffer)
(tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times)
(tramp-handle-dired-compress-file, tramp-handle-shell-command)
(tramp-completion-mode-p, tramp-check-for-regexp)
(tramp-open-connection-setup-interactive-shell)
(tramp-compute-multi-hops, tramp-read-passwd, tramp-clear-passwd)
(tramp-time-diff, tramp-coding-system-change-eol-conversion)
(tramp-set-process-query-on-exit-flag, tramp-unload-tramp)
* net/tramp-cmds.el (tramp-cleanup-all-connections)
(tramp-reporter-dump-variable, tramp-load-report-modules)
(tramp-append-tramp-buffers)
* net/tramp-gvfs.el (tramp-gvfs-handle-file-selinux-context): Use it.
* net/tramp-imap.el (top): Autoload `epg-make-context'.
author | Michael Albinus <albinus@detlef> |
---|---|
date | Sun, 09 May 2010 21:57:55 +0200 |
parents | 96ef3c75fd61 |
children | addaf0e91db3 |
files | lisp/ChangeLog lisp/net/tramp-cmds.el lisp/net/tramp-compat.el lisp/net/tramp-gvfs.el lisp/net/tramp-imap.el lisp/net/tramp.el |
diffstat | 6 files changed, 166 insertions(+), 123 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sat May 08 16:51:08 2010 -0400 +++ b/lisp/ChangeLog Sun May 09 21:57:55 2010 +0200 @@ -1,3 +1,32 @@ +2010-05-09 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp-compat.el (byte-compile-not-obsolete-vars): Define if + not bound. + (tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT. + (tramp-compat-funcall): New defmacro. + (tramp-compat-line-beginning-position) + (tramp-compat-line-end-position) + (tramp-compat-temporary-file-directory) + (tramp-compat-make-temp-file, tramp-compat-file-attributes) + (tramp-compat-copy-file, tramp-compat-copy-directory) + (tramp-compat-delete-file, tramp-compat-delete-directory) + (tramp-compat-number-sequence, tramp-compat-process-running-p) + * net/tramp.el (top, with-progress-reporter) + (tramp-rfn-eshadow-setup-minibuffer) + (tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times) + (tramp-handle-dired-compress-file, tramp-handle-shell-command) + (tramp-completion-mode-p, tramp-check-for-regexp) + (tramp-open-connection-setup-interactive-shell) + (tramp-compute-multi-hops, tramp-read-passwd, tramp-clear-passwd) + (tramp-time-diff, tramp-coding-system-change-eol-conversion) + (tramp-set-process-query-on-exit-flag, tramp-unload-tramp) + * net/tramp-cmds.el (tramp-cleanup-all-connections) + (tramp-reporter-dump-variable, tramp-load-report-modules) + (tramp-append-tramp-buffers) + * net/tramp-gvfs.el (tramp-gvfs-handle-file-selinux-context): Use it. + + * net/tramp-imap.el (top): Autoload `epg-make-context'. + 2010-05-08 Stefan Monnier <monnier@iro.umontreal.ca> * progmodes/compile.el (compilation-buffer-modtime): Rename from
--- a/lisp/net/tramp-cmds.el Sat May 08 16:51:08 2010 -0400 +++ b/lisp/net/tramp-cmds.el Sun May 09 21:57:55 2010 +0200 @@ -106,8 +106,7 @@ (setq tramp-locked nil) ;; Flush password cache. - (when (functionp 'password-reset) - (funcall (symbol-function 'password-reset))) + (tramp-compat-funcall 'password-reset) ;; Flush file and connection cache. (clrhash tramp-cache-data) @@ -254,7 +253,7 @@ (base64-encode-string val)))))) ;; Dump variable. - (funcall (symbol-function 'reporter-dump-variable) varsym mailbuf) + (tramp-compat-funcall 'reporter-dump-variable varsym mailbuf) (unless (hash-table-p val) ;; Remove string quotation. @@ -283,10 +282,8 @@ (load "mml" 'noerror)) (require 'message nil 'noerror) (require 'mml nil 'noerror)) - (when (functionp 'message-mode) - (funcall (symbol-function 'message-mode))) - (when (functionp 'mml-mode) - (funcall (symbol-function 'mml-mode) t))) + (tramp-compat-funcall 'message-mode) + (tramp-compat-funcall 'mml-mode t)) (defun tramp-append-tramp-buffers () "Append Tramp buffers and buffer local variables into the bug report." @@ -308,15 +305,14 @@ (erase-buffer) (insert "\n(setq\n") (lisp-indent-line) - (funcall (symbol-function 'reporter-dump-variable) - 'buffer-name (current-buffer)) + (tramp-compat-funcall + 'reporter-dump-variable 'buffer-name (current-buffer)) (dolist (varsym-or-cons-cell (buffer-local-variables buffer)) (let ((varsym (or (car-safe varsym-or-cons-cell) varsym-or-cons-cell))) (when (string-match "tramp" (symbol-name varsym)) - (funcall - (symbol-function 'reporter-dump-variable) - varsym (current-buffer))))) + (tramp-compat-funcall + 'reporter-dump-variable varsym (current-buffer))))) (lisp-indent-line) (insert ")\n")) (insert-buffer-substring elbuf))) @@ -328,7 +324,7 @@ (symbol-value 'mml-mode)) (let ((tramp-buf-regexp "\\*\\(debug \\)?tramp/") - (buffer-list (funcall (symbol-function 'tramp-list-tramp-buffers))) + (buffer-list (tramp-compat-funcall 'tramp-list-tramp-buffers)) (curbuf (current-buffer))) ;; There is at least one Tramp buffer. @@ -376,10 +372,10 @@ use another mail agent (by copying the contents of this buffer) please ensure that the buffers are attached to your email.\n\n") (dolist (buffer buffer-list) - (funcall (symbol-function 'mml-insert-empty-tag) - 'part 'type "text/plain" 'encoding "base64" - 'disposition "attachment" 'buffer buffer - 'description buffer)) + (tramp-compat-funcall + 'mml-insert-empty-tag 'part 'type "text/plain" + 'encoding "base64" 'disposition "attachment" 'buffer buffer + 'description buffer)) (set-buffer-modified-p nil)) ;; Don't send. Delete the message buffer.
--- a/lisp/net/tramp-compat.el Sat May 08 16:51:08 2010 -0400 +++ b/lisp/net/tramp-compat.el Sun May 09 21:57:55 2010 +0200 @@ -89,14 +89,25 @@ (unless (boundp 'byte-compile-not-obsolete-var) (defvar byte-compile-not-obsolete-var nil)) (setq byte-compile-not-obsolete-var 'directory-sep-char) - (if (boundp 'byte-compile-not-obsolete-vars) ; Emacs 23.2 - (setq byte-compile-not-obsolete-vars '(directory-sep-char))) + ;; Emacs 23.2. + (unless (boundp 'byte-compile-not-obsolete-vars) + (defvar byte-compile-not-obsolete-vars nil)) + (setq byte-compile-not-obsolete-vars '(directory-sep-char)) ;; `with-temp-message' does not exists in XEmacs. (condition-case nil (with-temp-message (current-message) nil) (error (defmacro with-temp-message (message &rest body) `(progn ,@body)))) + ;; For not existing functions, or functions with a changed argument + ;; list, there are compiler warnings. We want to avoid them in + ;; cases we know what we do. + (defmacro tramp-compat-funcall (function &rest arguments) + (if (featurep 'xemacs) + `(funcall (symbol-function ,function) ,@arguments) + `(when (or (subrp ,function) (functionp ,function)) + (with-no-warnings (funcall ,function ,@arguments))))) + ;; `set-buffer-multibyte' comes from Emacs Leim. (unless (fboundp 'set-buffer-multibyte) (defalias 'set-buffer-multibyte 'ignore)) @@ -182,8 +193,8 @@ own implementation." (cond ((fboundp 'line-beginning-position) - (funcall (symbol-function 'line-beginning-position))) - ((fboundp 'point-at-bol) (funcall (symbol-function 'point-at-bol))) + (tramp-compat-funcall 'line-beginning-position)) + ((fboundp 'point-at-bol) (tramp-compat-funcall 'point-at-bol)) (t (save-excursion (beginning-of-line) (point))))) (defsubst tramp-compat-line-end-position () @@ -191,8 +202,8 @@ Calls `line-end-position' or `point-at-eol' if defined, else own implementation." (cond - ((fboundp 'line-end-position) (funcall (symbol-function 'line-end-position))) - ((fboundp 'point-at-eol) (funcall (symbol-function 'point-at-eol))) + ((fboundp 'line-end-position) (tramp-compat-funcall 'line-end-position)) + ((fboundp 'point-at-eol) (tramp-compat-funcall 'point-at-eol)) (t (save-excursion (end-of-line) (point))))) (defsubst tramp-compat-temporary-file-directory () @@ -201,7 +212,7 @@ this is the function `temp-directory'." (cond ((boundp 'temporary-file-directory) (symbol-value 'temporary-file-directory)) - ((fboundp 'temp-directory) (funcall (symbol-function 'temp-directory))) + ((fboundp 'temp-directory) (tramp-compat-funcall 'temp-directory)) ((let ((d (getenv "TEMP"))) (and d (file-directory-p d))) (file-name-as-directory (getenv "TEMP"))) ((let ((d (getenv "TMP"))) (and d (file-directory-p d))) @@ -227,8 +238,7 @@ result) (if (fboundp 'make-temp-file) (setq result - (funcall - (symbol-function 'make-temp-file) prefix dir-flag extension)) + (tramp-compat-funcall 'make-temp-file prefix dir-flag extension)) ;; We use our own implementation, taken from files.el. (while (condition-case () @@ -261,19 +271,27 @@ ((tramp-tramp-file-p filename) (tramp-file-name-handler 'file-attributes filename id-format)) (t (condition-case nil - (funcall (symbol-function 'file-attributes) filename id-format) + (tramp-compat-funcall 'file-attributes filename id-format) (wrong-number-of-arguments (file-attributes filename)))))) ;; PRESERVE-UID-GID has been introduced with Emacs 23. It does not ;; hurt to ignore it for other (X)Emacs versions. +;; PRESERVE-SELINUX-CONTEXT has been introduced with Emacs 24. (defun tramp-compat-copy-file - (filename newname &optional ok-if-already-exists keep-date preserve-uid-gid) + (filename newname &optional ok-if-already-exists keep-date + preserve-uid-gid preserve-selinux-context) "Like `copy-file' for Tramp files (compat function)." - (if preserve-uid-gid - (funcall - (symbol-function 'copy-file) - filename newname ok-if-already-exists keep-date preserve-uid-gid) - (copy-file filename newname ok-if-already-exists keep-date))) + (cond + (preserve-selinux-context + (tramp-compat-funcall + 'copy-file filename newname ok-if-already-exists keep-date + preserve-uid-gid preserve-selinux-context)) + (preserve-uid-gid + (tramp-compat-funcall + 'copy-file filename newname ok-if-already-exists keep-date + preserve-uid-gid)) + (t + (copy-file filename newname ok-if-already-exists keep-date)))) ;; `copy-directory' is a new function in Emacs 23.2. Implementation ;; is taken from there. @@ -281,8 +299,7 @@ (directory newname &optional keep-time parents) "Make a copy of DIRECTORY (compat function)." (if (fboundp 'copy-directory) - (funcall - (symbol-function 'copy-directory) directory newname keep-time parents) + (tramp-compat-funcall 'copy-directory directory newname keep-time parents) ;; If `default-directory' is a remote directory, make sure we find ;; its `copy-directory' handler. @@ -323,7 +340,7 @@ (if (null force) (delete-file filename) (condition-case nil - (funcall (symbol-function 'delete-file) filename force) + (tramp-compat-funcall 'delete-file filename force) ;; This Emacs version does not support the FORCE flag. Setting ;; `delete-by-moving-to-trash' shall give us the same effect. (wrong-number-of-arguments @@ -341,7 +358,7 @@ (if (null recursive) (delete-directory directory) (condition-case nil - (funcall (symbol-function 'delete-directory) directory recursive) + (tramp-compat-funcall 'delete-directory directory recursive) ;; This Emacs version does not support the RECURSIVE flag. We ;; use the implementation from Emacs 23.2. (wrong-number-of-arguments @@ -360,7 +377,7 @@ (defun tramp-compat-number-sequence (from &optional to inc) "Return a sequence of numbers from FROM to TO as a list (compat function)." (if (or (subrp 'number-sequence) (symbol-file 'number-sequence)) - (funcall (symbol-function 'number-sequence) from to inc) + (tramp-compat-funcall 'number-sequence from to inc) (if (or (not to) (= from to)) (list from) (or inc (setq inc 1)) @@ -390,15 +407,13 @@ (cond ;; GNU Emacs 22 on w32. ((fboundp 'w32-window-exists-p) - (funcall (symbol-function 'w32-window-exists-p) - process-name process-name)) + (tramp-compat-funcall 'w32-window-exists-p process-name process-name)) ;; GNU Emacs 23. ((and (fboundp 'list-system-processes) (fboundp 'process-attributes)) (let (result) - (dolist (pid (funcall (symbol-function 'list-system-processes)) result) - (let ((attributes - (funcall (symbol-function 'process-attributes) pid))) + (dolist (pid (tramp-compat-funcall 'list-system-processes) result) + (let ((attributes (tramp-compat-funcall 'process-attributes pid))) (when (and (string-equal (cdr (assoc 'user attributes)) (user-login-name)) (let ((comm (cdr (assoc 'comm attributes))))
--- a/lisp/net/tramp-gvfs.el Sat May 08 16:51:08 2010 -0400 +++ b/lisp/net/tramp-gvfs.el Sun May 09 21:57:55 2010 +0200 @@ -629,8 +629,8 @@ (defun tramp-gvfs-handle-file-selinux-context (filename) "Like `file-selinux-context' for Tramp files." - (funcall (symbol-function 'file-selinux-context) - (tramp-gvfs-fuse-file-name filename))) + (tramp-compat-funcall + 'file-selinux-context (tramp-gvfs-fuse-file-name filename))) (defun tramp-gvfs-handle-file-writable-p (filename) "Like `file-writable-p' for Tramp files."
--- a/lisp/net/tramp-imap.el Sat May 08 16:51:08 2010 -0400 +++ b/lisp/net/tramp-imap.el Sun May 09 21:57:55 2010 +0200 @@ -63,6 +63,7 @@ (autoload 'epg-context-set-progress-callback "epg") (autoload 'epg-decrypt-string "epg") (autoload 'epg-encrypt-string "epg") +(autoload 'epg-make-context "epg") (autoload 'imap-hash-get "imap-hash") (autoload 'imap-hash-make "imap-hash") (autoload 'imap-hash-map "imap-hash")
--- a/lisp/net/tramp.el Sat May 08 16:51:08 2010 -0400 +++ b/lisp/net/tramp.el Sun May 09 21:57:55 2010 +0200 @@ -145,8 +145,7 @@ ;; this would load dbus.el. (when (and (featurep 'dbusbind) (condition-case nil - (funcall (symbol-function 'dbus-get-unique-name) - :session) + (tramp-compat-funcall 'dbus-get-unique-name :session) (error nil)) (tramp-compat-process-running-p "gvfs-fuse-daemon")) 'tramp-gvfs) @@ -2274,14 +2273,14 @@ ;; introduced in Emacs 24.1. (when (<= ,level tramp-verbose) (condition-case nil - (setq pr (funcall (symbol-function 'make-progress-reporter) ,message) - tm (run-at-time 3 0.1 'progress-reporter-update pr)) + (setq pr (tramp-compat-funcall 'make-progress-reporter ,message) + tm (if pr (run-at-time 3 0.1 'progress-reporter-update pr))) (error nil))) (unwind-protect ;; Execute the body. (progn ,@body) ;; Stop progress reporter. - (if tm (cancel-timer tm)) + (if tm (tramp-compat-funcall 'cancel-timer tm)) (tramp-message ,vec ,level "%s...done" ,message)))) (put 'with-progress-reporter 'lisp-indent-function 3) @@ -2398,15 +2397,16 @@ special handling of `substitute-in-file-name'." (when (symbol-value 'minibuffer-completing-file-name) (setq tramp-rfn-eshadow-overlay - (funcall (symbol-function 'make-overlay) - (funcall (symbol-function 'minibuffer-prompt-end)) - (funcall (symbol-function 'minibuffer-prompt-end)))) + (tramp-compat-funcall + 'make-overlay + (tramp-compat-funcall 'minibuffer-prompt-end) + (tramp-compat-funcall 'minibuffer-prompt-end))) ;; Copy rfn-eshadow-overlay properties. - (let ((props (funcall (symbol-function 'overlay-properties) - (symbol-value 'rfn-eshadow-overlay)))) + (let ((props (tramp-compat-funcall + 'overlay-properties (symbol-value 'rfn-eshadow-overlay)))) (while props - (funcall (symbol-function 'overlay-put) - tramp-rfn-eshadow-overlay (pop props) (pop props)))))) + (tramp-compat-funcall + 'overlay-put tramp-rfn-eshadow-overlay (pop props) (pop props)))))) (when (boundp 'rfn-eshadow-setup-minibuffer-hook) (add-hook 'rfn-eshadow-setup-minibuffer-hook @@ -2425,10 +2425,12 @@ `file-name-shadow-mode'; the minibuffer should have already been set up by `rfn-eshadow-setup-minibuffer'." ;; In remote files name, there is a shadowing just for the local part. - (let ((end (or (funcall (symbol-function 'overlay-end) - (symbol-value 'rfn-eshadow-overlay)) - (funcall (symbol-function 'minibuffer-prompt-end))))) - (when (file-remote-p (buffer-substring-no-properties end (point-max))) + (let ((end (or (tramp-compat-funcall + 'overlay-end (symbol-value 'rfn-eshadow-overlay)) + (tramp-compat-funcall 'minibuffer-prompt-end)))) + (when + (file-remote-p + (tramp-compat-funcall 'buffer-substring-no-properties end (point-max))) (save-excursion (save-restriction (narrow-to-region @@ -2438,8 +2440,9 @@ (point-max)) (let ((rfn-eshadow-overlay tramp-rfn-eshadow-overlay) (rfn-eshadow-update-overlay-hook nil)) - (move-overlay rfn-eshadow-overlay (point-max) (point-max)) - (funcall (symbol-function 'rfn-eshadow-update-overlay)))))))) + (tramp-compat-funcall + 'move-overlay rfn-eshadow-overlay (point-max) (point-max)) + (tramp-compat-funcall 'rfn-eshadow-update-overlay))))))) (when (boundp 'rfn-eshadow-update-overlay-hook) (add-hook 'rfn-eshadow-update-overlay-hook @@ -2989,9 +2992,8 @@ ;; local host. (and (functionp 'subr-arity) (subrp (symbol-function 'format-time-string)) - (= 3 (cdr (funcall (symbol-function 'subr-arity) - (symbol-function - 'format-time-string))))))) + (= 3 (cdr (tramp-compat-funcall + 'subr-arity 'format-time-string)))))) (tramp-send-command-and-check v (format "%s touch -t %s %s" (if utc "TZ=UTC; export TZ;" "") @@ -4157,8 +4159,8 @@ (tramp-send-command-and-check v (concat (nth 2 suffix) " " (tramp-shell-quote-argument localname)))) - ;; `dired-remove-file' is not defined in XEmacs - (funcall (symbol-function 'dired-remove-file) file) + ;; `dired-remove-file' is not defined in XEmacs. + (tramp-compat-funcall 'dired-remove-file file) (string-match (car suffix) file) (concat (substring file 0 (match-beginning 0)))))) (t @@ -4169,8 +4171,8 @@ (tramp-send-command-and-check v (concat "gzip -f " (tramp-shell-quote-argument localname)))) - ;; `dired-remove-file' is not defined in XEmacs - (funcall (symbol-function 'dired-remove-file) file) + ;; `dired-remove-file' is not defined in XEmacs. + (tramp-compat-funcall 'dired-remove-file file) (cond ((file-exists-p (concat file ".gz")) (concat file ".gz")) ((file-exists-p (concat file ".z")) @@ -4714,8 +4716,7 @@ ;; There's some output, display it. (when (with-current-buffer output-buffer (> (point-max) (point-min))) (if (functionp 'display-message-or-buffer) - (funcall (symbol-function 'display-message-or-buffer) - output-buffer) + (tramp-compat-funcall 'display-message-or-buffer output-buffer) (pop-to-buffer output-buffer)))))))) ;; File Editing. @@ -5638,7 +5639,8 @@ (featurep 'tramp) ;; If it's loaded, we may as well use it. ;; `partial-completion-mode' does not exist in XEmacs. ;; It is obsoleted with Emacs 24.1. - (and (boundp 'partial-completion-mode) partial-completion-mode) + (and (boundp 'partial-completion-mode) + (symbol-value 'partial-completion-mode)) ;; FIXME: These may have been loaded even if the user never ;; intended to use them. (featurep 'ido) @@ -5730,19 +5732,18 @@ ;; `last-input-event' might be nil. (not (null last-input-event)) ;; `last-input-event' may have no character approximation. - (funcall (symbol-function 'event-to-character) last-input-event) + (tramp-compat-funcall 'event-to-character last-input-event) (or ;; ?\t has event-modifier 'control. (equal - (funcall (symbol-function 'event-to-character) - last-input-event) ?\t) + (tramp-compat-funcall 'event-to-character last-input-event) ?\t) (and (not (event-modifiers last-input-event)) (or (equal - (funcall (symbol-function 'event-to-character) - last-input-event) ?\?) + (tramp-compat-funcall 'event-to-character last-input-event) + ?\?) (equal - (funcall (symbol-function 'event-to-character) - last-input-event) ?\ ))))))) + (tramp-compat-funcall 'event-to-character last-input-event) + ?\ ))))))) (defun tramp-connectable-p (filename) "Check, whether it is possible to connect the remote host w/o side-effects. @@ -6777,10 +6778,11 @@ (when (or (not (tramp-get-connection-property proc "check-remote-echo" nil)) ;; Sometimes, the echo string is suppressed on the remote side. (not (string-equal - (substring-no-properties - tramp-echo-mark-marker + (tramp-compat-funcall + 'substring-no-properties tramp-echo-mark-marker 0 (min tramp-echo-mark-marker-length (1- (point-max)))) - (buffer-substring-no-properties + (tramp-compat-funcall + 'buffer-substring-no-properties 1 (min (1+ tramp-echo-mark-marker-length) (point-max)))))) ;; No echo to be handled, now we can look for the regexp. (goto-char (point-min)) @@ -6907,7 +6909,7 @@ (if (featurep 'mule) ;; Use MULE to select the right EOL convention for communicating ;; with the process. - (let* ((cs (or (funcall (symbol-function 'process-coding-system) proc) + (let* ((cs (or (tramp-compat-funcall 'process-coding-system proc) (cons 'undecided 'undecided))) cs-decode cs-encode) (when (symbolp cs) (setq cs (cons cs cs))) @@ -6920,8 +6922,8 @@ (when (search-forward "\r" nil t) (setq cs-decode (tramp-coding-system-change-eol-conversion cs-decode 'dos))) - (funcall (symbol-function 'set-buffer-process-coding-system) - cs-decode cs-encode) + (tramp-compat-funcall + 'set-buffer-process-coding-system cs-decode cs-encode) (tramp-message vec 5 "Setting coding system to `%s' and `%s'" cs-decode cs-encode)) ;; Look for ^M and do something useful if found. @@ -6950,7 +6952,7 @@ ;; Keep the debug buffer. (rename-buffer (generate-new-buffer-name tramp-temp-buffer-name) 'unique) - (funcall (symbol-function 'tramp-cleanup-connection) vec) + (tramp-compat-funcall 'tramp-cleanup-connection vec) (if (= (point-min) (point-max)) (kill-buffer nil) (rename-buffer (tramp-debug-buffer-name vec) 'unique)) @@ -7333,7 +7335,7 @@ 'target-alist (vector (tramp-file-name-method hop) (tramp-file-name-user hop) - (funcall (symbol-function 'tramp-gw-open-connection) vec gw hop) nil)) + (tramp-compat-funcall 'tramp-gw-open-connection vec gw hop) nil)) ;; For the password prompt, we need the correct values. ;; Therefore, we must remember the gateway vector. But we ;; cannot do it as connection property, because it shouldn't @@ -8612,16 +8614,17 @@ (and (boundp 'auth-sources) (tramp-get-connection-property v "first-password-request" nil) ;; Try with Tramp's current method. - (funcall (symbol-function 'auth-source-user-or-password) - "password" tramp-current-host tramp-current-method)) + (tramp-compat-funcall + 'auth-source-user-or-password + "password" tramp-current-host tramp-current-method)) ;; Try the password cache. (when (functionp 'password-read) (unless (tramp-get-connection-property v "first-password-request" nil) - (funcall (symbol-function 'password-cache-remove) key)) + (tramp-compat-funcall 'password-cache-remove key)) (let ((password - (funcall (symbol-function 'password-read) pw-prompt key))) - (funcall (symbol-function 'password-cache-add) key password) + (tramp-compat-funcall 'password-read pw-prompt key))) + (tramp-compat-funcall 'password-cache-add key password) password)) ;; Else, get the password interactively. (read-passwd pw-prompt)) @@ -8629,14 +8632,13 @@ (defun tramp-clear-passwd (vec) "Clear password cache for connection related to VEC." - (when (functionp 'password-cache-remove) - (funcall - (symbol-function 'password-cache-remove) - (tramp-make-tramp-file-name - (tramp-file-name-method vec) - (tramp-file-name-user vec) - (tramp-file-name-host vec) - "")))) + (tramp-compat-funcall + 'password-cache-remove + (tramp-make-tramp-file-name + (tramp-file-name-method vec) + (tramp-file-name-user vec) + (tramp-file-name-host vec) + ""))) ;; Snarfed code from time-date.el and parse-time.el @@ -8673,16 +8675,17 @@ ;; Pacify byte-compiler with `symbol-function'. (cond ((and (fboundp 'subtract-time) (fboundp 'float-time)) - (funcall (symbol-function 'float-time) - (funcall (symbol-function 'subtract-time) t1 t2))) + (tramp-compat-funcall + 'float-time (tramp-compat-funcall 'subtract-time t1 t2))) ((and (fboundp 'subtract-time) (fboundp 'time-to-seconds)) - (funcall (symbol-function 'time-to-seconds) - (funcall (symbol-function 'subtract-time) t1 t2))) + (tramp-compat-funcall + 'time-to-seconds (tramp-compat-funcall 'subtract-time t1 t2))) ((fboundp 'itimer-time-difference) - (funcall (symbol-function 'itimer-time-difference) - (if (< (length t1) 3) (append t1 '(0)) t1) - (if (< (length t2) 3) (append t2 '(0)) t2))) + (tramp-compat-funcall + 'itimer-time-difference + (if (< (length t1) 3) (append t1 '(0)) t1) + (if (< (length t2) 3) (append t2 '(0)) t2))) (t (let ((time (tramp-time-subtract t1 t2))) (+ (* (car time) 65536.0) @@ -8693,18 +8696,18 @@ "Return a coding system like CODING-SYSTEM but with given EOL-TYPE. EOL-TYPE can be one of `dos', `unix', or `mac'." (cond ((fboundp 'coding-system-change-eol-conversion) - (funcall (symbol-function 'coding-system-change-eol-conversion) - coding-system eol-type)) + (tramp-compat-funcall + 'coding-system-change-eol-conversion coding-system eol-type)) ((fboundp 'subsidiary-coding-system) - (funcall (symbol-function 'subsidiary-coding-system) - coding-system - (cond ((eq eol-type 'dos) 'crlf) - ((eq eol-type 'unix) 'lf) - ((eq eol-type 'mac) 'cr) - (t - (error "Unknown EOL-TYPE `%s', must be %s" - eol-type - "`dos', `unix', or `mac'"))))) + (tramp-compat-funcall + 'subsidiary-coding-system coding-system + (cond ((eq eol-type 'dos) 'crlf) + ((eq eol-type 'unix) 'lf) + ((eq eol-type 'mac) 'cr) + (t + (error "Unknown EOL-TYPE `%s', must be %s" + eol-type + "`dos', `unix', or `mac'"))))) (t (error "Can't change EOL conversion -- is MULE missing?")))) (defun tramp-set-process-query-on-exit-flag (process flag) @@ -8712,8 +8715,8 @@ If the second argument flag is non-nil, Emacs will query the user before exiting if process is running." (if (fboundp 'set-process-query-on-exit-flag) - (funcall (symbol-function 'set-process-query-on-exit-flag) process flag) - (funcall (symbol-function 'process-kill-without-query) process flag))) + (tramp-compat-funcall 'set-process-query-on-exit-flag process flag) + (tramp-compat-funcall 'process-kill-without-query) process flag)) ;; ------------------------------------------------------------ @@ -8773,8 +8776,7 @@ ;; When Tramp is not loaded yet, its autoloads are still active. (tramp-unload-file-name-handlers) ;; ange-ftp settings must be enabled. - (when (functionp 'tramp-ftp-enable-ange-ftp) - (funcall (symbol-function 'tramp-ftp-enable-ange-ftp))) + (tramp-compat-funcall 'tramp-ftp-enable-ange-ftp) ;; Maybe its not loaded yet. (condition-case nil (unload-feature 'tramp 'force)