]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp.el (tramp-find-executable): Use
authorMichael Albinus <albinus@detlef>
Sat, 13 Mar 2010 19:11:01 +0000 (20:11 +0100)
committerMichael Albinus <albinus@detlef>
Sat, 13 Mar 2010 19:11:01 +0000 (20:11 +0100)
`tramp-get-connection-buffer'.  Make the regexp for checking
output of "wc -l" more robust.
(tramp-find-shell): Use another shell but /bin/sh on OpenSolaris.
(tramp-open-connection-setup-interactive-shell): Remove workaround
for OpenSolaris bug, it is not needed anymore.

lisp/ChangeLog
lisp/net/tramp.el

index 1422de1cf51fed86aec1fa404b6cec94537e34a2..39d88698acdec4efe1e4773c0b159a89c945d94e 100644 (file)
@@ -1,3 +1,12 @@
+2010-03-13  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-find-executable): Use
+       `tramp-get-connection-buffer'.  Make the regexp for checking
+       output of "wc -l" more robust.
+       (tramp-find-shell): Use another shell but /bin/sh on OpenSolaris.
+       (tramp-open-connection-setup-interactive-shell): Remove workaround
+       for OpenSolaris bug, it is not needed anymore.
+
 2010-03-13  Eric M. Ludlam  <zappo@gnu.org>
 
        * cedet/semantic/imenu.el: New file, from the CEDET repository
index c029f073724162f713bada160d8311a54d276303..a0fe20c2a99cd513c82385c79cd46bf8408c57bf 100644 (file)
@@ -6294,7 +6294,7 @@ only in DIRLIST.
 Returns the absolute file name of PROGNAME, if found, and nil otherwise.
 
 This function expects to be in the right *tramp* buffer."
-  (with-current-buffer (tramp-get-buffer vec)
+  (with-current-buffer (tramp-get-connection-buffer vec)
     (let (result)
       ;; Check whether the executable is in $PATH. "which(1)" does not
       ;; report always a correct error code; therefore we check the
@@ -6302,7 +6302,7 @@ This function expects to be in the right *tramp* buffer."
       (unless ignore-path
        (tramp-send-command vec (format "which \\%s | wc -w" progname))
        (goto-char (point-min))
-       (if (looking-at "^1$")
+       (if (looking-at "^\\s-*1$")
            (setq result (concat "\\" progname))))
       (unless result
        (when ignore-tilde
@@ -6403,12 +6403,15 @@ file exists and nonzero exit status otherwise."
       (with-current-buffer (tramp-get-buffer vec)
        (tramp-send-command vec "echo ~root" t)
        (cond
-        ((string-match "^~root$" (buffer-string))
+        ((or (string-match "^~root$" (buffer-string))
+             ;; The default shell (ksh93) of OpenSolaris is buggy.
+             (string-equal (tramp-get-connection-property vec "uname" "")
+                           "SunOS 5.11"))
          (setq shell
                (or (tramp-find-executable
-                    vec "bash" (tramp-get-remote-path vec) t)
+                    vec "bash" (tramp-get-remote-path vec) t t)
                    (tramp-find-executable
-                    vec "ksh" (tramp-get-remote-path vec) t)))
+                    vec "ksh" (tramp-get-remote-path vec) t t)))
          (unless shell
            (tramp-error
             vec 'file-error
@@ -6837,9 +6840,11 @@ process to set up.  VEC specifies the connection."
   ;; "test foo; echo $?" to check if various conditions hold, and
   ;; there are buggy /bin/sh implementations which don't execute the
   ;; "echo $?"  part if the "test" part has an error.  In particular,
-  ;; the Solaris /bin/sh is a problem.  I'm betting that all systems
-  ;; with buggy /bin/sh implementations will have a working bash or
-  ;; ksh.  Whee...
+  ;; the OpenSolaris /bin/sh is a problem.  There are also other
+  ;; problems with /bin/sh of OpenSolaris, like redirection of stderr
+  ;; in in function declarations, or changing HISTFILE in place.
+  ;; Therefore, OpenSolaris' /bin/sh is replaced by bash, when
+  ;; detected.
   (tramp-find-shell vec)
 
   ;; Disable unexpected output.
@@ -6848,12 +6853,6 @@ process to set up.  VEC specifies the connection."
   ;; Set the environment.
   (tramp-message vec 5 "Setting default environment")
 
-  ;; On OpenSolaris, there is a bug when HISTFILE is changed in place
-  ;; <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" t))
-
   (let ((env (copy-sequence tramp-remote-process-environment))
        unset item)
     (while env