Function: tramp-handle-find-backup-file-name

tramp-handle-find-backup-file-name is a byte-compiled function defined in tramp.el.gz.

Signature

(tramp-handle-find-backup-file-name FILENAME)

Documentation

Like find-backup-file-name for Tramp files.

Source Code

;; Defined in /usr/src/emacs/lisp/net/tramp.el.gz
(defun tramp-handle-find-backup-file-name (filename)
  "Like `find-backup-file-name' for Tramp files."
  (with-parsed-tramp-file-name filename nil
    (let ((backup-directory-alist
	   (if tramp-backup-directory-alist
	       (mapcar
		(lambda (x)
		  (cons
		   (car x)
		   (if (and (stringp (cdr x))
			    (file-name-absolute-p (cdr x))
			    (not (tramp-tramp-file-p (cdr x))))
		       (tramp-make-tramp-file-name v (cdr x))
		     (cdr x))))
		tramp-backup-directory-alist)
	     backup-directory-alist))
	  result)
      (prog1 ;; Run plain `find-backup-file-name'.
	  (setq result
		(tramp-run-real-handler
		 #'find-backup-file-name (list filename)))
        ;; Protect against security hole.
	(when (and (not tramp-allow-unsafe-temporary-files)
		   (not backup-inhibited)
		   (file-in-directory-p (car result) temporary-file-directory)
		   (zerop (or (tramp-compat-file-attribute-user-id
			       (file-attributes filename 'integer))
			      tramp-unknown-id-integer))
		   (not (with-tramp-connection-property
			    (tramp-get-process v) "unsafe-temporary-file"
			  (yes-or-no-p
			   (concat
			    "Backup file on local temporary directory, "
			    "do you want to continue?")))))
	  (tramp-error v 'file-error "Unsafe backup file name"))))))