+2011-04-25 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-process-actions): Add POS argument. Delete
+ region between POS and (pos).
+ (tramp-do-copy-or-rename-file-out-of-band): Use `nil' position in
+ `tramp-process-actions' call.
+ (tramp-maybe-open-connection): Call `tramp-process-actions' with pos.
+
+ * net/tramp-smb.el (tramp-smb-maybe-open-connection): Use `nil'
+ position in `tramp-process-actions' call.
+
2011-04-24 Daniel Colascione <dan.colascione@gmail.com>
* progmodes/cc-engine.el (c-forward-decl-or-cast-1): Use
;;; tramp-smb.el --- Tramp access functions for SMB servers
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010, 2011 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+;; 2011 Free Software Foundation, Inc.
;; Author: Michael Albinus <michael.albinus@gmx.de>
;; Keywords: comm, processes
;; Play login scenario.
(tramp-process-actions
- p vec
+ p vec nil
(if share
tramp-smb-actions-with-share
tramp-smb-actions-without-share))
(tramp-message
v 6 "%s" (mapconcat 'identity (process-command p) " "))
(tramp-set-process-query-on-exit-flag p nil)
- (tramp-process-actions p v tramp-actions-copy-out-of-band))))
+ (tramp-process-actions
+ p v nil tramp-actions-copy-out-of-band))))
;; Reset the transfer process properties.
(tramp-set-connection-property v "process-name" nil)
(setq found (funcall action proc vec)))))
found))
-(defun tramp-process-actions (proc vec actions &optional timeout)
- "Perform actions until success or TIMEOUT."
+(defun tramp-process-actions (proc vec pos actions &optional timeout)
+ "Perform ACTIONS until success or TIMEOUT.
+PROC and VEC indicate the remote connection to be used. POS, if
+set, is the starting point of the region to be deleted in the
+connection buffer."
;; Preserve message for `progress-reporter'.
(with-temp-message ""
;; Enable auth-source and password-cache.
(cond
((eq exit 'permission-denied) "Permission denied")
((eq exit 'process-died) "Process died")
- (t "Login failed"))))))))
+ (t "Login failed"))))
+ (when (numberp pos)
+ (with-current-buffer (tramp-get-connection-buffer vec)
+ (let (buffer-read-only) (delete-region pos (point)))))))))
;; Utility functions.
(catch 'uname-changed
(let ((p (tramp-get-connection-process vec))
(process-name (tramp-get-connection-property vec "process-name" nil))
- (process-environment (copy-sequence process-environment)))
+ (process-environment (copy-sequence process-environment))
+ (pos (with-current-buffer (tramp-get-connection-buffer vec) (point))))
;; If too much time has passed since last command was sent, look
;; whether process is still alive. If it isn't, kill it. When
;; Send the command.
(tramp-message vec 3 "Sending command `%s'" command)
(tramp-send-command vec command t t)
- (tramp-process-actions p vec tramp-actions-before-shell 60)
+ (tramp-process-actions p vec pos tramp-actions-before-shell 60)
(tramp-message
vec 3 "Found remote shell prompt on `%s'" l-host))
;; Next hop.