Add an optional path argument to `ftp-directory-list'.

This commit is contained in:
Eli Barzilay 2011-08-05 01:13:50 -04:00
parent 6a1336e75e
commit 5a7ddd6611
2 changed files with 11 additions and 7 deletions

View File

@ -163,9 +163,11 @@
"^(.)(.*) ((?i:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)" "^(.)(.*) ((?i:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)"
" .* [0-9][0-9]:?[0-9][0-9]) (.*)$"))) " .* [0-9][0-9]:?[0-9][0-9]) (.*)$")))
(define (ftp-directory-list tcp-ports) (define (ftp-directory-list tcp-ports [path #f])
(define tcp-data (establish-data-connection tcp-ports)) (define tcp-data (establish-data-connection tcp-ports))
(fprintf (ftp-connection-out tcp-ports) "LIST\r\n") (if path
(fprintf (ftp-connection-out tcp-ports) "LIST ~a\r\n" path)
(fprintf (ftp-connection-out tcp-ports) "LIST\r\n"))
(ftp-check-response (ftp-connection-in tcp-ports) (ftp-check-response (ftp-connection-in tcp-ports)
(ftp-connection-out tcp-ports) (ftp-connection-out tcp-ports)
(list #"150" #"125") void (void)) (list #"150" #"125") void (void))

View File

@ -31,20 +31,22 @@ supplied username and password.}
Closes an FTP connection.} Closes an FTP connection.}
@defproc[(ftp-cd [ftp-conn ftp-connection?][new-dir string?]) void?]{ @defproc[(ftp-cd [ftp-conn ftp-connection?] [new-dir string?]) void?]{
Changes the current directory on the FTP server to @racket[new-dir]. Changes the current directory on the FTP server to @racket[new-dir].
The @racket[new-dir] argument is not interpreted at all, but simply The @racket[new-dir] argument is not interpreted at all, but simply
passed on to the server; it must not contain a newline.} passed on to the server; it must not contain a newline.}
@defproc[(ftp-directory-list [ftp-conn ftp-connection?]) @defproc[(ftp-directory-list [ftp-conn ftp-connection?]
[path (or/c false/c string?) #f])
(listof (list/c (one-of/c "-" "d" "l") (listof (list/c (one-of/c "-" "d" "l")
string? string?
string?))]{ string?))]{
Returns a list of files and directories in the current directory of Returns a list of files and directories in the current directory of the
the server, assuming that the server provides directory information in server, assuming that the server provides directory information in the
the quasi-standard Unix format. quasi-standard Unix format. If a @racket[path] argument is given, use
it instead of the current directory.
Each file or directory is represented by a list of three or four Each file or directory is represented by a list of three or four
strings. The first string is either @racket["-"], @racket["d"], or strings. The first string is either @racket["-"], @racket["d"], or