Re: eof() for file descriptors missing?
Re: eof() for file descriptors missing?
- Subject: Re: eof() for file descriptors missing?
- From: Alastair Houghton <email@hidden>
- Date: Wed, 30 Jan 2008 17:41:35 +0000
On 30 Jan 2008, at 07:26, Chris Espinosa wrote:
If you're using NSFileHandle readDataOfLength:, you're at EOF if the
size of the data is 0 or less than the length desired.
If you're using read(), you're at EOF when read returns 0.
If you're using fread, you're at EOF when fread returns a size_
that's 0 or smaller than nitems, or feof() returns true.
That's not quite the whole story.
If you're using fread(), you're at EOF when fread() returns 0, *and*
feof() returns true. It can return 0 with feof() false, for instance
if there is a read error in the middle of a file, in which case
ferror() will be true instead; in that case, you haven't finished
reading the file. I suspect a lot of programs (probably including a
number of mine) think that they've finished reading in that case,
though they certainly shouldn't.
Additionally, both fread() and NSFileHandle can return less than the
amount requested if the underlying fd is a communications channel
rather than a file, even if there will be more data to follow. The
likelihood of that situation may vary from application to application,
but it might be better to explicitly check for *zero* bytes returned,
rather than less-than-expected, since the extra read is (AFAIK)
harmless.
Kind regards,
Alastair.
--
http://alastairs-place.net
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden