+2004-08-10 Michael Albinus <michael.albinus@gmx.de>
+
+ Sync with Tramp 2.0.44.
+
+ * net/tramp.el (tramp-post-connection): Quote $1 and $2 of shell
+ function "tramp_file_attributes". Otherwise, file names
+ containing spaces are misinterpreted. Reported by Magnus Henoch
+ <mange@freemail.hu>.
+ (tramp-handle-file-truename): FILENAME must be expanded first.
+ Otherwise, parameters like "/ssh:deego@gnufans.net:~" will return
+ obscure results. Reported by D. Goel <deego@gnufans.org>.
+ (tramp-handle-verify-visited-file-modtime): If file does not
+ exist, say it is not modified if and only if that agrees with the
+ buffer's record. Check whether a file is visiting the buffer, or
+ the buffer has no recorded last modification time. Return t in
+ case the visiting file doesn't exist. Suggested by Luc Teirlinck
+ <teirllm@auburn.edu>.
+ (tramp-handle-write-region): Pass modtime explicitely to
+ `set-visited-file-modtime', because filename can be different
+ from (buffer-file-name) if `file-precious-flag' is set.
+ `set-visited-file-modtime' must be called always when `visit' is t
+ or a string. Suggested by Luc Teirlinck <teirllm@auburn.edu>.
+ (tramp-handle-set-visited-file-modtime): If `time-list' is not
+ nil, don't apply the whole body. If the file doesn't exists, set
+ modtime to '(-1 65535). Suggested by Luc Teirlinck
+ <teirllm@auburn.edu>.
+
2004-08-09 Luc Teirlinck <teirllm@auburn.edu>
* help.el (describe-bindings): Doc fix.
(defun tramp-handle-file-truename (filename &optional counter prev-dirs)
"Like `file-truename' for tramp files."
- (with-parsed-tramp-file-name filename nil
+ (with-parsed-tramp-file-name (expand-file-name filename) nil
(let* ((steps (tramp-split-string localname "/"))
(localnamedir (tramp-let-maybe directory-sep-char ?/ ;for XEmacs
(file-name-as-directory localname)))
(unless (buffer-file-name)
(error "Can't set-visited-file-modtime: buffer `%s' not visiting a file"
(buffer-name)))
- (when time-list
- (tramp-run-real-handler 'set-visited-file-modtime (list time-list)))
- (let ((f (buffer-file-name))
- (coding-system-used nil))
- (with-parsed-tramp-file-name f nil
- (let* ((attr (file-attributes f))
- (modtime (nth 5 attr)))
- ;; We use '(0 0) as a don't-know value. See also
- ;; `tramp-handle-file-attributes-with-ls'.
- (when (boundp 'last-coding-system-used)
- (setq coding-system-used last-coding-system-used))
- (if (not (equal modtime '(0 0)))
- (tramp-run-real-handler 'set-visited-file-modtime (list modtime))
- (save-excursion
- (tramp-send-command
- multi-method method user host
- (format "%s -ild %s"
- (tramp-get-ls-command multi-method method user host)
- (tramp-shell-quote-argument localname)))
- (tramp-wait-for-output)
- (setq attr (buffer-substring (point)
- (progn (end-of-line) (point)))))
- (setq tramp-buffer-file-attributes attr))
- (when (boundp 'last-coding-system-used)
- (setq last-coding-system-used coding-system-used))
- nil))))
+ (if time-list
+ (tramp-run-real-handler 'set-visited-file-modtime (list time-list))
+ (let ((f (buffer-file-name))
+ (coding-system-used nil))
+ (with-parsed-tramp-file-name f nil
+ (let* ((attr (file-attributes f))
+ ;; '(-1 65535) means file doesn't exists yet.
+ (modtime (or (nth 5 attr) '(-1 65535))))
+ ;; We use '(0 0) as a don't-know value. See also
+ ;; `tramp-handle-file-attributes-with-ls'.
+ (when (boundp 'last-coding-system-used)
+ (setq coding-system-used last-coding-system-used))
+ (if (not (equal modtime '(0 0)))
+ (tramp-run-real-handler 'set-visited-file-modtime (list modtime))
+ (save-excursion
+ (tramp-send-command
+ multi-method method user host
+ (format "%s -ild %s"
+ (tramp-get-ls-command multi-method method user host)
+ (tramp-shell-quote-argument localname)))
+ (tramp-wait-for-output)
+ (setq attr (buffer-substring (point)
+ (progn (end-of-line) (point)))))
+ (setq tramp-buffer-file-attributes attr))
+ (when (boundp 'last-coding-system-used)
+ (setq last-coding-system-used coding-system-used))
+ nil)))))
;; CCC continue here
(unless (equal curbuf (current-buffer))
(error "Buffer has changed from `%s' to `%s'"
curbuf (current-buffer)))
- (when (eq visit t)
- (set-visited-file-modtime))
+ (when (or (eq visit t) (stringp visit))
+ (set-visited-file-modtime
+ ;; We must pass modtime explicitely, because filename can be different
+ ;; from (buffer-file-name), f.e. if `file-precious-flag' is set.
+ (nth 5 (file-attributes filename))))
;; Make `last-coding-system-used' have the right value.
(when (boundp 'last-coding-system-used)
(setq last-coding-system-used coding-system-used))
multi-method method user host
(concat "tramp_file_attributes () {\n"
tramp-remote-perl
- " -e '" tramp-perl-file-attributes "' $1 $2 2>/dev/null\n"
+ " -e '" tramp-perl-file-attributes "'"
+ " \"$1\" \"$2\" 2>/dev/null\n"
"}"))
(tramp-wait-for-output)
(unless (tramp-method-out-of-band-p multi-method method user host)