emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r99398: Fix some busybox annoyances.


From: Michael Albinus
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r99398: Fix some busybox annoyances.
Date: Thu, 28 Jan 2010 07:06:41 +0100
User-agent: Bazaar (2.0.2)

------------------------------------------------------------
revno: 99398
committer: Michael Albinus <address@hidden>
branch nick: trunk
timestamp: Thu 2010-01-28 07:06:41 +0100
message:
  Fix some busybox annoyances.
  
  * net/tramp.el (tramp-wrong-passwd-regexp): Add "Timeout, server
  not responding." string.
  (tramp-open-connection-setup-interactive-shell): Dump stty
  settings.  Enable "neveropen" arg for all `tramp-send-command'
  calls.  Handle "=" in variable values properly.
  (tramp-find-inline-encoding): Raise an error, when no encoding is
  found.
  (tramp-wait-for-output): Check, whether PROC buffer is available.
  Remove spurious " ^H" sequences, sent by busybox.
  (tramp-get-ls-command): Suppress coloring, if possible.
modified:
  lisp/ChangeLog
  lisp/net/tramp.el*
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2010-01-28 05:54:48 +0000
+++ b/lisp/ChangeLog    2010-01-28 06:06:41 +0000
@@ -1,3 +1,18 @@
+2010-01-28  Michael Albinus  <address@hidden>
+
+       Fix some busybox annoyances.
+
+       * net/tramp.el (tramp-wrong-passwd-regexp): Add "Timeout, server
+       not responding." string.
+       (tramp-open-connection-setup-interactive-shell): Dump stty
+       settings.  Enable "neveropen" arg for all `tramp-send-command'
+       calls.  Handle "=" in variable values properly.
+       (tramp-find-inline-encoding): Raise an error, when no encoding is
+       found.
+       (tramp-wait-for-output): Check, whether PROC buffer is available.
+       Remove spurious " ^H" sequences, sent by busybox.
+       (tramp-get-ls-command): Suppress coloring, if possible.
+
 2010-01-28  Glenn Morris  <address@hidden>
 
        * vc-svn.el (vc-svn-update): Use "svn --non-interactive".  (Bug#4280)

=== modified file 'lisp/net/tramp.el' (properties changed: -x to +x)
--- a/lisp/net/tramp.el 2010-01-18 04:39:40 +0000
+++ b/lisp/net/tramp.el 2010-01-28 06:06:41 +0000
@@ -1085,6 +1085,7 @@
                        "Login Incorrect"
                        "Connection refused"
                        "Connection closed"
+                       "Timeout, server not responding."
                        "Sorry, try again."
                        "Name or service not known"
                        "Host key verification failed."
@@ -6732,6 +6733,9 @@
        ;; because we're running on a non-MULE Emacs.  Let's try
        ;; stty, instead.
        (tramp-send-command vec "stty -onlcr" t))))
+  ;; Dump stty settings in the traces.
+  (when (>= tramp-verbose 10)
+    (tramp-send-command vec "stty -a" t))
   (tramp-send-command vec "set +o vi +o emacs" t)
 
   ;; Check whether the output of "uname -sr" has been changed.  If
