summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Albinus <albinus@detlef>2010-01-28 07:06:41 +0100
committerMichael Albinus <albinus@detlef>2010-01-28 07:06:41 +0100
commitb0da618484ae04ac6a6e43bb4b2239850f8c6821 (patch)
treee0d9376712896d34df9bb5d91154574ee0e153e5
parent0c5d4306a8f3d5be4b998d37c0b996b49b51807c (diff)
downloademacs-b0da618484ae04ac6a6e43bb4b2239850f8c6821.tar.gz
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.
-rw-r--r--lisp/ChangeLog15
-rwxr-xr-x[-rw-r--r--]lisp/net/tramp.el48
2 files changed, 53 insertions, 10 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index eb3caeffcab..ef788eeffba 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,18 @@
+2010-01-28 Michael Albinus <michael.albinus@gmx.de>
+
+ 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 <rgm@gnu.org>
* vc-svn.el (vc-svn-update): Use "svn --non-interactive". (Bug#4280)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 3f4af0ebf0e..d411c69cb96 100644..100755
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1085,6 +1085,7 @@ The `sudo' program appears to insert a `^@' character into the prompt."
"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 @@ process to set up. VEC specifies the connection."
;; 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 @@ process to set up. VEC specifies the connection."
;; <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 @@ Goes through the list `tramp-local-coding-commands' and
;; 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 @@ function waits for output unless NOOUTPUT is set."
(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 @@ function waits for output unless NOOUTPUT is set."
(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 @@ necessary only. This function will be used in file name completion."
(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 @@ Only works for Bourne-like shells."
;; * 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 @@ Only works for Bourne-like shells."
;; * 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 @@ Only works for Bourne-like shells."
;; * 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