Provided by: libgetdata-doc_0.10.0-5build2_all bug


       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


       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 library was unable to allocate memory.

               The  field  specified  by field_code or one of the fields it uses as input was not
               found in the database.

               The supplied dirfile was invalid.

               The location of the non-existent end-of-field marker for the special  field  INDEX
               was  requested,  possibly  as  a result of the field specified by field_code using
               INDEX as one of its inputs.

               A scalar field was found where a vector field was expected in  the  definition  of
               field_code  or  one  of  its  inputs, or else field_code itself specified a scalar

               An internal error occurred in the library while trying to perform the task.   This
               indicates  a  bug  in  the  library.   Please  report  the incident to the GetData

       GD_E_IO An I/O error occurred while deterimining the size of the raw data file  associated
               with the field, or one of its input fields.

               Too  many levels of recursion were encountered while trying to resolve field_code.
               This usually indicates  a  circular  dependency  in  field  specification  in  the

               The  size  of  the decoded data file associated with the specified field or one of
               its  inputs  could  not  be  determined,  because  its  encoding  scheme  was  not

               The  size  of  the decoded data file associated with the specified field or one of
               its inputs could not be determined, because its encoding scheme was not supported.

       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),