emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r111109: * net/tramp-sh.el (tramp-do-


From: Michael Albinus
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r111109: * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
Date: Wed, 05 Dec 2012 15:06:06 +0100
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111109
committer: Michael Albinus <address@hidden
branch nick: trunk
timestamp: Wed 2012-12-05 15:06:06 +0100
message:
  * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
  Check return code of copy command.
modified:
  lisp/ChangeLog
  lisp/net/tramp-sh.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-12-05 10:09:54 +0000
+++ b/lisp/ChangeLog    2012-12-05 14:06:06 +0000
@@ -1,5 +1,8 @@
 2012-12-05  Michael Albinus  <address@hidden>
 
+       * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
+       Check return code of copy command.
+
        * net/tramp-adb.el (tramp-adb-sdk-dir, tramp-adb-prompt): Use
        group `tramp'.  Add version.
 

=== modified file 'lisp/net/tramp-sh.el'
--- a/lisp/net/tramp-sh.el      2012-11-27 14:55:25 +0000
+++ b/lisp/net/tramp-sh.el      2012-12-05 14:06:06 +0000
@@ -2379,17 +2379,41 @@
                ;; last longer than 60 secs.
                (let ((p (let ((default-directory
                                 (tramp-compat-temporary-file-directory)))
-                          (apply 'start-process
+                          (apply 'start-process-shell-command
                                  (tramp-get-connection-name v)
                                  (tramp-get-connection-buffer v)
                                  copy-program
-                                 (append copy-args (list source target))))))
+                                 (append
+                                  copy-args
+                                  (list
+                                   (shell-quote-argument source)
+                                   (shell-quote-argument target))
+                                  (unless (memq system-type '(windows-nt))
+                                    '(";" "echo"
+                                      "tramp_exit_status" "$?")))))))
                  (tramp-message
                   orig-vec 6 "%s"
                   (mapconcat 'identity (process-command p) " "))
                  (tramp-compat-set-process-query-on-exit-flag p nil)
                  (tramp-process-actions
-                  p v nil tramp-actions-copy-out-of-band)))
+                  p v nil tramp-actions-copy-out-of-band)
+
+                 ;; Check the return code.  This does not work under
+                 ;; MS Windows.
+                 (unless (memq system-type '(windows-nt))
+                   (goto-char (point-max))
+                   (unless
+                       (re-search-backward "tramp_exit_status [0-9]+" nil t)
+                     (tramp-error
+                      orig-vec 'file-error
+                      "Couldn't find exit status of `%s'" (process-command p)))
+                   (skip-chars-forward "^ ")
+                   (unless (zerop (read (current-buffer)))
+                     (forward-line -1)
+                     (tramp-error
+                      orig-vec 'file-error
+                      "Error copying: `%s'"
+                      (buffer-substring (point-min) (point-at-eol)))))))
 
            ;; Reset the transfer process properties.
            (tramp-message orig-vec 6 "\n%s" (buffer-string))


reply via email to

[Prev in Thread] Current Thread [Next in Thread]