gd_flush - Man Page

write all pending Dirfile changes to disk or close open raw fields

Synopsis

#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);

Description

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.

Return Value

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

GD_E_ALLOC

The library was unable to allocate memory.

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_IO

An I/O error occurred while trying to write modified data or metadata to disk.

GD_E_LINE_TOO_LONG

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 2**31 bytes, so this typically indicates something pathological happening.

GD_E_RECURSE_LEVEL

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

History

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.

See Also

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

Referenced By

dirfile-encoding(5), gd_close(3), gd_flags(3), gd_getdata(3), gd_metaflush(3), gd_open(3), gd_open_limit(3), gd_rewrite_fragment(3).

The man pages gd_raw_close(3) and gd_sync(3) are aliases of gd_flush(3).

25 December 2016 Version 0.10.0 GETDATA