* 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'.
This commit is contained in:
parent
f913fe7d54
commit
0d5852cfaa
6 changed files with 166 additions and 123 deletions
|
@ -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
|
||||
|
|
|
@ -106,8 +106,7 @@ This includes password cache, file cache, connection cache, buffers."
|
|||
(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 @@ Used for non-7bit chars in strings."
|
|||
(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 @@ Used for non-7bit chars in strings."
|
|||
(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 @@ Used for non-7bit chars in strings."
|
|||
(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 @@ Used for non-7bit chars in strings."
|
|||
(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 @@ This is a special notion of the `gnus/message' package. If you
|
|||
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.
|
||||
|
|
|
@ -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 @@ Calls `line-beginning-position' or `point-at-bol' if defined, else
|
|||
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 @@ own implementation."
|
|||
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 @@ For Emacs, this is the variable `temporary-file-directory', for XEmacs
|
|||
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 @@ Add the extension of FILENAME, if existing."
|
|||
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 @@ Add the extension of FILENAME, if existing."
|
|||
((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 @@ Add the extension of FILENAME, if existing."
|
|||
(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 @@ Add the extension of FILENAME, if existing."
|
|||
(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 @@ Add the extension of FILENAME, if existing."
|
|||
(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 @@ Add the extension of FILENAME, if existing."
|
|||
(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 @@ element is not omitted."
|
|||
(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))))
|
||||
|
|
|
@ -629,8 +629,8 @@ is no information where to trace the message.")
|
|||
|
||||
(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."
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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 @@ FILE must be a local file name on a connection identified via VEC."
|
|||
;; 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 @@ Adds another overlay hiding filename parts according to Tramp's
|
|||
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 @@ This is intended to be used as a minibuffer `post-command-hook' for
|
|||
`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 @@ been set up by `rfn-eshadow-setup-minibuffer'."
|
|||
(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 @@ of."
|
|||
;; 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 @@ This is like `dired-recursive-delete-directory' for Tramp files."
|
|||
(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 @@ This is like `dired-recursive-delete-directory' for Tramp files."
|
|||
(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 @@ Lisp error raised when PROGRAM is nil is trapped also, returning 1."
|
|||
;; 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 @@ Falls back to normal file name handler if no Tramp file name handler exists."
|
|||
(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 @@ should never be set globally, the intention is to let-bind it.")
|
|||
;; `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 @@ Erase echoed commands if exists."
|
|||
(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 @@ process to set up. VEC specifies the connection."
|
|||
(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 @@ process to set up. VEC specifies the connection."
|
|||
(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 @@ process to set up. VEC specifies the connection."
|
|||
;; 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 @@ Gateway hops are already opened."
|
|||
'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 @@ Invokes `password-read' if available, `read-passwd' else."
|
|||
(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 @@ Invokes `password-read' if available, `read-passwd' else."
|
|||
|
||||
(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 @@ T1 and T2 are time values (as returned by `current-time' for example)."
|
|||
;; 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 @@ T1 and T2 are time values (as returned by `current-time' for example)."
|
|||
"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 @@ EOL-TYPE can be one of `dos', `unix', or `mac'."
|
|||
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 @@ Only works for Bourne-like shells."
|
|||
;; 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)
|
||||
|
|
Loading…
Add table
Reference in a new issue