gd_eof—find the end of a Dirfile field
#include <getdata.h>
off_t gd_eof(DIRFILE *dirfile, const char *field_code);
The gd_eof() function queries a dirfile(5) database specified by dirfile and determines the sample number of the end-of-field marker for the vector field given by field_code. This is effectively the total number of samples available for the field, including any frame offset.
The caller should not assume that this is equivalent (when accounting for the samples-per-frame of the indicated field) to the number of frames in the database returned by gd_nframes(3), nor even that the end-of-field marker falls on a frame boundary.
For a RAW field, the end-of-field marker occurs immediately after the last datum in the data file associated with the field. The special field INDEX has no end-of-field marker.
The end-of-field of a PHASE field is the end-of-field of its input adjusted by the PHASE field's shift. For other vector field types, the end-of-field marker is the smallest end-of-field marker of any of its inputs.
If the end-of-field marker for a field is less than or equal to its beginning-of-field marker (see gd_bof(3)), then that field has no data. For a RAW field, the difference between the beginning- and end-of-field markers indicates the number of samples of data actually stored on disk.
The dirfile argument must point to a valid DIRFILE object previously created by a call to gd_open(3).
Upon successful completion, gd_eof() returns the sample number of the end-of-field marker for the indicated field, which is never negative. On error, it returns a negative-valued error code. Possible error codes are:
The error code is also stored in the DIRFILE object and may be retrieved after this function returns by calling gd_error(3). A descriptive error string for the error may be obtained by calling gd_error_string(3).
The gd_eof() function appeared in GetData-0.7.0.
In GetData-0.10.0, the error return from this function changed from −1 to a negative-valued error code.
gd_bof(3), gd_error(3), gd_error_string(3), gd_nframes(3), gd_open(3), dirfile(5), dirfile-encoding(5)