[gambit-list] byte operations on ports

Christian christian at pflanze.mine.nu
Mon Jun 13 12:19:31 EDT 2005


Hello

I can't find out how to read bytes from a device file:

>  (define urandom-port (open-input-file "/dev/urandom"))
>  urandom-port
#<input-port #2 "/dev/urandom">
>  (read-byte urandom-port)
*** ERROR IN ##read-byte -- Invalid argument
(read-char '#<input-port #2 "/dev/urandom">)
1>

btw note that the error message mentions read-char instead of read-byte

>  (read-char urandom-port)
*** ERROR IN (console)@5.1 -- Invalid argument
(read-char '#<input-port #2 "/dev/urandom">)
1>
>  (input-port-byte-position urandom-port)
*** ERROR IN (console)@6.1 -- Unknown error
(input-port-byte-position '#<input-port #2 "/dev/urandom">)
1>

whereas with a normal file:

>  (define urandom-port (open-input-file "chj.scm"))
>  urandom-port
#<input-port #3 "/home/chris/schemedevelopment/gambit/chj.scm">
>  (read-byte urandom-port)
10
>  (read-char urandom-port)
#\(
>  (input-port-byte-position urandom-port)
0
>  (read-byte urandom-port)
100
>  (input-port-byte-position urandom-port)
0
>  (read-byte urandom-port)
101
>  (input-port-byte-position urandom-port)
0

(but isn't it strange that input-port-byte-position doesn't advance?)

Thanks for your help
Christian.



More information about the Gambit-list mailing list