Node:Line/Delimited,
Next:Block Reading and Writing,
Previous:Random Access,
Up:Input and Output
27.6 Line Oriented and Delimited Text
The delimited-I/O module can be accessed with:
(use-modules (ice-9 rdelim))
It can be used to read or write lines of text, or read text delimited by
a specified set of characters.  It's similar to the (scsh rdelim)
module from guile-scsh, but does not use multiple values or character
sets and has an extra procedure write-line.
| read-line [port] [handle-delim] | Scheme Procedure | 
| Return a line of text from port if specified, otherwise from the
value returned by (current-input-port).  Under Unix, a line of text
is terminated by the first end-of-line character or by end-of-file.If handle-delim is specified, it should be one of the following
symbols:
 
trimDiscard the terminating delimiter.  This is the default, but it will
be impossible to tell whether the read terminated with a delimiter or
end-of-file. 
concatAppend the terminating delimiter (if any) to the returned string. 
peekPush the terminating delimiter (if any) back on to the port. 
splitReturn a pair containing the string read from the port and the
terminating delimiter or end-of-file object. 
 | 
| read-line! buf [port] | Scheme Procedure | 
| Read a line of text into the supplied string buf and return the
number of characters added to buf.  If buf is filled, then #fis returned. 
Read from port if
specified, otherwise from the value returned by(current-input-port). | 
| read-delimited delims [port] [handle-delim] | Scheme Procedure | 
| Read text until one of the characters in the string delims is found
or end-of-file is reached.  Read from port if supplied, otherwise
from the value returned by (current-input-port). 
handle-delim takes the same values as described forread-line. | 
| read-delimited! delims buf [port] [handle-delim] [start] [end] | Scheme Procedure | 
| Read text into the supplied string buf and return the number of
characters added to buf (subject to handle-delim, which takes
the same values specified for read-line.  If buf is filled,#fis returned for both the number of characters read and the
delimiter.  Also terminates if one of the characters in the string
delims is found
or end-of-file is reached.  Read from port if supplied, otherwise
from the value returned by(current-input-port). | 
| write-line obj [port] | Scheme Procedure | 
| scm_write_line (obj, port) | C Function | 
| Display obj and a newline character to port.  If
port is not specified, (current-output-port)is
used.  This function is equivalent to:
 (display obj [port])
(newline [port])
 | 
Some of the abovementioned I/O functions rely on the following C
primitives.  These will mainly be of interest to people hacking Guile
internals.
| %read-delimited! delims str gobble [port [start [end]]] | Scheme Procedure | 
| scm_read_delimited_x (delims, str, gobble, port, start, end) | C Function | 
| Read characters from port into str until one of the
characters in the delims string is encountered.  If
gobble is true, discard the delimiter character;
otherwise, leave it in the input stream for the next read.  If
port is not specified, use the value of (current-input-port).  If start or end are
specified, store data only into the substring of str
bounded by start and end (which default to the
beginning and end of the string, respectively).Return a pair consisting of the delimiter that terminated the
string and the number of characters read.  If reading stopped
at the end of file, the delimiter returned is the
eof-object; if the string was filled without encountering
a delimiter, this value is #f. | 
| %read-line [port] | Scheme Procedure | 
| scm_read_line (port) | C Function | 
| Read a newline-terminated line from port, allocating storage as
necessary.  The newline terminator (if any) is removed from the string,
and a pair consisting of the line and its delimiter is returned.  The
delimiter may be either a newline or the eof-object; if %read-lineis called at the end of file, it returns the pair(#<eof> . #<eof>). |