I'm not sure the test is actually valid anyway. IIRC (and I may not, POSIX
may prove me wrong here), there's no guarantee that read() will return the
number of bytes you requested, so at a minium to make this 100% correct
you'd have to do something like this:
// Read entire file
while(read(...) != 0)
{
}
// Check if there was a read() failure or if it just ran out of bytes to
read.
[...]
Something like (2) is the only way to do things correctly under any and all
circumstances. What I usually do is accept either an '\r' or an '\n' as an
EOL character, and then ignore blank lines. That way, whichever combination
of '\r's and '\n's you have, even abberations like '\r\r\n' which
occaisionally show up, you can read it with no problem.