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

# gd\_rewrite\_fragment(3)

re-write a Dirfile format specification fragment

## 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)](/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.

## 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\_BAD\_INDEX** The supplied fragment index was out of range.\
  .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).

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

## HISTORY

The **gd\_rewrite\_fragment**() function appeared in GetData-0.7.0.

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\_flush**(3)](/gd_flush/3.md), [**gd\_metaflush**(3)](/gd_metaflush/3.md), [**gd\_open**(3)](/gd_open/3.md)
