Subject: bug#67865: [PATCH] ange-ftp fails with tnftp client

From: Christophe Deleuze <[email-masked]>
Date: Sun, 17 Dec 2023 14:56:57 +0100

* bug description

When used with the tnftp client (https://en.wikipedia.org/wiki/Tnftp),
ange-ftp fails when trying to enable passive mode.

* fix description

Passive mode is enabled by function ange-ftp-passive-mode:

(defun ange-ftp-passive-mode (proc on-or-off)
  (if (string-match (concat "Passive mode " on-or-off)
                    (cdr (ange-ftp-raw-send-cmd
                          proc (concat "passive " on-or-off)
                          "Trying passive mode..." nil)))
      (ange-ftp-message (concat "Trying passive mode..." on-or-off))
    (error "Trying passive mode...failed")))

that expects to get a result string containing the string "Passive
mode on" (when on-or-off is "on"), however tnftp includes a colon in
its answer (extract from the buffer the ftp process is run in):

ftp> passive on
Passive mode: on; fallback to active mode: off.

I suggest slightly changing the regexp used in string-match to allow
for this colon, as shown below:

(defun ange-ftp-passive-mode (proc on-or-off)
  (if (string-match (concat "Passive mode:? " on-or-off)
  [...]
  
The attached patch does just that.

For information, in debian bookworm the ftp package has changed from
netkit-ftp to being a dummy transitional package for tnftp.

regards,

>From 1f41c0b474b7cc731aa4824902199c13bd15c895 Mon Sep 17 00:00:00 2001
From: Christophe Deleuze <[email-masked]>
Date: Sun, 17 Dec 2023 14:49:27 +0100
Subject: [PATCH] ange-ftp: fix passive mode result string for tntfp client

---
 lisp/net/ange-ftp.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 4e4db34a78d..a1eb57baa20 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -2164,7 +2164,7 @@ ange-ftp-get-process
       proc)))
 
 (defun ange-ftp-passive-mode (proc on-or-off)
-  (if (string-match (concat "Passive mode " on-or-off)
+  (if (string-match (concat "Passive mode:? " on-or-off)
                     (cdr (ange-ftp-raw-send-cmd
                           proc (concat "passive " on-or-off)
                           "Trying passive mode..." nil)))
-- 
2.39.2