Reads a line from the stream f, storing it at location pointed to by p.
Stops when a linefeed is encountered, or 'max' bytes have been read. The
end of line is handled by detecting the right combination of characters
for the platform. This supports CR-LF (DOS/Windows), LF (Unix), and CR
(Mac) formats.
RETURN VALUE
Returns the pointer p on success, or NULL on error.
Note, however, that the trailing carriage return is not included in the
returned string, in order to provide easy code portability across
platforms. If you need the carriage return, use pack_fread() and/or
pack_getc() instead.