diff --git a/ftpd.scm b/ftpd.scm index ece46e2..86e4836 100644 --- a/ftpd.scm +++ b/ftpd.scm @@ -542,8 +542,17 @@ path (car packet)))) (lambda () - (ls flags (list full-path) (socket:outport - (session-data-socket))))))) + (with-cwd* + (file-name-directory full-path) + (lambda () + (let ((nondir (file-name-nondirectory full-path))) + (ls flags + (list + ;; work around OLIN BUG + (if (string=? nondir "") + "." + (file-name-as-directory nondir))) + (socket:outport (session-data-socket)))))))))) (define (handle-abor foo) (maybe-close-data-connection) @@ -772,7 +781,7 @@ ; Version -(define *ftpd-version* "$Revision: 1.3 $") +(define *ftpd-version* "$Revision: 1.4 $") (define (copy-port->port-binary input-port output-port) (let ((buffer (make-string *window-size*)))