+/** @brief Read a line from @p fp
+ * @param tag Used in error messages
+ * @param fp Stream to read from
+ * @param lp Where to store newly allocated string
+ * @param newline Newline character or @ref CRLF
+ * @return 0 on success, -1 on error or eof.
+ *
+ * The newline is not included in the string. If the last line of a
+ * stream does not have a newline then that line is still returned.
+ *
+ * If @p newline is @ref CRLF then the line is terminated by CR LF,
+ * not by a single newline character. The CRLF is still not included
+ * in the string in this case.
+ *
+ * @p *lp is only set if the return value was 0.
+ */