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


       gd_move -- move a dirfile field between format specification fragments


       #include <getdata.h>

       int gd_move(DIRFILE *dirfile, const char *field_code, int new_fragment,
              int move_data);


       The gd_move() function transfers the  field  specified  by  field_code,
       which  should  not have a representation suffix, defined in the dirfile
       specified by dirfile from it's current format specification fragment to
       the fragment index by new_fragment.  If the field is already defined in
       the fragment index by new_fragment, this function does nothing.

       If the flag move_data is  non-zero,  and  field_code  specifies  a  RAW
       field,  the binary file associated with the field will be translated to
       account for the possibly  different  encoding,  endianness,  and  frame
       offset of the new format specification fragment.  It will also be moved
       to a new directory, if necessary.  If move_data  is  zero,  no  changes
       will  be  made  to the binary file.  If field_code specifies a field of
       type other than RAW, the move_data flag is ignored.

       If the  binary  file  is  translated,  and  the  frame  offset  of  the
       destination  fragment  is larger than that of the source fragment, this
       will result in permanent deletion of data from the  database.   If  the
       new  frame offset is smaller than the old frame offset, the binary file
       will be padded at the front with zeroes.


       On success, gd_move() returns zero.  On error, -1 is returned  and  the
       dirfile  error is set to a non-zero error value.  Possible error values

               The specified dirfile was opened read-only.

               The library was unable to allocate memory.

               The field specified by field_code was not found.

               The supplied dirfile was invalid.

               An attempt was made to move the immutable INDEX field.

               The  new_fragment  argument  did  not  index  a  valid   format
               specification fragment.

               The  metadata of the source or destination format specification
               fragments was protected from change, or the binary data of  the
               source  or  destination fragments was protected from change and
               binary file translation was requested.

               An I/O error occurred while attempting to  translate  a  binary

               The  encoding  scheme  of the source or destination fragment is

               The encoding scheme of the source or destination fragment  does
               not support binary file translation.

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


       A binary file translation occurs out-of-place.  As a result, sufficient
       space must be present on the filesystem for both the binary file before
       translation and the binary file after translation.


       gd_metaflush(3),     gd_open(3),    gd_error(3),    gd_error_string(3),
       dirfile(5), dirfile-format(5)