[plt-scheme] ftp

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Mon May 24 11:29:50 EDT 2010

The code in net/ftp uses the old protocol for open-output-file:

(define (ftp-download-file tcp-ports folder filename)
   ;; Save the file under the name tmp.file, rename it once download is
   ;; complete this assures we don't over write any existing file  
   ;; having a good file down
   (let* ([tmpfile (make-temporary-file
                      (path->string (build-path folder "ftptmp"))
          [new-file (open-output-file tmpfile 'replace)]

;; You want #:exists 'replace instead of just 'replace
;; (If I had time and knew where the test suites were, I'd push out a  
fix for you.)

          [tcpstring (bytes-append #"RETR "
                                   (string->bytes/locale filename)
          [tcp-data (establish-data-connection tcp-ports)])
     (display tcpstring (ftp-connection-out tcp-ports))
     (ftp-check-response (ftp-connection-in tcp-ports)
                         (ftp-connection-out tcp-ports)
                         #"150" print-msg (void))
     (copy-port tcp-data new-file)
     (close-output-port new-file)
     (close-input-port tcp-data)
     (ftp-check-response (ftp-connection-in tcp-ports)
                         (ftp-connection-out tcp-ports)
                         #"226" print-msg (void))
     (rename-file-or-directory tmpfile (build-path folder filename)  

On May 24, 2010, at 11:01 AM, geb a wrote:

> Can anyone point out what I'm doing wrong with this code?  I'm  
> having trouble figuring out what the problem is.  Thanks for your  
> help!
> Sincerely,
> Dan
> #lang scheme
> (require net/ftp)
> (define myftp (ftp-establish-connection "" 21 "anonymous"  
> ""))	 	 	 	
> (ftp-cd myftp "pub")
> (ftp-directory-list myftp)
> (ftp-download-file myftp "/home/dvisher" "mypic.png" )
> (ftp-close-connection myftp)
> ;procedure open-output-file: expects 1 argument plus optional  
> arguments with keywords #:exists and #:mode, given 2: "/home/dvisher/ 
> ftptmp1274590128-1015158141" replace
> _________________________________________________
>  For list-related administrative tasks:
>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme

Posted on the users mailing list.