# HG changeset patch # User Michael Albinus # Date 1273506630 -7200 # Node ID acaefbe071572dc5ddbded53b5bf37399fc78164 # Parent 97a4c6a11c710e970c47d842903872f900082ee8 * net/tramp.el (tramp-do-file-attributes-with-stat): Add space in format string, in order to work around a bug in pdksh. Reported by Gilles Pion . (tramp-handle-verify-visited-file-modtime): Do not send a command when the connection is not established. (tramp-handle-set-file-times): Simplify the check for utc. diff -r 97a4c6a11c71 -r acaefbe07157 lisp/ChangeLog --- a/lisp/ChangeLog Mon May 10 16:48:17 2010 +0200 +++ b/lisp/ChangeLog Mon May 10 17:50:30 2010 +0200 @@ -1,3 +1,12 @@ +2010-05-10 Michael Albinus + + * net/tramp.el (tramp-do-file-attributes-with-stat): Add space in + format string, in order to work around a bug in pdksh. Reported + by Gilles Pion . + (tramp-handle-verify-visited-file-modtime): Do not send a command + when the connection is not established. + (tramp-handle-set-file-times): Simplify the check for utc. + 2010-05-10 Juanma Barranquero Fix use of `filter-buffer-substring' (rework previous change). diff -r 97a4c6a11c71 -r acaefbe07157 lisp/net/tramp.el --- a/lisp/net/tramp.el Mon May 10 16:48:17 2010 +0200 +++ b/lisp/net/tramp.el Mon May 10 17:50:30 2010 +0200 @@ -2867,7 +2867,9 @@ (tramp-send-command-and-read vec (format - "((%s %s || %s -h %s) && %s -c '((\"%%N\") %%h %s %s %%X.0 %%Y.0 %%Z.0 %%s.0 \"%%A\" t %%i.0 -1)' %s || echo nil)" + ;; On Opsware, pdksh (which is the true name of ksh there) doesn't + ;; parse correctly the sequence "((". Therefore, we add a space. + "( (%s %s || %s -h %s) && %s -c '( (\"%%N\") %%h %s %s %%X.0 %%Y.0 %%Z.0 %%s.0 \"%%A\" t %%i.0 -1)' %s || echo nil)" (tramp-get-file-exists-command vec) (tramp-shell-quote-argument localname) (tramp-get-test-command vec) @@ -2920,12 +2922,14 @@ function directly, unless those two cases are already taken care of." (with-current-buffer buf - ;; There is no file visiting the buffer, or the buffer has no - ;; recorded last modification time. - (if (or (not (buffer-file-name)) - (eq (visited-file-modtime) 0)) - t - (let ((f (buffer-file-name))) + (let ((f (buffer-file-name))) + ;; There is no file visiting the buffer, or the buffer has no + ;; recorded last modification time, or there is no established + ;; connection. + (if (or (not f) + (eq (visited-file-modtime) 0) + (not (tramp-file-name-handler 'file-remote-p f nil 'connected))) + t (with-parsed-tramp-file-name f nil (tramp-flush-file-property v localname) (let* ((attr (file-attributes f)) @@ -2984,16 +2988,11 @@ (let ((time (if (or (null time) (equal time '(0 0))) (current-time) time)) - (utc - ;; With GNU Emacs, `format-time-string' has an - ;; optional parameter UNIVERSAL. This is preferred, - ;; because we could handle the case when the remote - ;; host is located in a different time zone as the - ;; local host. - (and (functionp 'subr-arity) - (subrp (symbol-function 'format-time-string)) - (= 3 (cdr (tramp-compat-funcall - 'subr-arity 'format-time-string)))))) + ;; With GNU Emacs, `format-time-string' has an optional + ;; parameter UNIVERSAL. This is preferred, because we + ;; could handle the case when the remote host is + ;; located in a different time zone as the local host. + (utc (not (featurep 'xemacs)))) (tramp-send-command-and-check v (format "%s touch -t %s %s" (if utc "TZ=UTC; export TZ;" "")