NAME¶
gd_rewrite_fragment — re-write a dirfile format specification fragment
SYNOPSIS¶
#include <getdata.h>
int gd_rewrite_fragment(DIRFILE *dirfile, int
fragment);
DESCRIPTION¶
The
gd_rewrite_fragment() writes the format specification fragment
specified by
fragment to disk, regardless of whether it has changed or
not, overwriting the existing file.
In addition to being simply a valid fragment index,
fragment may also be
the special value
GD_ALL_FRAGMENTS, which indicates that all fragments
should be rewritten.
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_ACCMODE
- The supplied dirfile was opened in read-only mode.
- GD_E_BAD_DIRFILE
- The supplied dirfile was invalid.
- GD_E_BAD_INDEX
- The supplied fragment index was out of range.
- 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_metaflush(3)