line_buffer API
===============

The line_buffer library provides a convenient interface for
mostly-line-oriented input.

Each line is not permitted to exceed 10000 bytes.  The provided
functions are not thread-safe or async-signal-safe, and like
`fgets()`, they generally do not function correctly if interrupted
by a signal without SA_RESTART set.

Calling sequence
----------------

The calling program:

 - initializes a `struct line_buffer` to LINE_BUFFER_INIT
 - specifies a file to read with `buffer_init`
 - processes input with `buffer_read_line`, `buffer_skip_bytes`,
   and `buffer_copy_bytes`
 - closes the file with `buffer_deinit`, perhaps to start over and
   read another file.

When finished, the caller can use `buffer_reset` to deallocate
resources.

Using temporary files
---------------------

Temporary files provide a place to store data that should not outlive
the calling program.  A program

 - initializes a `struct line_buffer` to LINE_BUFFER_INIT
 - requests a temporary file with `buffer_tmpfile_init`
 - acquires an output handle by calling `buffer_tmpfile_rewind`
 - uses standard I/O functions like `fprintf` and `fwrite` to fill
   the temporary file
 - declares writing is over with `buffer_tmpfile_prepare_to_read`
 - can re-read what was written with `buffer_read_line`,
   `buffer_copy_bytes`, and so on
 - can reuse the temporary file by calling `buffer_tmpfile_rewind`
   again
 - removes the temporary file with `buffer_deinit`, perhaps to
   reuse the line_buffer for some other file.

When finished, the calling program can use `buffer_reset` to deallocate
resources.

Functions
---------

`buffer_init`, `buffer_fdinit`::
	Open the named file or file descriptor for input.
	buffer_init(buf, NULL) prepares to read from stdin.
	On failure, returns -1 (with errno indicating the nature
	of the failure).

`buffer_deinit`::
	Stop reading from the current file (closing it unless
	it was stdin).  Returns nonzero if `fclose` fails or
	the error indicator was set.

`buffer_read_line`::
	Read a line and strip off the trailing newline.
	On failure or end of file, returns NULL.

`buffer_copy_bytes`::
	Read `len` bytes of input and dump them to the standard output
	stream.  Returns early for error or end of file.

`buffer_skip_bytes`::
	Discards `len` bytes from the input stream (stopping early
	if necessary because of an error or eof).  Return value is
	the number of bytes successfully read.

`buffer_reset`::
	Deallocates non-static buffers.
