Provided by: libgetdata-doc_0.11.0-4_all bug


       gd_alter_spec, gd_malter_spec — modify a field in a Dirfile


       #include <getdata.h>

       int gd_alter_spec(DIRFILE *dirfile, const char *line, int recode);

       int gd_malter_spec(DIRFILE *dirfile, const char *line, const char *parent, int recode);


       The  gd_alter_spec() function modifies the field described by the field specification line
       in line to the dirfile  specified  by  dirfile.   The  gd_malter_spec()  function  behaves
       similarly,  but modifies the metafield under the field indicated by the field code parent.
       Field specification lines are described in detail in dirfile-format(5).

       The name of the field to be modified, which must already exist, will be obtained from  the
       field  specification  line.   When  adding  a  metafield, line should only contain a field
       specification, and not a /META directive.

       If the modified field is of type RAW and the recode argument is non-zero, the binary  file
       associated  with  the  field  will  be converted for changes in data type and samples-per-
       frame.  In this case, the field's I/O pointer will be reset to the beginning-of-frame.  If
       recode is zero, no binary file conversion will take place.

       If  the modified field is of type LINTERP and the recode argument is non-zero, the look-up
       table file will be moved if line specifies a different path, overwriting an existing  file
       with  the new pathname, if present.  If the field specified by field_code is of type other
       than RAW or LINTERP, the recode argument is ignored.

       Passing these functions a directive line instead of a field specification line will result
       in  a  syntax  error.  These functions never call the registered parser callback function,
       even if line contains a syntax error.


       On success, gd_alter_spec() and gd_malter_spec() return zero.   On  error,  it  returns  a
       negative-valued error code.  Possible error codes are:

               The specified dirfile was opened read-only.

               The library was unable to allocate memory.

               The field specified in line was not found, or the parent field code was not found.

               The supplied dirfile was invalid.

               A syntax error was encountered in line.

       GD_E_IO An I/O error occurred while translating the binary file associated with a modified
               RAW field, or an I/O error occurred while attempting to  rename  a  LINTERP  table

               The  supplied line was longer than the parser was able to deal with.  Line lengths
               are limited by the storage size of size_t.

               The metadata of the  fragment  was  protected  from  change.   Or,  a  request  to
               translate  the binary file associated with a RAW field was attempted, but the data
               of the fragment was protected.

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

               The encoding scheme of  the  indicated  format  specification  fragment  does  not
               support translating the empty binary file associated with a modified RAW field.

       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 functions dirfile_alter_spec() and dirfile_malter_spec() appeared in GetData-0.5.0.

       In GetData-0.7.0, these functions were renamed to gd_alter_spec() and gd_malter_spec.()

       In  GetData-0.10.0,  the  error return from these functions changed from -1 to a negative-
       valued error code.


       Any of the  gd_alter_<entry-type>  functions  (e.g.,  gd_alter_bit(3)),  gd_alter_spec(3),
       gd_error(3), gd_error_string(3), gd_metaflush(3), gd_open(3), dirfile-format(5)