# HG changeset patch # User Michael Albinus # Date 1257677062 0 # Node ID 9abdd578d117a1cb7f133d3acd4eed1054439f9f # Parent a061342b5097213b59b49fc237b0557ac0168703 * net/tramp.el (tramp-advice-make-auto-save-file-name) (tramp-advice-file-expand-wildcards): Unload via `ad-remove-advice'. * net/tramp.el (tramp-advice-file-expand-wildcards): Don't rely on `ad-do-it'. * net/tramp.el (tramp-handle-write-region): Copy but rename temp file, in order to keep context in SELinux. diff -r a061342b5097 -r 9abdd578d117 lisp/net/tramp.el --- a/lisp/net/tramp.el Sun Nov 08 09:29:54 2009 +0000 +++ b/lisp/net/tramp.el Sun Nov 08 10:44:22 2009 +0000 @@ -4927,22 +4927,25 @@ ((or (tramp-local-host-p v) (tramp-method-out-of-band-p v (- (or end (point-max)) (or start (point-min))))) - (condition-case err - (if (and (= (or end (point-max)) (point-max)) - (= (or start (point-min)) (point-min)) - (tramp-get-method-parameter - method 'tramp-copy-keep-tmpfile)) - (progn + (if (and (= (or end (point-max)) (point-max)) + (= (or start (point-min)) (point-min)) + (tramp-get-method-parameter + method 'tramp-copy-keep-tmpfile)) + (progn + (setq tramp-temp-buffer-file-name tmpfile) + (condition-case err ;; We keep the local file for performance ;; reasons, useful for "rsync". - (setq tramp-temp-buffer-file-name tmpfile) - (copy-file tmpfile filename t)) - (setq tramp-temp-buffer-file-name nil) - (rename-file tmpfile filename t)) - ((error quit) - (setq tramp-temp-buffer-file-name nil) - (delete-file tmpfile) - (signal (car err) (cdr err))))) + (copy-file tmpfile filename t) + ((error quit) + (setq tramp-temp-buffer-file-name nil) + (delete-file tmpfile) + (signal (car err) (cdr err))))) + (setq tramp-temp-buffer-file-name nil) + ;; Don't rename, in order to keep context in SELinux. + (unwind-protect + (copy-file tmpfile filename t) + (delete-file tmpfile)))) ;; Use inline file transfer. (rem-dec @@ -8123,8 +8126,12 @@ (setq ad-return-value (tramp-file-name-handler 'make-auto-save-file-name)) ad-do-it)) - (add-hook 'tramp-unload-hook - (lambda () (ad-unadvise 'make-auto-save-file-name)))) + (add-hook + 'tramp-unload-hook + (lambda () + (ad-remove-advice + 'make-auto-save-file-name + 'around 'tramp-advice-make-auto-save-file-name)))) ;; In Emacs < 22 and XEmacs < 21.5 autosaved remote files have ;; permission 0666 minus umask. This is a security threat. @@ -8356,12 +8363,20 @@ (if (string-match "[[*?]" (tramp-file-name-localname (tramp-dissect-file-name name))) - (setq ad-return-value (or ad-do-it (list name))) + (progn + ad-do-it + (unless ad-return-value + (setq ad-return-value (list name)))) (setq ad-return-value (list name))) ;; If it is not a Tramp file, just run the original function. - (setq ad-return-value (or ad-do-it (list name)))))) - (add-hook 'tramp-unload-hook - (lambda () (ad-unadvise 'file-expand-wildcards)))) + ad-do-it + (unless ad-return-value + (setq ad-return-value (list name)))))) + (add-hook + 'tramp-unload-hook + (lambda () + (ad-remove-advice + 'file-expand-wildcards 'around 'tramp-advice-file-expand-wildcards)))) ;; Checklist for `tramp-unload-hook' ;; - Unload all `tramp-*' packages