]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp-sh.el (tramp-do-file-attributes-with-stat): Do not use
authorMichael Albinus <michael.albinus@gmx.de>
Thu, 21 Oct 2010 08:05:23 +0000 (10:05 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Thu, 21 Oct 2010 08:05:23 +0000 (10:05 +0200)
space in stat format string.
(tramp-send-command): Unset $PS1 when using here documents, in
order not to get several prompts.
(tramp-get-inline-coding): Return `nil' in case of errors.

lisp/ChangeLog
lisp/net/tramp-sh.el

index 5d7457dd010aedd342a96be245eacdeded419325..d63649c6f64456380f72c0758ebf897ef391599a 100644 (file)
@@ -1,3 +1,11 @@
+010-10-21  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-sh.el (tramp-do-file-attributes-with-stat): Do not use
+       space in stat format string.
+       (tramp-send-command): Unset $PS1 when using here documents, in
+       order not to get several prompts.
+       (tramp-get-inline-coding): Return `nil' in case of errors.
+
 2010-10-21  Daiki Ueno  <ueno@unixuser.org>
 
        * hexl.el (hexl-mode, hexl-mode-exit): Tweak
index 1f13f50a240cf009c49d79185b174e7fb18ed229..1c25e33d756b1042d835f03ab4e374a3762eccac 100644 (file)
@@ -67,7 +67,7 @@ files conditionalize this setup based on the TERM environment variable."
   :group 'tramp
   :type 'string)
 
-;; ksh on OpenBSD 4.5 requires, that PS1 contains a `#' character for
+;; ksh on OpenBSD 4.5 requires, that $PS1 contains a `#' character for
 ;; root users.  It uses the `$' character for other users.  In order
 ;; to guarantee a proper prompt, we use "#$" for the prompt.
 
@@ -1241,7 +1241,7 @@ target of the symlink differ."
    (format
     ;; On Opsware, pdksh (which is the true name of ksh there) doesn't
     ;; parse correctly the sequence "((".  Therefore, we add a space.
-    "( (%s %s || %s -h %s) && %s -c '( (\"%%N\") %%h %s %s %%Xe0 %%Ye0 %%Ze0 %%se0 \"%%A\" t %%ie0 -1)' %s || echo nil)"
+    "( (%s %s || %s -h %s) && %s -c '((\"%%N\") %%h %s %s %%Xe0 %%Ye0 %%Ze0 %%se0 \"%%A\" t %%ie0 -1)' %s || echo nil)"
     (tramp-get-file-exists-command vec)
     (tramp-shell-quote-argument localname)
     (tramp-get-test-command vec)
@@ -4359,6 +4359,11 @@ function waits for output unless NOOUTPUT is set."
       ;; We mark the command string that it can be erased in the output buffer.
       (tramp-set-connection-property p "check-remote-echo" t)
       (setq command (format "%s%s%s" tramp-echo-mark command tramp-echo-mark)))
+    (when (string-match "<<'EOF'" command)
+      ;; Unset $PS1 when using here documents, in order not to get
+      ;; several prompts.
+      (setq command (concat "(PS1= ; " command "\n)")))
+    ;; Send the command.
     (tramp-message vec 6 "%s" command)
     (tramp-send-string vec command)
     (unless nooutput (tramp-wait-for-output p))))
@@ -4897,54 +4902,57 @@ If no corresponding command is found, nil is returned.
 Otherwise, either a string is returned which contains a `%s' mark
 to be used for the respective input or output file; or a Lisp
 function cell is returned to be applied on a buffer."
-  (let ((coding
-        (with-connection-property vec prop
-          (tramp-find-inline-encoding vec)
-          (tramp-get-connection-property vec prop nil)))
-       (prop1 (if (string-match "encoding" prop)
-                  "inline-compress" "inline-decompress"))
-       compress)
-    ;; The connection property might have been cached.  So we must send
-    ;; the script to the remote side - maybe.
-    (when (and coding (symbolp coding) (string-match "remote" prop))
-      (let ((name (symbol-name coding)))
-       (while (string-match (regexp-quote "-") name)
-         (setq name (replace-match "_" nil t name)))
-       (tramp-maybe-send-script vec (symbol-value coding) name)
-       (setq coding name)))
-    (when coding
-      ;; Check for the `compress' command.
-      (setq compress (tramp-get-inline-compress vec prop1 size))
-      ;; Return the value.
-      (cond
-       ((and compress (symbolp coding))
-       (if (string-match "decompress" prop1)
+  ;; We must catch the errors, because we want to return `nil', when
+  ;; no inline coding is found.
+  (ignore-errors
+    (let ((coding
+          (with-connection-property vec prop
+            (tramp-find-inline-encoding vec)
+            (tramp-get-connection-property vec prop nil)))
+         (prop1 (if (string-match "encoding" prop)
+                    "inline-compress" "inline-decompress"))
+         compress)
+      ;; The connection property might have been cached.  So we must
+      ;; send the script to the remote side - maybe.
+      (when (and coding (symbolp coding) (string-match "remote" prop))
+       (let ((name (symbol-name coding)))
+         (while (string-match (regexp-quote "-") name)
+           (setq name (replace-match "_" nil t name)))
+         (tramp-maybe-send-script vec (symbol-value coding) name)
+         (setq coding name)))
+      (when coding
+       ;; Check for the `compress' command.
+       (setq compress (tramp-get-inline-compress vec prop1 size))
+       ;; Return the value.
+       (cond
+        ((and compress (symbolp coding))
+         (if (string-match "decompress" prop1)
+             `(lambda (beg end)
+                (,coding beg end)
+                (let ((coding-system-for-write 'binary)
+                      (coding-system-for-read 'binary))
+                  (apply
+                   'call-process-region (point-min) (point-max)
+                   (car (split-string ,compress)) t t nil
+                   (cdr (split-string ,compress)))))
            `(lambda (beg end)
-              (,coding beg end)
               (let ((coding-system-for-write 'binary)
                     (coding-system-for-read 'binary))
                 (apply
-                 'call-process-region (point-min) (point-max)
+                 'call-process-region beg end
                  (car (split-string ,compress)) t t nil
-                 (cdr (split-string ,compress)))))
-         `(lambda (beg end)
-            (let ((coding-system-for-write 'binary)
-                  (coding-system-for-read 'binary))
-              (apply
-               'call-process-region beg end
-               (car (split-string ,compress)) t t nil
-               (cdr (split-string ,compress))))
-            (,coding (point-min) (point-max)))))
-       ((symbolp coding)
-       coding)
-       ((and compress (string-match "decoding" prop))
-       (format "(%s | %s >%%s)" coding compress))
-       (compress
-       (format "(%s <%%s | %s)" compress coding))
-       ((string-match "decoding" prop)
-       (format "%s >%%s" coding))
-       (t
-       (format "%s <%%s" coding))))))
+                 (cdr (split-string ,compress))))
+              (,coding (point-min) (point-max)))))
+        ((symbolp coding)
+         coding)
+        ((and compress (string-match "decoding" prop))
+         (format "(%s | %s >%%s)" coding compress))
+        (compress
+         (format "(%s <%%s | %s)" compress coding))
+        ((string-match "decoding" prop)
+         (format "%s >%%s" coding))
+        (t
+         (format "%s <%%s" coding)))))))
 
 ;;; Integration of eshell.el: