-
-(define (retrieve-text-file file-name server-host server-port)
- (if (file-exists? file-name)
- (with-input-from-file file-name
- (lambda ()
- (for-each
- (lambda (line)
- (print line "\r"))
- (read-lines))))
- (print "Error: file not found.")))
+(define (serve-text-file path server-host server-port)
+ (let ((file-name (make-pathname gopher-root path)))
+ (if (regular-file? file-name)
+ (with-input-from-file file-name
+ (lambda ()
+ (for-each
+ (lambda (line)
+ (print line "\r"))
+ (read-lines))))
+ (error "File not found."))))
+
+(define (serve-binary-file path server-host server-port)
+ (let ((file-name (make-pathname gopher-root path)))
+ (if (regular-file? file-name)
+ (with-input-from-file file-name
+ (lambda ()
+ (let loop ((b (read-byte)))
+ (if (eof-object? b)
+ 'done
+ (begin
+ (write-byte b)
+ (loop (read-byte)))))))))
+ (print "File not found."))