diff options
Diffstat (limited to 'http-client.scm')
| -rw-r--r-- | http-client.scm | 20 |
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 |
