]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp.el (tramp-wait-for-output): Handle the case when
authorMichael Albinus <michael.albinus@gmx.de>
Thu, 16 Jul 2009 10:24:07 +0000 (10:24 +0000)
committerMichael Albinus <michael.albinus@gmx.de>
Thu, 16 Jul 2009 10:24:07 +0000 (10:24 +0000)
commands do not return a newline but a null byte before the shell
prompt.  (Bug#3858)

lisp/ChangeLog
lisp/net/tramp.el

index 785daed8197a1d4e038d7fadb9bef6987e94690b..a3591f99e499e7c8cb66cb2e2998fef2a1788dd1 100644 (file)
@@ -1,3 +1,9 @@
+2009-07-16  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-wait-for-output): Handle the case when
+       commands do not return a newline but a null byte before the shell
+       prompt.  (Bug#3858)
+
 2009-07-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * term/ns-win.el (ns-set-alpha): Don't declare.
index 444f55ac5d24adaa1c62fb1c1cf0ad6e1c947e36..6de2346b766c31da56868fc9ff6f30b88e35e744 100644 (file)
@@ -3898,15 +3898,15 @@ beginning of local filename are not substituted."
 
       ;; Determine output.
       (cond
-       ;; Just a buffer
+       ;; Just a buffer.
        ((bufferp destination)
        (setq outbuf destination))
-       ;; A buffer name
+       ;; A buffer name.
        ((stringp destination)
        (setq outbuf (get-buffer-create destination)))
        ;; (REAL-DESTINATION ERROR-DESTINATION)
        ((consp destination)
-       ;; output
+       ;; output.
        (cond
         ((bufferp (car destination))
          (setq outbuf (car destination)))
@@ -3914,7 +3914,7 @@ beginning of local filename are not substituted."
          (setq outbuf (get-buffer-create (car destination))))
         ((car destination)
          (setq outbuf (current-buffer))))
-       ;; stderr
+       ;; stderr.
        (cond
         ((stringp (cadr destination))
          (setcar (cdr destination) (expand-file-name (cadr destination)))
@@ -3927,7 +3927,7 @@ beginning of local filename are not substituted."
            (setq stderr (tramp-make-tramp-temp-file v)
                  tmpstderr (tramp-make-tramp-file-name
                             method user host stderr))))
-        ;; stderr to be discarded
+        ;; stderr to be discarded.
         ((null (cadr destination))
          (setq stderr "/dev/null"))))
        ;; 't
@@ -6660,10 +6660,14 @@ function waits for output unless NOOUTPUT is set."
 (defun tramp-wait-for-output (proc &optional timeout)
   "Wait for output from remote rsh command."
   (with-current-buffer (process-buffer proc)
-    ;; Initially, `tramp-end-of-output' is "$ ".  There might be
-    ;; leading escape sequences, which must be ignored.
-    (let* ((regexp (format "^[^$\n]*%s\r?$" (regexp-quote tramp-end-of-output)))
-          (found (tramp-wait-for-regexp proc timeout regexp)))
+    (let* (;; Initially, `tramp-end-of-output' is "$ ".  There might
+          ;; be leading escape sequences, which must be ignored.
+          (regexp (format "[^$\n]*%s\r?$" (regexp-quote tramp-end-of-output)))
+          ;; Sometimes, the commands do not return a newline but a
+          ;; null byte before the shell prompt, for example "git
+          ;; ls-files -c -z ...".
+          (regexp1 (format "\\(^\\|\000\\)%s" regexp))
+          (found (tramp-wait-for-regexp proc timeout regexp1)))
       (if found
          (let (buffer-read-only)
            (goto-char (point-max))