summaryrefslogtreecommitdiff
path: root/http-client.scm
diff options
context:
space:
mode:
Diffstat (limited to 'http-client.scm')
-rw-r--r--http-client.scm20
1 files changed, 14 insertions, 6 deletions
diff --git a/http-client.scm b/http-client.scm
index e6c8831..2d5e182 100644
--- a/http-client.scm
+++ b/http-client.scm
@@ -46,7 +46,7 @@
server-connector default-server-connector
prepare-request default-prepare-request)
-(import scheme (scheme base)
+(import scheme (scheme base) (scheme case-lambda)
srfi-1 srfi-13 srfi-18 srfi-69
(chicken base) (chicken string) (chicken time)
(chicken sort) (chicken io) (chicken file posix) (chicken format)
@@ -283,6 +283,18 @@
(if (not len)
port ;; no need to delimit anything
(let ((pos 0))
+ ;; NOTE: This is using case-lambda because the signature changed between CHICKEN 6.0.0 and later releases
+ ;; In 6.0.0 it receives the port and the the number of bytes to read so we have to convert that old
+ ;; signature to the newer signature.
+ (define read-bytevector/pos
+ (case-lambda
+ ((p bytes buf off)
+ (read-bytevector/pos buf off (+ bytes off)))
+ ((buf start end)
+ (let* ((bytes (min (- end start) (- len pos)))
+ (bytes-read (read-bytevector! buf port start (+ start bytes))))
+ (set! pos (+ pos bytes-read))
+ bytes-read))))
(make-input-port
(lambda () ; read-char
(if (= pos len)
@@ -298,11 +310,7 @@
(if (= pos len)
#!eof
(peek-char port)))
- read-bytevector: (lambda (p bytes buf off)
- (let* ((bytes (min bytes (- len pos)))
- (bytes-read (read-bytevector! buf port off (+ off bytes))))
- (set! pos (+ pos bytes-read))
- bytes-read))
+ read-bytevector: read-bytevector/pos
read-line: (lambda (p limit)
(if (= pos len)
#!eof