[-- Attachment #1: Type: text/plain, Size: 1591 bytes --] AngeFTP cannot parse the output of the GNU inetutils FTP client on macOS 10.14. It errors out with "FTP Error: OPEN request failed:" and the process buffer shows the following: ftp> open ftp.tcl.tk open ftp.tcl.tk cd / cd / cd / cd / cd / cd / cd / cd / cd / cd / cd / cd / Connected to ftp.tcl.tk. 421 Service not available, remote server has closed connection ftp> Not connected. ftp> Not connected. ftp> Not connected. ftp> Not connected. ftp> Not connected. ftp> Not connected. ftp> This appears to be caused by readline being enabled for ftp and is resolved when disabling it. NetBSD/FreeBSD specifically mentions this in its ftp(1) for tnftp: -e Disables command line editing. This is useful for Emacs ange-ftp mode. Netkit-ftp on Linux does not exhibit this problem even with readline enabled; I could not test GNU inetutils on Linux. I tested tnftp on macOS and it also did not exhibit this problem even with readline enabled. Tested versions: ftp (GNU inetutils) 2.0 macOS 10.14.6 tnftp-20200705 macOS 10.14.6 netkit-ftp 0.17-34.1 Ubuntu 20.04.2 LTS There is no -e option for Windows FTP and ftp will terminate when receiving an unknown option (tested version Windows 10.0.19042.928) There is no -e option in Solaris FTP and I cannot test how it responds to an unknown option. I am proposing the below patch which resolves the problem on macOS with GNU inetutils and does no harm for Netkit-ftp/lukemftp/tnftp. However, because of the way a Windows client would respond, I am open to different approaches including considering this an inetutils bug instead. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 480 bytes --] diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index 04ea809127..1742c68c38 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -948,7 +948,7 @@ ange-ftp-gateway-ftp-program-name :group 'ange-ftp :type 'string) -(defcustom ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v") +(defcustom ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v" "-e") "A list of arguments passed to the FTP program when started." :group 'ange-ftp :type '(repeat string)) [-- Attachment #3: Type: text/plain, Size: 341 bytes --] In GNU Emacs 28.0.50 (build 1, x86_64-apple-darwin18.7.0, NS appkit-1671.60 Version 10.14.6 (Build 18G9028)) of 2021-05-17 built on awb-mbp.local Repository revision: d83db639d379df142482bf82d7eb020d2ec1ae73 Repository branch: master Windowing system distributor 'Apple', version 10.3.1671 System Description: Mac OS X 10.14.6 -- Alex.
> From: Alex Bochannek <alex@bochannek.com>
> Date: Mon, 17 May 2021 20:53:41 -0700
>
> There is no -e option for Windows FTP and ftp will terminate when
> receiving an unknown option (tested version Windows 10.0.19042.928)
>
> There is no -e option in Solaris FTP and I cannot test how it responds
> to an unknown option.
>
> I am proposing the below patch which resolves the problem on macOS with
> GNU inetutils and does no harm for Netkit-ftp/lukemftp/tnftp.
>
> However, because of the way a Windows client would respond, I am open to
> different approaches including considering this an inetutils bug
> instead.
How about making the default value depend on the value of system-type?
[-- Attachment #1: Type: text/plain, Size: 782 bytes --] Eli Zaretskii <eliz@gnu.org> writes: >> From: Alex Bochannek <alex@bochannek.com> >> Date: Mon, 17 May 2021 20:53:41 -0700 >> >> There is no -e option for Windows FTP and ftp will terminate when >> receiving an unknown option (tested version Windows 10.0.19042.928) >> >> There is no -e option in Solaris FTP and I cannot test how it responds >> to an unknown option. >> >> I am proposing the below patch which resolves the problem on macOS with >> GNU inetutils and does no harm for Netkit-ftp/lukemftp/tnftp. >> >> However, because of the way a Windows client would respond, I am open to >> different approaches including considering this an inetutils bug >> instead. > > How about making the default value depend on the value of system-type? You mean something like this? [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 721 bytes --] diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index 04ea809127..61a0f09f43 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -947,8 +947,13 @@ ange-ftp-gateway-ftp-program-name Some AT&T folks claim to use something called `pftp' here." :group 'ange-ftp :type 'string) +(defcustom imap-read-timeout (if (memq system-type '(windows-nt cygwin)) + 1.0 + 0.1) -(defcustom ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v") +(defcustom ange-ftp-ftp-program-args (if (eq system-type 'darwin) + '("-i" "-n" "-g" "-v" "-e") ; for GNU inetutils + '("-i" "-n" "-g" "-v")) "A list of arguments passed to the FTP program when started." :group 'ange-ftp :type '(repeat string)) [-- Attachment #3: Type: text/plain, Size: 1023 bytes --] The more I think about it, the more I am leaning against changing the default. I don't fully understand what inetutils ftp is doing and why -e is needed. Maybe submitting a bug against inetutils is the right approach here? As an aside (and why a system-type switch may be needed anyway), it looks to me that -v means the exact opposite thing on Windows than what is expected: BSD/Netkit/Inetutils/Solaris/HP-UX/AIX all specify that -v is verbose and that it's the default for interactive sessions. tnftp has a -V option that turns off verbose mode. Inetutils has a -V for --version. Windows however does this: -v Suppresses display of remote server responses. (Verified on Windows 10.0.19042.928) It seems to me that -v should be removed for Windows and likely can be removed for all systems. I haven't used Cygwin in a while, but I suspect AngeFTP can use either the Windows or the Inetutils FTP. Are there any automated cross-platform tests to see on which platform removing -v might break AngeFTP? -- Alex.
> From: Alex Bochannek <alex@bochannek.com> > Cc: 48494@debbugs.gnu.org > Date: Tue, 18 May 2021 10:50:25 -0700 > > > How about making the default value depend on the value of system-type? > > You mean something like this? Yes. > The more I think about it, the more I am leaning against changing the > default. I don't fully understand what inetutils ftp is doing and why -e > is needed. Maybe submitting a bug against inetutils is the right > approach here? Could be. > Are there any automated cross-platform tests to see on which platform > removing -v might break AngeFTP? I don't know. maybe Michael (CC'ed) does.
Eli Zaretskii <eliz@gnu.org> writes: >> From: Alex Bochannek <alex@bochannek.com> >> Cc: 48494@debbugs.gnu.org >> Date: Tue, 18 May 2021 10:50:25 -0700 >> >> > How about making the default value depend on the value of system-type? >> >> You mean something like this? > > Yes. > >> The more I think about it, the more I am leaning against changing the >> default. I don't fully understand what inetutils ftp is doing and why -e >> is needed. Maybe submitting a bug against inetutils is the right >> approach here? > > Could be. I am sending in a report to bug-inetutils@gnu.org and see if they can offer some insight. >> Are there any automated cross-platform tests to see on which platform >> removing -v might break AngeFTP? > > I don't know. maybe Michael (CC'ed) does. I take back my comment about Windows and -v. On the command line (cmd.exe), it absolutely does behave as the documentation indicated, but I just tried out AngeFTP under Windows 7 (Version 6.1.7601) and it only works with -v. Maybe Michael can explain what is going on there? -- Alex.
Alex Bochannek <alex@bochannek.com> writes:
>>> > How about making the default value depend on the value of system-type?
>>>
>>> You mean something like this?
>>
>> Yes.
>>
>>> The more I think about it, the more I am leaning against changing the
>>> default. I don't fully understand what inetutils ftp is doing and why -e
>>> is needed. Maybe submitting a bug against inetutils is the right
>>> approach here?
>>
>> Could be.
>
> I am sending in a report to bug-inetutils@gnu.org and see if they can
> offer some insight.
>
>>> Are there any automated cross-platform tests to see on which platform
>>> removing -v might break AngeFTP?
>>
>> I don't know. maybe Michael (CC'ed) does.
>
> I take back my comment about Windows and -v. On the command line
> (cmd.exe), it absolutely does behave as the documentation indicated, but
> I just tried out AngeFTP under Windows 7 (Version 6.1.7601) and it only
> works with -v. Maybe Michael can explain what is going on there?
Well, I'm not an expert in ftp, and especially, I'm not an expert in ftp
client command line arguments. While I agree that adding the "-e" option
to the ftp call in ange-ftp.el sounds reasonable, I have no idea what
would be broken with some clients.
A check for system-type is not sufficient, for every system there are
different ftp clients, which could behave different. If we want to add a
check for command argument availability, we would need to fire a test
call, and to analyze, whether given command arguments are supported.
We should take into consideration, that the default value for
ange-ftp-ftp-program-args hasn't been changed for at least 21 years. We
should also take into consideration, that ftp is being phased out in
browsers like Chrome and Firefox; its importance is decreasing. So I
propose to not change anything, and let users customize
ange-ftp-ftp-program-args to their needs.
Best regards, Michael.
Michael Albinus <michael.albinus@gmx.de> writes: > Alex Bochannek <alex@bochannek.com> writes: > >>>> > How about making the default value depend on the value of system-type? >>>> >>>> You mean something like this? >>> >>> Yes. >>> >>>> The more I think about it, the more I am leaning against changing the >>>> default. I don't fully understand what inetutils ftp is doing and why -e >>>> is needed. Maybe submitting a bug against inetutils is the right >>>> approach here? >>> >>> Could be. >> >> I am sending in a report to bug-inetutils@gnu.org and see if they can >> offer some insight. >> >>>> Are there any automated cross-platform tests to see on which platform >>>> removing -v might break AngeFTP? >>> >>> I don't know. maybe Michael (CC'ed) does. >> >> I take back my comment about Windows and -v. On the command line >> (cmd.exe), it absolutely does behave as the documentation indicated, but >> I just tried out AngeFTP under Windows 7 (Version 6.1.7601) and it only >> works with -v. Maybe Michael can explain what is going on there? > > Well, I'm not an expert in ftp, and especially, I'm not an expert in ftp > client command line arguments. While I agree that adding the "-e" option > to the ftp call in ange-ftp.el sounds reasonable, I have no idea what > would be broken with some clients. That was my primary concern. I looked at EMBA to see if there are any regression tests that would catch something like this, but didn't see anything. I am happy to help out with EMBA if need be, by the way. > A check for system-type is not sufficient, for every system there are > different ftp clients, which could behave different. If we want to add a > check for command argument availability, we would need to fire a test > call, and to analyze, whether given command arguments are supported. While I agree in principle, the way AngeFTP works pretty clearly assumes the client to present the BSD FTP command line interface. > We should take into consideration, that the default value for > ange-ftp-ftp-program-args hasn't been changed for at least 21 years. We > should also take into consideration, that ftp is being phased out in > browsers like Chrome and Firefox; its importance is decreasing. So I Which is why I am using AngeFTP. The convenient browser-based interfaces are gone and I am reverting to the same interface I use for other remote file access (TRAMP). > propose to not change anything, and let users customize > ange-ftp-ftp-program-args to their needs. I agree with that and I am fine with this bug being closed out as "won't fix" or some equivalent thereof. I submitted a bug against inetutils (don't have a bug number yet) and the underlying issue I saw on macOS should probably be addressed there. Until then I can either set ange-ftp-ftp-program-args or use tnftp. > Best regards, Michael. Thanks for the reply, much appreciated! -- Alex.
Michael Albinus <michael.albinus@gmx.de> writes: > We should take into consideration, that the default value for > ange-ftp-ftp-program-args hasn't been changed for at least 21 years. We > should also take into consideration, that ftp is being phased out in > browsers like Chrome and Firefox; its importance is decreasing. So I > propose to not change anything, and let users customize > ange-ftp-ftp-program-args to their needs. Perhaps the `ange-ftp-ftp-program-args' doc string should mention that some ftp clients require "-e"? That should help with discoverability for people who have these problems. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
[-- Attachment #1: Type: text/plain, Size: 671 bytes --] Lars Ingebrigtsen <larsi@gnus.org> writes: > Michael Albinus <michael.albinus@gmx.de> writes: > >> We should take into consideration, that the default value for >> ange-ftp-ftp-program-args hasn't been changed for at least 21 years. We >> should also take into consideration, that ftp is being phased out in >> browsers like Chrome and Firefox; its importance is decreasing. So I >> propose to not change anything, and let users customize >> ange-ftp-ftp-program-args to their needs. > > Perhaps the `ange-ftp-ftp-program-args' doc string should mention that > some ftp clients require "-e"? That should help with discoverability > for people who have these problems. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 555 bytes --] diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index 04ea809127..064aca5abf 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -949,7 +949,9 @@ ange-ftp-gateway-ftp-program-name :type 'string) (defcustom ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v") - "A list of arguments passed to the FTP program when started." + "A list of arguments passed to the FTP program when started. +Some FTP clients may also require the \"-e\" argument, which disables +command line editing." :group 'ange-ftp :type '(repeat string)) [-- Attachment #3: Type: text/plain, Size: 11 bytes --] -- Alex.
Alex Bochannek <alex@bochannek.com> writes:
Hi Alex,
>> Perhaps the `ange-ftp-ftp-program-args' doc string should mention that
>> some ftp clients require "-e"? That should help with discoverability
>> for people who have these problems.
>
> diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
> index 04ea809127..064aca5abf 100644
> --- a/lisp/net/ange-ftp.el
> +++ b/lisp/net/ange-ftp.el
> @@ -949,7 +949,9 @@ ange-ftp-gateway-ftp-program-name
> :type 'string)
>
> (defcustom ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v")
> - "A list of arguments passed to the FTP program when started."
> + "A list of arguments passed to the FTP program when started.
> +Some FTP clients may also require the \"-e\" argument, which disables
> +command line editing."
> :group 'ange-ftp
> :type '(repeat string))
LGTM. As I see, you have already submitted several patches to
Emacs. Have you signed already the FSF copyright papers? Otherwise, I
fear your contributions would exceed the max tiny patch limit.
In case you haven't signed yet, would you like to do that? It would
enable you to submit as many patches to Emacs as you like :-)
Best regards, Michael.
Michael Albinus <michael.albinus@gmx.de> writes: > Alex Bochannek <alex@bochannek.com> writes: > > Hi Alex, > >>> Perhaps the `ange-ftp-ftp-program-args' doc string should mention that >>> some ftp clients require "-e"? That should help with discoverability >>> for people who have these problems. >> >> diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el >> index 04ea809127..064aca5abf 100644 >> --- a/lisp/net/ange-ftp.el >> +++ b/lisp/net/ange-ftp.el >> @@ -949,7 +949,9 @@ ange-ftp-gateway-ftp-program-name >> :type 'string) >> >> (defcustom ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v") >> - "A list of arguments passed to the FTP program when started." >> + "A list of arguments passed to the FTP program when started. >> +Some FTP clients may also require the \"-e\" argument, which disables >> +command line editing." >> :group 'ange-ftp >> :type '(repeat string)) > > LGTM. As I see, you have already submitted several patches to > Emacs. Have you signed already the FSF copyright papers? Otherwise, I > fear your contributions would exceed the max tiny patch limit. I have not. > In case you haven't signed yet, would you like to do that? It would > enable you to submit as many patches to Emacs as you like :-) Sure, happy to do that! -- Alex.
Alex Bochannek <alex@bochannek.com> writes: Hi Alex, >> LGTM. As I see, you have already submitted several patches to >> Emacs. Have you signed already the FSF copyright papers? Otherwise, I >> fear your contributions would exceed the max tiny patch limit. > > I have not. > >> In case you haven't signed yet, would you like to do that? It would >> enable you to submit as many patches to Emacs as you like :-) > > Sure, happy to do that! Thanks for this! To start the assignment process you should download https://git.savannah.gnu.org/cgit/gnulib.git/plain/doc/Copyright/request-assign.future and return the completed information to the address at the top. When the process has been finished (it will take some days), please ping me, and I will push the patch in your name. Best regards, Michael.
Michael Albinus <michael.albinus@gmx.de> writes:
> Alex Bochannek <alex@bochannek.com> writes:
>
> Hi Alex,
>
>>> LGTM. As I see, you have already submitted several patches to
>>> Emacs. Have you signed already the FSF copyright papers? Otherwise, I
>>> fear your contributions would exceed the max tiny patch limit.
>>
>> I have not.
>>
>>> In case you haven't signed yet, would you like to do that? It would
>>> enable you to submit as many patches to Emacs as you like :-)
>>
>> Sure, happy to do that!
>
> Thanks for this! To start the assignment process you should download
> https://git.savannah.gnu.org/cgit/gnulib.git/plain/doc/Copyright/request-assign.future
> and return the completed information to the address at the top. When the
> process has been finished (it will take some days), please ping me, and
> I will push the patch in your name.
OK, sent. I also heard back from the Inetutils maintainers and this is
not a known bug in their FTP client.
--
Alex.
Michael Albinus <michael.albinus@gmx.de> writes:
> Alex Bochannek <alex@bochannek.com> writes:
>
> Hi Alex,
>
>>> Perhaps the `ange-ftp-ftp-program-args' doc string should mention that
>>> some ftp clients require "-e"? That should help with discoverability
>>> for people who have these problems.
>>
>> diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
>> index 04ea809127..064aca5abf 100644
>> --- a/lisp/net/ange-ftp.el
>> +++ b/lisp/net/ange-ftp.el
>> @@ -949,7 +949,9 @@ ange-ftp-gateway-ftp-program-name
>> :type 'string)
>>
>> (defcustom ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v")
>> - "A list of arguments passed to the FTP program when started."
>> + "A list of arguments passed to the FTP program when started.
>> +Some FTP clients may also require the \"-e\" argument, which disables
>> +command line editing."
>> :group 'ange-ftp
>> :type '(repeat string))
Follow-up to this. The issue on macOS appears to be caused by inetutils
picking up libedit for Readline during configuration. Once I installed a
proper libreadline and configured with the right prefix, the problem was
resolved.
Adding the -e comment to the docstring still seems sensible to me.
--
Alex.
Alex Bochannek <alex@bochannek.com> writes:
Hi Alex,
> Follow-up to this. The issue on macOS appears to be caused by inetutils
> picking up libedit for Readline during configuration. Once I installed a
> proper libreadline and configured with the right prefix, the problem was
> resolved.
>
> Adding the -e comment to the docstring still seems sensible to me.
D'accord. Perhaps you could also add a comment with this fact, and
referring to bug#48494.
Best regards, Michael.
[-- Attachment #1: Type: text/plain, Size: 547 bytes --] Michael Albinus <michael.albinus@gmx.de> writes: > Alex Bochannek <alex@bochannek.com> writes: > > Hi Alex, > >> Follow-up to this. The issue on macOS appears to be caused by inetutils >> picking up libedit for Readline during configuration. Once I installed a >> proper libreadline and configured with the right prefix, the problem was >> resolved. >> >> Adding the -e comment to the docstring still seems sensible to me. > > D'accord. Perhaps you could also add a comment with this fact, and > referring to bug#48494. Sounds good. See below. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 692 bytes --] diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index 04ea809127..3f3a3df8e5 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -949,7 +949,11 @@ ange-ftp-gateway-ftp-program-name :type 'string) (defcustom ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v") - "A list of arguments passed to the FTP program when started." + ;; Clients that use the BSD editline instead of the GNU readline + ;; library may need to disable command line editing. (Bug#48494) + "A list of arguments passed to the FTP program when started. +Some FTP clients may also require the \"-e\" argument, which disables +command line editing." :group 'ange-ftp :type '(repeat string)) [-- Attachment #3: Type: text/plain, Size: 11 bytes --] -- Alex.
Alex Bochannek <alex@bochannek.com> writes:
Hi Alex,
> Sounds good. See below.
>
> diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
> index 04ea809127..3f3a3df8e5 100644
> --- a/lisp/net/ange-ftp.el
> +++ b/lisp/net/ange-ftp.el
> @@ -949,7 +949,11 @@ ange-ftp-gateway-ftp-program-name
> :type 'string)
>
> (defcustom ange-ftp-ftp-program-args '("-i" "-n" "-g" "-v")
> - "A list of arguments passed to the FTP program when started."
> + ;; Clients that use the BSD editline instead of the GNU readline
> + ;; library may need to disable command line editing. (Bug#48494)
> + "A list of arguments passed to the FTP program when started.
> +Some FTP clients may also require the \"-e\" argument, which disables
> +command line editing."
> :group 'ange-ftp
> :type '(repeat string))
LGTM. Best regards, Michael.
Michael Albinus <michael.albinus@gmx.de> writes:
> Thanks for this! To start the assignment process you should download
> https://git.savannah.gnu.org/cgit/gnulib.git/plain/doc/Copyright/request-assign.future
> and return the completed information to the address at the top. When the
> process has been finished (it will take some days), please ping me, and
> I will push the patch in your name.
Assignment is complete, just got the signed paperwork back.
--
Alex.
Alex Bochannek <alex@bochannek.com> writes: >> D'accord. Perhaps you could also add a comment with this fact, and >> referring to bug#48494. > > Sounds good. See below. Patch pushed to Emacs 28 now. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no