On this page:
eprintf
read-all
read-all-syntax
port->srcloc
read-available-bytes

11 Ports

 (require (planet cce/scheme:7:8/port))

This module provides tools for port I/O.

(eprintf fmt arg ...)  void?
  fmt : string?
  arg : any/c
Like printf, but prints to (current-error-port).

Example:

> (eprintf "Danger, ~a!" "Will Robinson")

Danger, Will Robinson!

(read-all [reader port])  list?
  reader : (-> any/c) = read
  port : input-port? = (current-input-port)
This function produces a list of all the values produced by calling (reader) while current-input-port is set to port, up until it produces eof.

Examples:

> (read-all read (open-input-string "1 2 3"))

'(1 2 3)

> (parameterize ([current-input-port (open-input-string "a b c")])
    (read-all))

'(a b c)

(read-all-syntax [reader port])  (syntax/c list?)
  reader : (-> (or/c syntax? eof-object?)) = read
  port : input-port? = (current-input-port)
This function produces a syntax object containing a list of all the syntax objects produced by calling (reader) while current-input-port is set to port, up until it produces eof. The source location of the result spans the entire portion of the port that was read.

Examples:

(define port1 (open-input-string "1 2 3"))
> (port-count-lines! port1)
> (read-all-syntax read-syntax port1)

#<syntax:1:0 (1 2 3)>

(define port2 (open-input-string "a b c"))
> (port-count-lines! port2)
> (parameterize ([current-input-port port2])
    (read-all-syntax))

#<syntax:1:0 (a b c)>

(port->srcloc port [source span])  srcloc?
  port : port?
  source : any/c = (object-name port)
  span : exact-nonnegative-integer? = 0
Produces a srcloc structure representing the current position of a port, using the provided source and span values to fill in missing fields. This function relies on port-next-location, so line counting must be enabled for port to get meaningful results.

Examples:

(define port (open-input-string "1 2 3"))
> (port-count-lines! port)
> (read port)

1

> (port->srcloc port)

(srcloc 'string 1 1 2 0)

> (port->srcloc port "1 2 3" 1)

(srcloc "1 2 3" 1 1 2 1)

This function reads all immediately available bytes from a port and produces a byte string containing them. If there are no bytes available and the port is known to have no more input, it produces eof; if there are none available but the port may have more input, it produces an empty byte string. This procedure never blocks to wait for input from the port.

Examples:

(define-values [in out] (make-pipe))
> (parameterize ([current-input-port in]) (read-available-bytes))

#""

> (write-byte (char->integer #\c) out)
> (read-available-bytes in)

#"c"

> (read-available-bytes in)

#""

> (close-output-port out)
> (read-available-bytes in)

#<eof>