reimplement read-bytevector in scheme using read-bytevector!
This commit is contained in:
parent
8f4e07d185
commit
2d90c1fb90
|
@ -810,6 +810,14 @@
|
||||||
(define (u8-ready? . opt)
|
(define (u8-ready? . opt)
|
||||||
#t)
|
#t)
|
||||||
|
|
||||||
|
(define (read-bytevector k . opt)
|
||||||
|
(let ((port (if (null? opt) (current-input-port) (car opt))))
|
||||||
|
(let ((buf (make-bytevector k)))
|
||||||
|
(let ((n (read-bytevector! buf port 0 k)))
|
||||||
|
(if (eof-object? n)
|
||||||
|
(eof-object)
|
||||||
|
(bytevector-copy buf 0 n))))))
|
||||||
|
|
||||||
(define (char-ready? . opt)
|
(define (char-ready? . opt)
|
||||||
#t)
|
#t)
|
||||||
|
|
||||||
|
|
|
@ -674,26 +674,6 @@ pic_port_peek_u8(pic_state *pic)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static pic_value
|
|
||||||
pic_port_read_bytevector(pic_state *pic)
|
|
||||||
{
|
|
||||||
pic_value port = pic_stdin(pic);
|
|
||||||
unsigned char *buf;
|
|
||||||
int k, i;
|
|
||||||
|
|
||||||
pic_get_args(pic, "i|p", &k, &port);
|
|
||||||
|
|
||||||
assert_port_profile(port, FILE_READ, "read-bytevector");
|
|
||||||
|
|
||||||
buf = pic_blob(pic, pic_blob_value(pic, NULL, k), NULL);
|
|
||||||
|
|
||||||
i = pic_fread(pic, buf, sizeof(char), k, port);
|
|
||||||
if (i == 0) {
|
|
||||||
return pic_eof_object(pic);
|
|
||||||
}
|
|
||||||
return pic_blob_value(pic, buf, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
static pic_value
|
static pic_value
|
||||||
pic_port_read_bytevector_ip(pic_state *pic)
|
pic_port_read_bytevector_ip(pic_state *pic)
|
||||||
{
|
{
|
||||||
|
@ -817,7 +797,6 @@ pic_init_port(pic_state *pic)
|
||||||
/* input */
|
/* input */
|
||||||
pic_defun(pic, "read-u8", pic_port_read_u8);
|
pic_defun(pic, "read-u8", pic_port_read_u8);
|
||||||
pic_defun(pic, "peek-u8", pic_port_peek_u8);
|
pic_defun(pic, "peek-u8", pic_port_peek_u8);
|
||||||
pic_defun(pic, "read-bytevector", pic_port_read_bytevector);
|
|
||||||
pic_defun(pic, "read-bytevector!", pic_port_read_bytevector_ip);
|
pic_defun(pic, "read-bytevector!", pic_port_read_bytevector_ip);
|
||||||
|
|
||||||
/* output */
|
/* output */
|
||||||
|
|
Loading…
Reference in New Issue