]> code.delx.au - gnu-emacs/commitdiff
* net/tramp.el (tramp-do-file-attributes-with-stat): Add space in
authorMichael Albinus <michael.albinus@gmx.de>
Mon, 10 May 2010 15:50:30 +0000 (17:50 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Mon, 10 May 2010 15:50:30 +0000 (17:50 +0200)
format string, in order to work around a bug in pdksh.  Reported
by Gilles Pion <gpion@lfdj.com>.
(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.

lisp/ChangeLog
lisp/net/tramp.el

index 26b56bd7b69137450b7b197c42445170612f45e8..8bc5a26df8f2f2f4dd2fbc5870d292a4cdb86cb0 100644 (file)
@@ -1,3 +1,12 @@
+2010-05-10  Michael Albinus  <michael.albinus@gmx.de>
+
+       * 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 <gpion@lfdj.com>.
+       (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  <lekktu@gmail.com>
 
        Fix use of `filter-buffer-substring' (rework previous change).
index 3a291cfb69596eab3291ef22f2e5315e30c3da74..2da11bda8347ce3e87dcbf7b9b3406ab94195f82 100644 (file)
@@ -2867,7 +2867,9 @@ target of the symlink differ."
   (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 @@ already know that the buffer is visiting a file and that
 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 @@ of."
         (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;" "")