Documentation
Reads a character from the stream, translating entities as it
goes (assuming *convert-entities* is non-NIL).
Source
(defun read-stream (stream)
"Reads a character from the stream, translating entities as it
goes (assuming *convert-entities* is non-NIL)."
(let ((c (read-char stream nil)))
(if (or (not (char= c #\&))
(not *convert-entities*))
c
(loop with ent = (make-extendable-string 5)
for char = (read-char stream)
do (push-string char ent)
until (char= char #\;)
finally (return (resolve-entity (coerce ent 'simple-string)))))))Source Context