Programming Your Own Custom Streams
-----------------------------------
This section describes how you can make a stream that gets input
from an arbitrary data source or writes output to an arbitrary data sink
programmed by you. We call these "custom streams". The functions and
types described here are all GNU extensions.