apr_file_gets returns APR_EOF if it encounters an eof condition ( or any error condition...) while there is still room left in the read buffer.  This means that APR_EOF is returned if you read the last line in a file with a buffer larger then the last line. I would submit that the correct behaviour is to return success if anything is read before encountering the eof.