Provided by: libgetdata-dev_0.7.3-6_i386 bug


       gd_add, gd_madd — add a field to a dirfile


       #include <getdata.h>

       int gd_add(DIRFILE *dirfile, const gd_entry_t *entry);

       int gd_madd(DIRFILE *dirfile, const gd_entry_t *entry, const char


       The gd_add() function adds the field described by entry to the  dirfile
       specified  by  dirfile.   The gd_madd() function behaves similarly, but
       adds the field as a metafield under the field indicated  by  the  field
       code parent.

       The  form  of entry is described in detail on the gd_entry(3) man page.
       All relevant members of entry for the  field  type  specified  must  be
       properly  initialised.  If entry specifies a CONST or CARRAY field, the
       field's data will be set to zero.  If entry specifies a  STRING  field,
       the field data will be set to the empty string.

       When  adding  a  metafield, the entry->field member should contain just
       the metafield's name, not the fully formed  <parent-field>/<meta-field>
       field     code.     Also,    gd_madd()    ignores    the    value    of
       entry->fragment_index, and instead adds the new meta field to the  same
       format specification fragment in which the parent field is defined.

       Fields  added with this interface may contain either literal parameters
       or  parameters  based  on  scalar  fields.   If  an  element   of   the
       entry->scalar  array  defined for the specified field type is non-NULL,
       this  element  will  be  used  as  the  scalar  field  code,  and   the
       corresponding  numerical  member  will  be  ignored,  and  need  not be
       initialised.  Conversely, if numerical  parameters  are  intended,  the
       corresponding  entry->scalar  elements should be set to NULL.  If using
       an element of a CARRAY field, entry->scalar_ind should also be set.


       On success, gd_add() and gd_madd()  return  zero.    On  error,  -1  is
       returned  and  the  dirfile  error  is  set  to a non-zero error value.
       Possible error values are:

               The specified dirfile was opened read-only.

               The library was unable to allocate memory.

               The field  name  provided  in  entry->field  contained  invalid
               characters.  Alternately,  the parent field code was not found,
               or was already a metafield.

               The supplied dirfile was invalid.

               There was an error in the specification of the field  described
               by entry, or the caller attempted to add a field of type RAW as
               a metafield.

               The entry->fragment_index parameter was out of range.

               The entry->data_type parameter provided with a  RAW  entry,  or
               the entry->const_type parameter provided with a CONST or CARRAY
               entry, was invalid.

               The entry->array_len parameter provided with a CARRAY entry was
               greater than GD_MAX_CARRAY_LENGTH.

               The  field  name provided in entry->field duplicated that of an
               already existing field.

               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 developers.

               The metadata of the fragment was protected  from  change.   Or,
               the  creation  of a RAW field was attempted and the data of the
               fragment was protected.

               An I/O error occurred while creating an empty binary file to be
               associated with a newly added RAW field.

               The  encoding  scheme  of  the  indicated  format specification
               fragment is not known to the library.  As a result, the library
               was unable to create an empty binary file to be associated with
               a newly added RAW field.

               The encoding  scheme  of  the  indicated  format  specification
               fragment  does  not support creating an empty binary file to be
               associated with a newly added RAW field.

       The  dirfile  error  may  be  retrieved  by  calling  gd_error(3).    A
       descriptive error string for the last error encountered can be obtained
       from a call to gd_error_string(3).


       GetData artifically limits the number of elements in a  CARRAY  to  the
       value of the symbol GD_MAX_CARRAY_LENGTH defined in getdata.h.  This is
       done to be certain that the CARRAY won't overrun the line when  flushed
       to  disk.  On a 32-bit system, this number is 2**24.  It is larger on a
       64-bit system.


       gd_add_bit(3),  gd_add_carray(3),  gd_add_const(3),   gd_add_divide(3),
       gd_add_lincom(3),         gd_add_linterp(3),        gd_add_multiply(3),
       gd_add_phase(3),  gd_add_polynom(3),  gd_add_raw(3),   gd_add_recip(3),
       gd_add_sbit(3),    gd_add_spec(3),    gd_add_string(3),    gd_entry(3),
       gd_error(3),  gd_error_string(3),  gd_madd_bit(3),   gd_madd_carray(3),
       gd_madd_const(3),         gd_madd_divide(3),         gd_madd_lincom(3),
       gd_madd_linterp(3),       gd_madd_multiply(3),        gd_madd_phase(3),
       gd_madd_polynom(3), gd_madd_recip(3), gd_madd_sbit(3), gd_madd_spec(3),
       gd_madd_string(3), gd_metaflush(3), gd_open(3), dirfile-format(5)