ARCHIVE\_ENTRY(3) Library Functions Manual ARCHIVE\_ENTRY(3)

# [NAME](#NAME)

`archive_entry_clear`, `archive_entry_clone`, `archive_entry_free`, `archive_entry_new` — functions for managing archive entry descriptions

# [LIBRARY](#LIBRARY)

Streaming Archive Library (libarchive, -larchive)

# [SYNOPSIS](#SYNOPSIS)

`#include <archive_entry.h>`

`struct archive_entry *`  
`archive_entry_clear`(`struct archive_entry *`);

`struct archive_entry *`  
`archive_entry_clone`(`struct archive_entry *`);

`void`  
`archive_entry_free`(`struct archive_entry *`);

`struct archive_entry *`  
`archive_entry_new`(`void`);

# [DESCRIPTION](#DESCRIPTION)

These functions create and manipulate data objects that represent entries within an archive. You can think of a struct archive\_entry as a heavy-duty version of struct stat: it includes everything from struct stat plus associated pathname, textual group and user names, etc. These objects are used by [libarchive(3)](/man/os/libarchive/libarchive.3) to represent the metadata associated with a particular entry in an archive.

## [Create and Destroy](#Create_and_Destroy)

There are functions to allocate, destroy, clear, and copy `archive_entry` objects:

[`archive_entry_clear`](#archive_entry_clear)()

Erases the object, resetting all internal fields to the same state as a newly-created object. This is provided to allow you to quickly recycle objects without thrashing the heap.

[`archive_entry_clone`](#archive_entry_clone)()

A deep copy operation; all text fields are duplicated.

[`archive_entry_free`](#archive_entry_free)()

Releases the struct archive\_entry object.

[`archive_entry_new`](#archive_entry_new)()

Allocate and return a blank struct archive\_entry object.

## [Function groups](#Function_groups)

Due to high number of functions, the accessor functions can be found in man pages grouped by the purpose.

[archive\_entry\_acl(3)](/man/os/libarchive/archive_entry_acl.3)

Access Control List manipulation

[archive\_entry\_paths(3)](/man/os/libarchive/archive_entry_paths.3)

Path name manipulation

[archive\_entry\_perms(3)](/man/os/libarchive/archive_entry_perms.3)

User, group and mode manipulation

[archive\_entry\_stat(3)](/man/os/libarchive/archive_entry_stat.3)

Functions not in the other groups and copying to/from `struct stat`.

[archive\_entry\_time(3)](/man/os/libarchive/archive_entry_time.3)

Time field manipulation

Most of the functions set or read entries in an object. Such functions have one of the following forms:

[`archive_entry_set_XXXX`](#archive_entry_set_XXXX)()

Stores the provided data in the object. In particular, for strings, the pointer is stored, not the referenced string.

[`archive_entry_copy_XXXX`](#archive_entry_copy_XXXX)()

As above, except that the referenced data is copied into the object.

[`archive_entry_XXXX`](#archive_entry_XXXX)()

Returns the specified data. In the case of strings, a const-qualified pointer to the string is returned.

String data can be set or accessed as wide character strings or normal `char` strings. The functions that use wide character strings are suffixed with `_w`. Note that these are different representations of the same data: For example, if you store a narrow string and read the corresponding wide string, the object will transparently convert formats using the current locale. Similarly, if you store a wide string and then store a narrow string for the same data, the previously-set wide string will be discarded in favor of the new data.

# [SEE ALSO](#SEE_ALSO)

[archive\_entry\_acl(3)](/man/os/libarchive/archive_entry_acl.3), [archive\_entry\_paths(3)](/man/os/libarchive/archive_entry_paths.3), [archive\_entry\_perms(3)](/man/os/libarchive/archive_entry_perms.3), [archive\_entry\_time(3)](/man/os/libarchive/archive_entry_time.3), [libarchive(3)](/man/os/libarchive/libarchive.3)

# [HISTORY](#HISTORY)

The `libarchive` library first appeared in FreeBSD 5.3.

# [AUTHORS](#AUTHORS)

The `libarchive` library was written by Tim Kientzle ⟨kientzle@acm.org⟩.

February 2, 2012 Linux 4.19.0-gvisor

---

Document: archive_entry(3) from libarchive 3.8.9-r2 (Chainguard OS)
Source: https://github.com/libarchive/libarchive
