---
name: "gd_metaflush"
section: "3"
platform: "linux"
package: "libgetdata-doc"
version: "0.11.0-15"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/gd_metaflush"
---

# gd\_metaflush(3)

write modified Dirfile metadata to disk

## 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)](/gd_dirfile_standards/3.md) 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\_sync**(3)](/gd_sync/3.md) instead.

## RETURN VALUE

On success, zero is returned.  On error, a negative-valued error code is returned.  Possible error codes are:\
  .TP 8 **GD\_E\_ACCMODE** The supplied dirfile was opened in read-only mode.\
  .TP 8 **GD\_E\_ALLOC** The library was unable to allocate memory.\
  .TP 8 **GD\_E\_BAD\_DIRFILE** The supplied dirfile was invalid.\
  .TP 8 **GD\_E\_IO** An I/O error occurred while trying to write modified metadata to disk.\
  .TP 8 **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.

The error code is also stored in the **DIRFILE** object and may be retrieved after this function returns by calling [**gd\_error**(3)](/gd_error/3.md). A descriptive error string for the error may be obtained by calling [**gd\_error\_string**(3)](/gd_error_string/3.md).

## NOTES

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.

## HISTORY

The **dirfile\_metaflush**() function appeared in GetData-0.4.0.

In GetData-0.7.0, this function was renamed to **gd\_metaflush**().

in GetData-0.10.0, the error return from this function changed from -1 to a negative-valued error code.

## SEE ALSO

[**gd\_close**(3)](/gd_close/3.md), [**gd\_dirfile\_standards**(3)](/gd_dirfile_standards/3.md), [**gd\_error**(3)](/gd_error/3.md), [**gd\_error\_string**(3)](/gd_error_string/3.md), [**gd\_open**(3)](/gd_open/3.md), [**gd\_rewrite\_fragment**(3)](/gd_rewrite_fragment/3.md), [**gd\_sync**(3)](/gd_sync/3.md)
