]> code.delx.au - gnu-emacs/commitdiff
Version 2.0.21 released.
authorKai Großjohann <kgrossjo@eu.uu.net>
Sun, 22 Sep 2002 13:55:14 +0000 (13:55 +0000)
committerKai Großjohann <kgrossjo@eu.uu.net>
Sun, 22 Sep 2002 13:55:14 +0000 (13:55 +0000)
(tramp-handle-file-newer-than-file-p): If mtime of both files is
known, return a useful result.  Better error message in case one
is a Tramp file and one isn't.
(tramp-handle-file-local-copy, tramp-handle-write-region)
(tramp-find-shell, tramp-open-connection-telnet)
(tramp-open-connection-rsh, tramp-open-connection-su)
(tramp-open-connection-setup-interactive-shell)
(tramp-post-connection, tramp-maybe-open-connection)
(tramp-method-out-of-band-p): Correct number of args for
`tramp-get-rsh-program' and similar functions.

lisp/ChangeLog
lisp/net/tramp.el
man/tramp.texi

index 3c1bb32bded5d8d920e4357fb79088fa844314b1..9ee6f601adc4f064131455631c51bec6ef81acde 100644 (file)
@@ -1,6 +1,20 @@
+2002-09-22  Kai Gro\e,b_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * net/tramp.el: Version 2.0.21 released.
+       (tramp-handle-file-newer-than-file-p): If mtime of both files is
+       known, return a useful result.  Better error message in case one
+       is a Tramp file and one isn't.
+       (tramp-handle-file-local-copy, tramp-handle-write-region)
+       (tramp-find-shell, tramp-open-connection-telnet)
+       (tramp-open-connection-rsh, tramp-open-connection-su)
+       (tramp-open-connection-setup-interactive-shell)
+       (tramp-post-connection, tramp-maybe-open-connection)
+       (tramp-method-out-of-band-p): Correct number of args for
+       `tramp-get-rsh-program' and similar functions.
+
 2002-09-22  Kai Gro\e,b_\e(Bjohann  <grossjoh@ls6.informatik.uni-dortmund.de>
 
-       Version 2.0.20 released.
+       * net/tramp.el: Version 2.0.20 released.
 
 2002-09-20  Kai Gro\e,b_\e(Bjohann  <grossjoh@ls6.informatik.uni-dortmund.de>
 
index 259a52f583b2c40210c664a7f25e3bd72e16e87b..58ec71b312d8a1728a28d097f5a3bf80e2dbe30e 100644 (file)
@@ -72,7 +72,7 @@
 ;; In the Tramp CVS repository, the version numer is auto-frobbed from
 ;; the Makefile, so you should edit the top-level Makefile to change
 ;; the version number.
-(defconst tramp-version "2.0.20"
+(defconst tramp-version "2.0.21"
   "This version of tramp.")
 
 (defconst tramp-bug-report-address "tramp-devel@mail.freesoftware.fsf.org"
@@ -2173,33 +2173,54 @@ if the remote host can't provide the modtime."
          nil)
         ((not (file-exists-p file2))
          t)
-        ;; We are sure both files exist at this point.  We assume that
-       ;; both files are Tramp files, otherwise we issue an error
-       ;; message.  Todo: make a better error message.
+        ;; We are sure both files exist at this point.
         (t
          (save-excursion
-          (with-parsed-tramp-file-name file1 v1
-            (with-parsed-tramp-file-name file2 v2
-              (when (and (tramp-ange-ftp-file-name-p v1-multi-method v1-method)
-                         (tramp-ange-ftp-file-name-p v2-multi-method v2-method))
-                (tramp-invoke-ange-ftp 'file-newer-than-file-p
-                                       file1 file2))
-              (unless (and (equal v1-multi-method v2-multi-method)
-                           (equal v1-method v2-method)
-                           (equal v1-user v2-user)
-                           (equal v1-host v2-host))
-                (signal 'file-error
-                        (list "Files must have same method, user, host"
-                              file1 file2)))
+          ;; We try to get the mtime of both files.  If they are not
+          ;; equal to the "dont-know" value, then we subtract the times
+          ;; and obtain the result.
+          (let ((fa1 (file-attributes file1))
+                (fa2 (file-attributes file2)))
+            (if (and (not (equal (nth 5 fa1) '(0 0)))
+                     (not (equal (nth 5 fa2) '(0 0))))
+                (> 0 (car (subtract-time (nth 5 fa1) (nth 5 fa2))))
+              ;; If one of them is the dont-know value, then we can
+              ;; still try to run a shell command on the remote host.
+              ;; However, this only works if both files are Tramp
+              ;; files and both have the same method, same user, same
+              ;; host.
               (unless (and (tramp-tramp-file-p file1)
                            (tramp-tramp-file-p file2))
-                (signal 'file-error
-                        (list "Files must be tramp files on same host"
-                              file1 file2)))
-              (if (tramp-get-test-groks-nt
-                   v1-multi-method v1-method v1-user v1-host)
-                  (zerop (tramp-run-test2 "test" file1 file2 "-nt"))
-                (zerop (tramp-run-test2 "tramp_test_nt" file1 file2)))))))))
+                (signal
+                 'file-error
+                 (list
+                  "Cannot check if Tramp file is newer than non-Tramp file"
+                  file1 file2)))
+              (with-parsed-tramp-file-name file1 v1
+                (with-parsed-tramp-file-name file2 v2
+                  (when (and (tramp-ange-ftp-file-name-p
+                              v1-multi-method v1-method)
+                             (tramp-ange-ftp-file-name-p
+                              v2-multi-method v2-method))
+                    (tramp-invoke-ange-ftp 'file-newer-than-file-p
+                                           file1 file2))
+                  (unless (and (equal v1-multi-method v2-multi-method)
+                               (equal v1-method v2-method)
+                               (equal v1-user v2-user)
+                               (equal v1-host v2-host))
+                    (signal 'file-error
+                            (list "Files must have same method, user, host"
+                                  file1 file2)))
+                  (unless (and (tramp-tramp-file-p file1)
+                               (tramp-tramp-file-p file2))
+                    (signal 'file-error
+                            (list "Files must be tramp files on same host"
+                                  file1 file2)))
+                  (if (tramp-get-test-groks-nt
+                       v1-multi-method v1-method v1-user v1-host)
+                      (zerop (tramp-run-test2 "test" file1 file2 "-nt"))
+                    (zerop (tramp-run-test2
+                            "tramp_test_nt" file1 file2)))))))))))
 
 ;; Functions implemented using the basic functions above.
 
@@ -2952,10 +2973,12 @@ This will break if COMMAND prints a newline, followed by the value of
     (let ((trampbuf (get-buffer-create "*tramp output*"))
          (rcp-program (tramp-get-rcp-program
                        multi-method
-                       (tramp-find-method multi-method method user host)))
+                       (tramp-find-method multi-method method user host)
+                       user host))
          (rcp-args (tramp-get-rcp-args
                     multi-method
-                    (tramp-find-method multi-method method user host)))
+                    (tramp-find-method multi-method method user host)
+                    user host))
          tmpfil)
       (unless (file-exists-p filename)
        (error "Cannot make local copy of non-existing file `%s'"
@@ -3122,10 +3145,12 @@ This will break if COMMAND prints a newline, followed by the value of
                             start end filename append visit))
     (let ((curbuf (current-buffer))
          (rcp-program (tramp-get-rcp-program
-                       multi-method (tramp-find-method multi-method method user host)))
+                       multi-method (tramp-find-method multi-method method user host)
+                       user host))
          (rcp-args (tramp-get-rcp-args
                     multi-method
-                    (tramp-find-method multi-method method user host)))
+                    (tramp-find-method multi-method method user host)
+                    user host))
          (rem-enc (tramp-get-remote-encoding multi-method method user host))
          (rem-dec (tramp-get-remote-decoding multi-method method user host))
          (loc-enc (tramp-get-local-encoding multi-method method user host))
