A bug is some failure of Parrot to live up to its promises. We will attempt to fix bugs as time and resources permit. However, the cure is sometimes worse than the sickness, so some bugs live on. A surprise is any effect of Parrot that is necessary but not obvious.
parrot xterm
, just type xterm
and then
parrot tcsh
Short answer: Your FTP server is broken. The NLST command ought to return a list of everything in a directory, not just the files. Ask your system operator to modify this behavior by changing a configuration option or editing the code. Failing that, make use of another protocol, such as Chirp, to get reliable directory listings. (One server that gets this behavior correct is (GridFTP Server 1.0 [GSI patch v0.5] wu-2.6.1(2)).)
Short fix for wu-ftpd: If you have wuftpd, rebuild from source with the --enable-nlst-dirs option to configure.
Long answer:The precise behavior of file listings is a matter of dispute in the FTP community. Here's why:
The FTP specification offers two ways of retrieving a directory list. The LIST command is designed for human consumption: it gives back a free-form text dump of the directory contents in a manner that differs from server to server. The NLST command is meant for machines: it gives plain names and no other information. With some FTP clients, you can see the output of LIST by typing "ls" and the output of NLST by typing "nlist".
Parrot relies on the NLST command to retrieve directory listings in order to implement the getdents() system call. This would be fine, except some FTP servers mistakenly implement NLST such that it lists everything except directories. The LIST command is not a usable alternative, because its output has no standard form.
Two arguments have been made in favor of this NLST behavior.
Both of these arguments are hogwash. As for argument 1, the RFC uses the term file throughout the document to indicate something in the filesystem rather than strictly an array of bytes. Read it yourself and decide.
Argument 2 is no better. Suppose that NLST included directory names. One could easily build a multiple get that (if desired) skipped over directory names by using CWD and CDUP to determine which entries, if any, are directory names. Further, one could trivially build a recursive multiple get. But, with a files-only NLST, one is limited to a flat multiple get; a recursive multiple get is not even possible!
To summarize: the NLST command is implemented incorrectly on many servers. If you have this problem, ask your system administrators to change the server, or make use of another protocol such as Chirp.