;;; tramp-compat.el --- Tramp compatibility functions
-;; Copyright (C) 2007-2012 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2013 Free Software Foundation, Inc.
;; Author: Michael Albinus <michael.albinus@gmx.de>
;; Keywords: comm, processes
;;; Code:
-(require 'tramp-loaddefs)
-
(eval-when-compile
;; Pacify byte-compiler.
(eval-and-compile
+ ;; Some packages must be required for XEmacs, because we compile
+ ;; with -no-autoloads.
+ (when (featurep 'xemacs)
+ (require 'cus-edit)
+ (require 'env)
+ (require 'executable)
+ (require 'outline)
+ (require 'passwd)
+ (require 'pp)
+ (require 'regexp-opt))
+
(require 'advice)
(require 'custom)
(require 'format-spec)
(require 'shell)
+ (require 'tramp-loaddefs)
+
;; As long as password.el is not part of (X)Emacs, it shouldn't be
;; mandatory.
(if (featurep 'xemacs)
(require 'timer-funcs)
(require 'timer))
- ;; We check whether `start-file-process' is bound.
- (unless (fboundp 'start-file-process)
-
- ;; tramp-util offers integration into other (X)Emacs packages like
- ;; compile.el, gud.el etc. Not necessary in Emacs 23.
- (eval-after-load "tramp"
- '(require 'tramp-util))
-
- ;; Make sure that we get integration with the VC package. When it
- ;; is loaded, we need to pull in the integration module. Not
- ;; necessary in Emacs 23.
- (eval-after-load "vc"
- (eval-after-load "tramp"
- '(require 'tramp-vc))))
-
;; Avoid byte-compiler warnings if the byte-compiler supports this.
;; Currently, XEmacs supports this.
(when (featurep 'xemacs)
;; mechanism.
;; `file-remote-p' has been introduced with Emacs 22. The version
- ;; of XEmacs is not a magic file name function (yet); this is
- ;; corrected in tramp-util.el. Here it is sufficient if the
- ;; function exists.
+ ;; of XEmacs is not a magic file name function (yet).
(unless (fboundp 'file-remote-p)
(defalias 'file-remote-p
(lambda (file &optional identification connected)
(when (tramp-tramp-file-p file)
- (tramp-file-name-handler
+ (tramp-compat-funcall
+ 'tramp-file-name-handler
'file-remote-p file identification connected)))))
;; `process-file' does not exist in XEmacs.
(defalias 'set-file-times
(lambda (filename &optional time)
(when (tramp-tramp-file-p filename)
- (tramp-file-name-handler
- 'set-file-times filename time)))))
+ (tramp-compat-funcall
+ 'tramp-file-name-handler 'set-file-times filename time)))))
;; We currently use "[" and "]" in the filename format for IPv6
;; hosts of GNU Emacs. This means that Emacs wants to expand
For Emacs, this is the variable `temporary-file-directory', for XEmacs
this is the function `temp-directory'."
(let (file-name-handler-alist)
+ ;; We must return a local directory. If it is remote, we could
+ ;; run into an infloop.
(cond
- ;; We must return a local directory. If it is remote, we could
- ;; run into an infloop.
- ((boundp 'temporary-file-directory)
- (eval (car (get 'temporary-file-directory 'standard-value))))
+ ((and (boundp 'temporary-file-directory)
+ (eval (car (get 'temporary-file-directory 'standard-value)))))
((fboundp 'temp-directory) (tramp-compat-funcall 'temp-directory))
((let ((d (getenv "TEMP"))) (and d (file-directory-p d)))
(file-name-as-directory (getenv "TEMP")))
((or (null id-format) (eq id-format 'integer))
(file-attributes filename))
((tramp-tramp-file-p filename)
- (tramp-file-name-handler 'file-attributes filename id-format))
+ (tramp-compat-funcall
+ 'tramp-file-name-handler 'file-attributes filename id-format))
(t (condition-case nil
(tramp-compat-funcall 'file-attributes filename id-format)
(wrong-number-of-arguments (file-attributes filename))))))
;; PRESERVE-UID-GID does not exist in XEmacs.
-;; PRESERVE-SELINUX-CONTEXT has been introduced with Emacs 24.1.
+;; PRESERVE-EXTENDED-ATTRIBUTES has been introduced with Emacs 24.1
+;; (as PRESERVE-SELINUX-CONTEXT), and renamed in Emacs 24.3.
(defun tramp-compat-copy-file
(filename newname &optional ok-if-already-exists keep-date
- preserve-uid-gid preserve-selinux-context)
+ preserve-uid-gid preserve-extended-attributes)
"Like `copy-file' for Tramp files (compat function)."
(cond
- (preserve-selinux-context
+ (preserve-extended-attributes
(tramp-compat-funcall
'copy-file filename newname ok-if-already-exists keep-date
- preserve-uid-gid preserve-selinux-context))
+ preserve-uid-gid preserve-extended-attributes))
(preserve-uid-gid
(tramp-compat-funcall
'copy-file filename newname ok-if-already-exists keep-date