gd_add_spec3
Add a field to a dirfile
Usage
#include <getdata.h>
int gd_add_spec(DIRFILE *dirfile, const char *line, int fragment_index);
int gd_madd_spec(DIRFILE *dirfile, const char *line, const char *parent);
Overview
The gd_add_spec() function adds the field described by the field specification line in line to the dirfile specified by dirfile. The gd_madd_spec() function behaves similarly, but adds the field as a metafield under the field indicated by the field parent. Field specification lines are described in detail in dirfile-format(5). Since Standards Version 7 (see dirfile(5)) permits specifying metafield without the use of the /META directive, gd_add_spec() may also be used to add metafields, by specifying the metafield's full field code. See dirfile-format(5) for full details.
When using gd_madd_spec(), line should only contain a field specification, and not a /META directive.
Passing these functions a directive line instead of a field specification line will result in a syntax error. These functions never call the registered parser callback function, even if line contains a syntax error.
Return value
On success, gd_add_spec() and gd_madd_spec() return zero. On error, a negative-valued error code is returned. Possible error codes are:
.TP 8 GD_E_ACCMODE The specified dirfile was opened read-only.
.TP 8 GD_E_ALLOC The library was unable to allocate memory.
.TP 8 GD_E_BAD_CODE The parent field code was not found, or was already a metafield.
.TP 8 GD_E_BAD_DIRFILE The supplied dirfile was invalid.
.TP 8 GD_E_BAD_INDEX The fragment_index argument was out of range.
.TP 8 GD_E_FORMAT A syntax error was encountered in line.
.TP 8 GD_E_IO An I/O error occurred while creating an empty binary file to be associated with a newly added RAW field.
.TP 8 GD_E_LINE_TOO_LONG The supplied line was longer than the parser was able to deal with. Line lengths are limited by the storage size of size_t.
.TP 8 GD_E_PROTECTED The metadata of the fragment was protected from change. Or, the creation of a RAW field was attempted and the data of the fragment was protected.
.TP 8 GD_E_UNKNOWN_ENCODING The encoding scheme of the indicated format specification fragment is not known to the library. As a result, the library was unable to create an empty binary file to be associated with a newly added RAW field.
.TP 8 GD_E_UNSUPPORTED The encoding scheme of the indicated format specification fragment does not support creating an empty binary file to be associated with a newly added RAW field.
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).
Releases
7 releases since Debian 7 (Wheezy); the text changed 2 times.