]> git.eshelyaron.com Git - emacs.git/commitdiff
Make check for compression programs more robust in Tramp
authorMichael Albinus <michael.albinus@gmx.de>
Sat, 13 Jul 2019 11:33:10 +0000 (13:33 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Sat, 13 Jul 2019 11:33:10 +0000 (13:33 +0200)
* lisp/net/tramp-sh.el (tramp-inline-compress-start-size):
Revert change of init value.  We fix this differently.
(tramp-find-inline-compress): Check also the output of the
processes, not only the return code.

lisp/net/tramp-sh.el

index 63c1bf48f511e5d5d0b65f248306cdb042b8b579..bebe2c2d334de587efd3f713654a8fa710379420 100644 (file)
 (defvar vc-hg-program)
 
 ;;;###tramp-autoload
-(defcustom tramp-inline-compress-start-size
-  (unless (memq system-type '(windows-nt)) 4096)
+(defcustom tramp-inline-compress-start-size 4096
   "The minimum size of compressing where inline transfer.
-When inline transfer, compress transferred data of file
-whose size is this value or above (up to `tramp-copy-size-limit').
+When inline transfer, compress transferred data of file whose
+size is this value or above (up to `tramp-copy-size-limit' for
+out-of-band methods).
 If it is nil, no compression at all will be applied."
   :group 'tramp
-  :version "26.3"
   :type '(choice (const nil) integer))
 
 ;;;###tramp-autoload
@@ -4557,30 +4556,38 @@ Goes through the list `tramp-inline-compress-commands'."
           vec 5
           "Checking local compress commands `%s', `%s' for sanity"
           compress decompress)
-         (unless
-             (zerop
-              (tramp-call-local-coding-command
-               (format
-                "echo %s | %s | %s" magic
-                ;; Windows shells need the program file name after
-                ;; the pipe symbol be quoted if they use forward
-                ;; slashes as directory separators.
-                (mapconcat
-                 #'tramp-unquote-shell-quote-argument
-                 (split-string compress) " ")
-                (mapconcat
-                 #'tramp-unquote-shell-quote-argument
-                 (split-string decompress) " "))
-               nil nil))
-           (throw 'next nil))
-         (tramp-message
+          (with-temp-buffer
+            (unless
+                (and
+                (zerop
+                 (tramp-call-local-coding-command
+                  (format
+                   "echo %s | %s | %s" magic
+                   ;; Windows shells need the program file name after
+                   ;; the pipe symbol be quoted if they use forward
+                   ;; slashes as directory separators.
+                   (mapconcat
+                    #'tramp-unquote-shell-quote-argument
+                     (split-string compress) " ")
+                   (mapconcat
+                    #'tramp-unquote-shell-quote-argument
+                     (split-string decompress) " "))
+                  nil t))
+                (string-match
+                 (concat "^" (regexp-quote magic) "$") (buffer-string)))
+              (throw 'next nil)))
+          (tramp-message
           vec 5
           "Checking remote compress commands `%s', `%s' for sanity"
           compress decompress)
          (unless (tramp-send-command-and-check
                   vec (format "echo %s | %s | %s" magic compress decompress) t)
            (throw 'next nil))
-         (setq found t)))
+  (with-current-buffer (tramp-get-buffer vec)
+    (goto-char (point-min))
+    (unless (looking-at (regexp-quote magic))
+      (throw 'next nil)))
+  (setq found t)))
 
       ;; Did we find something?
       (if found