@@ -6801,15 +6805,16 @@
   ;; <http://bugs.opensolaris.org/view_bug.do?bug_id=6834184>.  We
   ;; apply the workaround.
   (if (string-equal (tramp-get-connection-property vec "uname" "") "SunOS 
5.11")
-      (tramp-send-command vec "unset HISTFILE"))
+      (tramp-send-command vec "unset HISTFILE" t))
 
   (let ((env (copy-sequence tramp-remote-process-environment))
        unset item)
     (while env
       (setq item (tramp-compat-split-string (car env) "="))
-      (if (and (stringp (cadr item)) (not (string-equal (cadr item) "")))
+      (setcdr item (mapconcat 'identity (cdr item) "="))
+      (if (and (stringp (cdr item)) (not (string-equal (cdr item) "")))
          (tramp-send-command
-          vec (format "%s=%s; export %s" (car item) (cadr item) (car item)) t)
+          vec (format "%s=%s; export %s" (car item) (cdr item) (car item)) t)
        (push (car item) unset))
       (setq env (cdr env)))
     (when unset
@@ -6981,7 +6986,8 @@
 
       ;; Did we find something?
       (unless found
-       (tramp-message vec 2 "Couldn't find an inline transfer encoding"))
+       (tramp-error
+        vec 'file-error "Couldn't find an inline transfer encoding"))
 
       ;; Set connection properties.
       (tramp-message vec 5 "Using local encoding `%s'" loc-enc)
@@ -7301,7 +7307,10 @@
     (unless nooutput (tramp-wait-for-output p))))
 
 (defun tramp-wait-for-output (proc &optional timeout)
-  "Wait for output from remote rsh command."
+  "Wait for output from remote command."
+  (unless (buffer-live-p (process-buffer proc))
+    (delete-process proc)
+    (tramp-error proc 'file-error "Process `%s' not available, try again" 
proc))
   (with-current-buffer (process-buffer proc)
     (let* (;; Initially, `tramp-end-of-output' is "#$ ".  There might
           ;; be leading escape sequences, which must be ignored.
@@ -7313,6 +7322,14 @@
           (found (tramp-wait-for-regexp proc timeout regexp1)))
       (if found
          (let (buffer-read-only)
+           ;; A simple-minded busybox has sent " ^H" sequences.
+           ;; Delete them.
+           (goto-char (point-min))
+           (when (re-search-forward
+                  "^\\(.\b\\)+$" (tramp-compat-line-end-position) t)
+             (forward-line 1)
+             (delete-region (point-min) (point)))
+           ;; Delete the prompt.
            (goto-char (point-max))
            (re-search-backward regexp nil t)
            (delete-region (point) (point-max)))
@@ -8002,9 +8019,14 @@
         (let ((dl (tramp-get-remote-path vec))
               result)
           (while (and dl (setq result (tramp-find-executable vec cmd dl t t)))
-            ;; Check parameter.
+            ;; Check parameters.  On busybox, "ls" output coloring is
+            ;; enabled by default sometimes.  So we try to disable it
+            ;; when possible.  $LS_COLORING is not supported there.
             (when (zerop (tramp-send-command-and-check
                           vec (format "%s -lnd /" result)))
+              (when (zerop (tramp-send-command-and-check
+                            vec (format "%s --color=never /" result)))
+                (setq result (concat result " --color=never")))
               (throw 'ls-found result))
             (setq dl (cdr dl))))))
      (tramp-error vec 'file-error "Couldn't find a proper `ls' command"))))
@@ -8481,8 +8503,6 @@
 ;; * Don't use globbing for directories with many files, as this is
 ;;   likely to produce long command lines, and some shells choke on
 ;;   long command lines.
-;; * `vc-directory' does not work.  It never displays any files, even
-;;   if it does show files when run locally.
 ;; * How to deal with MULE in `insert-file-contents' and `write-region'?
 ;; * Test remote ksh or bash for tilde expansion in `tramp-find-shell'?
 ;; * abbreviate-file-name
@@ -8529,8 +8549,6 @@
 ;; * Reconnect directly to a compliant shell without first going
 ;;   through the user's default shell. (Pete Forman)
 ;; * Make `tramp-default-user' obsolete.
-;; * Tramp shall reconnect automatically to its ssh connection when it
-;;   detects that the process "has died". (David Reitter)
 ;; * How can I interrupt the remote process with a signal
 ;;   (interrupt-process seems not to work)? (Markus Triska)
 ;; * Avoid the local shell entirely for starting remote processes.  If
@@ -8552,6 +8570,16 @@
 ;; * Keep a second connection open for out-of-band methods like scp or
 ;;   rsync.
 ;; * Support ptys in `tramp-handle-start-file-process'.
+;; * IMHO, it's a drawback that currently Tramp doesn't support
+;;   Unicode in Dired file names by default.  Is it possible to
+;;   improve Tramp to set LC_ALL to "C" only for commands where Tramp
+;;   expects English?  Or just to set LC_MESSAGES to "C" if Tramp
+;;   expects only English messages? (Juri Linkov)
+;; * Make shadowfile.el grok Tramp filenames.  (Bug#4526, Bug#4846)
+;; * Do not handle files with drive letter as remote.  (Bug#5447)
+;; * Load Tramp subpackages only when needed.  (Bug#1529, Bug#5448)
+;; * Try telnet+curl as new method.  It might be useful for busybox,
+;;   without built-in uuencode/uudecode.
 
 ;; Functions for file-name-handler-alist:
 ;; diff-latest-backup-file -- in diff.el


reply via email to

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