[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 7960951 3/3: Some fixes in tramp-smb.el
From: |
Michael Albinus |
Subject: |
[Emacs-diffs] master 7960951 3/3: Some fixes in tramp-smb.el |
Date: |
Thu, 24 Jan 2019 11:40:20 -0500 (EST) |
branch: master
commit 7960951d5df714957bcfff82df77a94a6ee8960b
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>
Some fixes in tramp-smb.el
* lisp/net/tramp-smb.el (tramp-smb-errors):
Add "NT_STATUS_NOT_A_DIRECTORY".
(tramp-smb-maybe-open-connection): Respect ´non-essential'. Do
not record smbserver-version.
(tramp-smb-wait-for-output): Improve reading pending output.
---
lisp/net/tramp-smb.el | 45 ++++++++++++++++++++++++++++++---------------
1 file changed, 30 insertions(+), 15 deletions(-)
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index 08f2f30..7163afd 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -144,6 +144,7 @@ call, letting the SMB client use the default one."
"NT_STATUS_NO_LOGON_SERVERS"
"NT_STATUS_NO_SUCH_FILE"
"NT_STATUS_NO_SUCH_USER"
+ "NT_STATUS_NOT_A_DIRECTORY"
"NT_STATUS_OBJECT_NAME_COLLISION"
"NT_STATUS_OBJECT_NAME_INVALID"
"NT_STATUS_OBJECT_NAME_NOT_FOUND"
@@ -1913,6 +1914,14 @@ If ARGUMENT is non-nil, use it as argument for
share
(tramp-get-connection-property p "smb-share" ""))))
+ ;; During completion, don't reopen a new connection. We
+ ;; check this for the process related to
+ ;; `tramp-buffer-name'; otherwise `start-file-process'
+ ;; wouldn't run ever when `non-essential' is non-nil.
+ (when (and (tramp-completion-mode-p)
+ (null (get-process (tramp-buffer-name vec))))
+ (throw 'non-essential 'non-essential))
+
(save-match-data
;; There might be unread output from checking for share names.
(when buf (with-current-buffer buf (erase-buffer)))
@@ -1977,20 +1986,22 @@ If ARGUMENT is non-nil, use it as argument for
tramp-smb-actions-without-share))
;; Check server version.
- (unless argument
- (with-current-buffer (tramp-get-connection-buffer vec)
- (goto-char (point-min))
- (search-forward-regexp tramp-smb-server-version nil t)
- (let ((smbserver-version (match-string 0)))
- (unless
- (string-equal
- smbserver-version
- (tramp-get-connection-property
- vec "smbserver-version" smbserver-version))
- (tramp-flush-directory-properties vec "")
- (tramp-flush-connection-properties vec))
- (tramp-set-connection-property
- vec "smbserver-version" smbserver-version))))
+ ;; FIXME: With recent smbclient versions, this
+ ;; information isn't printed anymore.
+ ;; (unless argument
+ ;; (with-current-buffer (tramp-get-connection-buffer vec)
+ ;; (goto-char (point-min))
+ ;; (search-forward-regexp tramp-smb-server-version nil t)
+ ;; (let ((smbserver-version (match-string 0)))
+ ;; (unless
+ ;; (string-equal
+ ;; smbserver-version
+ ;; (tramp-get-connection-property
+ ;; vec "smbserver-version" smbserver-version))
+ ;; (tramp-flush-directory-properties vec "")
+ ;; (tramp-flush-connection-properties vec))
+ ;; (tramp-set-connection-property
+ ;; vec "smbserver-version" smbserver-version))))
;; Set chunksize to 1. smbclient reads its input
;; character by character; if we send the string
@@ -2032,7 +2043,11 @@ Removes smb prompt. Returns nil if an error message has
appeared."
(inhibit-read-only t))
;; Read pending output.
- (while (tramp-accept-process-output p 0.1))
+ (goto-char (point-min))
+ (while (not (or (re-search-forward tramp-smb-prompt nil t)
+ (re-search-forward tramp-smb-errors nil t)))
+ (while (tramp-accept-process-output p 0.1)
+ (goto-char (point-min))))
(tramp-message vec 6 "\n%s" (buffer-string))
;; Remove prompt.