@@ -4227,7 +4252,7 @@ file exists and nonzero exit status otherwise."
        9 "Setting remote shell prompt...done")
       )
      (t (tramp-message 5 "Remote `%s' groks tilde expansion, good"
-                      (tramp-get-remote-sh multi-method method))))))
+                      (tramp-get-remote-sh multi-method method user host))))))
 
 (defun tramp-check-ls-command (multi-method method user host cmd)
   "Checks whether the given `ls' executable groks `-n'.
@@ -4481,11 +4506,13 @@ Maybe the different regular expressions need to be tuned.
                        (tramp-get-buffer multi-method method user host)
                       (tramp-get-telnet-program
                        multi-method
-                       (tramp-find-method multi-method method user host))
+                       (tramp-find-method multi-method method user host)
+                       user host)
                        host
                       (tramp-get-telnet-args
                        multi-method
-                       (tramp-find-method multi-method method user host))))
+                       (tramp-find-method multi-method method user host)
+                       user host)))
              (found nil)
              (pw nil))
         (process-kill-without-query p)
@@ -4536,10 +4563,12 @@ arguments, and xx will be used as the host name to connect to.
          (buf (tramp-get-buffer multi-method method user host))
          (rsh-program (tramp-get-rsh-program
                        multi-method
-                       (tramp-find-method multi-method method user host)))
+                       (tramp-find-method multi-method method user host)
+                       user host))
          (rsh-args (tramp-get-rsh-args
                     multi-method
-                    (tramp-find-method multi-method method user host))))
+                    (tramp-find-method multi-method method user host)
+                    user host)))
       ;; The following should be changed.  We need a more general
       ;; mechanism to parse extra host args.
       (when (string-match "\\([^#]*\\)#\\(.*\\)" host)
@@ -4609,13 +4638,15 @@ prompt than you do, so it is not at all unlikely that the variable
                        (tramp-get-buffer multi-method method user host)
                       (tramp-get-su-program
                        multi-method
-                       (tramp-find-method multi-method method user host))
+                       (tramp-find-method multi-method method user host)
+                       user host)
                        (mapcar
                         '(lambda (x)
                            (format-spec x `((?u . ,(or user "root")))))
                         (tramp-get-su-args
                         multi-method
-                        (tramp-find-method multi-method method user host)))))
+                        (tramp-find-method multi-method method user host)
+                        user host))))
              (found nil)
              (pw nil))
         (process-kill-without-query p)
@@ -4857,7 +4888,8 @@ to set up.  METHOD, USER and HOST specify the connection."
   ;; Pittman reports that the unusual positioning of the single quotes
   ;; makes it work under `rc', too.
   (process-send-string nil (format "exec env 'PS1=$ ' %s%s"
-                                   (tramp-get-remote-sh multi-method method)
+                                   (tramp-get-remote-sh
+                                   multi-method method user host)
                                    tramp-rsh-end-of-line))
   (when tramp-debug-buffer
     (save-excursion
@@ -4865,15 +4897,16 @@ to set up.  METHOD, USER and HOST specify the connection."
       (goto-char (point-max))
       (tramp-insert-with-face
        'bold (format "$ exec env PS1='$ ' %s\n"
-                    (tramp-get-remote-sh multi-method method)))))
+                    (tramp-get-remote-sh multi-method method user host)))))
   (tramp-message 9 "Waiting 30s for remote `%s' to come up..."
-               (tramp-get-remote-sh multi-method method))
+               (tramp-get-remote-sh multi-method method user host))
   (unless (tramp-wait-for-regexp
           p 30 (format "\\(%s\\|%s\\)\\'"
                        shell-prompt-pattern tramp-shell-prompt-pattern))
     (pop-to-buffer (buffer-name))
     (error "Remote `%s' didn't come up.  See buffer `%s' for details"
-           (tramp-get-remote-sh multi-method method) (buffer-name)))
+           (tramp-get-remote-sh multi-method method user host)
+          (buffer-name)))
   (tramp-message 9 "Setting up remote shell environment")
   (tramp-discard-garbage-erase-buffer p multi-method method user host)
   (process-send-string
@@ -5099,7 +5132,8 @@ locale to C and sets up the remote shell search path."
        (tramp-wait-for-output)
        (unless (tramp-get-rcp-program
                 multi-method
-                (tramp-find-method multi-method method user host))
+                (tramp-find-method multi-method method user host)
+                user host)
          (tramp-message 5 "Sending the Perl `mime-encode' implementations.")
          (tramp-send-linewise
           multi-method method user host
@@ -5140,7 +5174,8 @@ locale to C and sets up the remote shell search path."
   ;; Find the right encoding/decoding commands to use.
   (unless (tramp-get-rcp-program
           multi-method
-          (tramp-find-method multi-method method user host))
+          (tramp-find-method multi-method method user host)
+          user host)
     (tramp-find-inline-encoding multi-method method user host))
   ;; If encoding/decoding command are given, test to see if they work.
   ;; CCC: Maybe it would be useful to run the encoder both locally and
@@ -5345,7 +5380,8 @@ connection if a previous connection has died for some reason."
         (delete-process p))
       (funcall (tramp-get-connection-function
                multi-method
-               (tramp-find-method multi-method method user host))
+               (tramp-find-method multi-method method user host)
+               user host)
                multi-method method user host))))
 
 (defun tramp-send-command
@@ -5835,7 +5871,8 @@ It is important to check for this condition, since it is not possible
 to enter a password for the `tramp-rcp-program'."
   (tramp-get-rcp-program
    multi-method
-   (tramp-find-method multi-method method user host)))
+   (tramp-find-method multi-method method user host)
+   user host))
 
 ;; Variables local to connection.
 
index 66b16b23fd728f8c1cade6fcca9b424e2ed15f24..c5b8e9ca7b462663e90f842435c93da0ab743139 100644 (file)
@@ -12,7 +12,7 @@
 @c Makefile, so you should edit the top-level Makefile to change
 @c the version number.
 @macro trampver{}
-2.0.20
+2.0.21
 @end macro
 
 @c Entries for @command{install-info} to use