NAME¶
gd_flush — write all pending dirfile changes to disk.
SYNOPSIS¶
#include <getdata.h>
int gd_flush(DIRFILE *dirfile, const char
*field_code);
DESCRIPTION¶
The
gd_flush() function flushes and closes all file handles associated
with
field_code, or its input(s), in the dirfile specified by
dirfile. If the
field_code contains a valid representation
suffix, it will be ignored. As a special case, if
field_code is NULL,
all fields in
dirfile will be flushed and closed. In this special case,
modified metadata will also be flushed to disk as if
gd_metaflush(3)
had been called.
Metadata is written to disk using the current Standards Version as stored in the
dirfile object. See
gd_dirfile_standards(3) to change or report
the current Standards Version. If the dirfile metadata conforms to no known
Standards Version, a Standards non-compliant fragment will be written.
RETURN VALUE¶
On success, zero is returned. On error, -1 is returned and the dirfile error is
set to a non-zero error value. Possible error values are:
- GD_E_BAD_CODE
- The field specified by field_code was not found in the
database.
- GD_E_BAD_DIRFILE
- The supplied dirfile was invalid.
- GD_E_BAD_REPR
- The representation suffix specified in field_code was not
recognised.
- GD_E_FLUSH
- A temporary file could not be opened into which to write the modified
metadata, or renaming the temporary file over the original fragment
failed. Only returned when field_code is NULL.
- GD_E_RAW_IO
- An error occurred while trying to flush or close the field(s).
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).
SEE ALSO¶
gd_open(3),
gd_close(3),
gd_dirfile_standards(3),
gd_error(3),
gd_error_string(3),
gd_metaflush(3)