NAME¶
gd_metaflush — write modified dirfile metadata to disk
SYNOPSIS¶
#include <getdata.h>
int gd_metaflush(DIRFILE *dirfile);
DESCRIPTION¶
The
gd_metaflush() function flushes all pending metadata changes in the
dirfile specified by
dirfile to disk. This is accomplished by
re-writing the format specification fragments containing modified metadata
overwriting the existing files. Format file fragments which are unchanged are
not touched.
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.
This function flushes only metadata. To flush the field data as well, call
gd_flush(3) instead.
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_ACCMODE
- The supplied dirfile was opened in read-only mode.
- GD_E_BAD_DIRFILE
- The supplied dirfile was invalid.
- 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.
- GD_E_INTERNAL_ERROR
- 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 maintainer.
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).
BUGS¶
When writing metadata using Standards Version 4 or earlier, the reference field
may change, owing to the lack of a
/REFERENCE directive. A work-around
is to upgrade to Standards Version 5 or later.
SEE ALSO¶
gd_open(3),
gd_close(3),
gd_dirfile_standards(3),
gd_error(3),
gd_error_string(3),
gd_flush(3),
gd_rewrite_fragment(3)