gd_flush gd_raw_close gd_sync—write all pending Dirfile changes to disk or close open raw fields


#include <getdata.h>

int gd_flush(DIRFILE *dirfile, const char *field_code);

int gd_raw_close(DIRFILE *dirfile, const char *field_code);

int gd_sync(DIRFILE *dirfile, const char *field_code);


The gd_sync() function flushes all pending writes to disk of raw data files 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 NULL is passed to gd_sync() as field_code, all fields in dirfile will be flushed. In this special case, modified metadata will also be flushed to disk as if gd_metaflush(3) had been called. If the dirfile has been opened read-only, this function does nothing. Additionally, some encoding schemes may implement this as a NOP.

The gd_raw_close() function closes any raw data files which GetData has opened associated with field_code, or its input(s). Again, if field_code is NULL, all open data files are closed. The I/O pointer of any RAW field which is closed is reset to the beginning-of-field.

Calling gd_flush() is essentially equivalent to calling first gd_sync() and then gd_raw_close() (ie. it does both tasks), although, if field_code is NULL, the order of operations if may be different than making the two explicit calls.


On success, these functions return zero. On error, a negative-valued error code is returned. Possible error codes are:

The library was unable to allocate memory.
The field specified by field_code was not found in the database.
The supplied dirfile was invalid.
An I/O error occurred while trying to write modified data or metadata to disk.
While attempting to flush modified metadata to disk, a field specification line exceeded the maximum allowed length. On most platforms, the maximum length is at least 231 bytes, so this typically indicates something pathological happening.
Too many levels of recursion were encountered while trying to resolve field_code. This usually indicates a circular dependency in field specification in the dirfile.

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 dirfile_flush() function appeared in GetData-0.3.0.

In GetData-0.7.0, this function was renamed to gd_flush().

The gd_raw_close() and gd_sync() functions appeared in GetData-0.8.0.

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


gd_close(3), gd_dirfile_standards(3), gd_error(3), gd_error_string(3), gd_metaflush(3), gd_open(3)

Last updated on 25 December 2016 for GetData Version 0.10.0.