pack_feof() returns nonzero as soon as you reach the end of the file. It
does not wait for you to attempt to read beyond the end of the file,
contrary to the ISO C feof() function. The only way to know whether you
have read beyond the end of the file is to check the return value of the
read operation you use (and be wary of pack_*getl() as EOF is also a valid
return value with these functions).