LIBZIP(3) | Library Functions Manual | LIBZIP(3)

# NAME

`libzip` —
library for manipulating zip archives

# LIBRARY

libzip (-lzip)

# SYNOPSIS

`#include <zip.h>`

# DESCRIPTION

`libzip` is a library for reading, creating, and modifying zip archives.

The main design criteria for `libzip` were:

- Do not create corrupt files, even in case of errors.
- Do not delete data.
- Be efficient.

For this reason, when modifying zip archives, `libzip` writes to a temporary file and replaces the original zip archive atomically.

Below there are two sections listing functions: one for how to read from zip archives and one for how to create/modify them.

# FILE NAMES

## Encoding

Names of files in the host file system are expected in UTF-8 encoding. On Windows, variants for ASCII and UTF-16 are also available.

Names of files inside archives are by default expected in UTF-8 encoding. Other encodings can be requested by using the flags `ZIP_FL_ENC_CP437` and `ZIP_FL_ENC_RAW`.

For details see the relevant man pages.

## Directory Separator

The zip format requires the use of forward slash (‘/’) as directory separator. Since backslash (‘\’) can be part of a valid file name on Unix systems, `libzip` does not automatically convert them, even on Windows. It is the responsibility of the programmer to ensure that all directory separators are passed as forward slashes to `libzip`.

# THREAD SAFETY

In general, different zip archives opened by `libzip` are independent of each other and can be used by parallel-running threads without locking. If you want to use an archive from multiple threads, you have to synchronize access to it yourself. If you use an archive as a source for zip_file_add(3) or zip_file_replace(3), access to the target archive must be synchronized with access to the source archive as well.

# READING ZIP ARCHIVES

## Open Archive

- zip_open(3)
- zip_fdopen(3)

## Find Files

- zip_name_locate(3)

## Read Files

- zip_fopen(3)
- zip_fopen_encrypted(3)
- zip_fopen_index(3)
- zip_fopen_index_encrypted(3)
- zip_fread(3)
- zip_file_is_seekable(3)
- zip_fseek(3) (uncompressed files only)
- zip_ftell(3)
- zip_fclose(3)

## Close Archive

- zip_close(3)

## Miscellaneous

- zip_stat(3)
- zip_compression_method_supported(3)
- zip_encryption_method_supported(3)
- zip_file_get_comment(3)
- zip_file_get_external_attributes(3)
- zip_get_archive_comment(3)
- zip_get_archive_flag(3)
- zip_get_name(3)
- zip_get_num_entries(3)
- zip_set_default_password(3)

# CREATING/MODIFYING ZIP ARCHIVES

## Create/Open Archive

- zip_open(3)

## Add/Change Files and Directories

- zip_dir_add(3)
- zip_file_add(3)
- zip_file_replace(3)
- zip_file_set_comment(3)
- zip_file_set_dostime(3)
- zip_file_set_external_attributes(3)
- zip_file_set_encryption(3)
- zip_file_set_mtime(3)
- zip_set_file_compression(3)
- zip_source_buffer(3)
- zip_source_file(3)
- zip_source_filep(3)
- zip_source_free(3)
- zip_source_function(3)
- zip_source_zip(3)

## Rename Files

- zip_rename(3)

## Delete Files

- zip_delete(3)

## Revert Changes

- zip_unchange(3)
- zip_unchange_all(3)
- zip_unchange_archive(3)

## Read/Modify Extra Fields

- zip_file_extra_field_by_id(3)
- zip_file_extra_field_delete(3)
- zip_file_extra_field_delete_by_id(3)
- zip_file_extra_field_get(3)
- zip_file_extra_field_set(3)
- zip_file_extra_fields_count(3)
- zip_file_extra_fields_count_by_id(3)

## Close Archive (Writing)

- zip_close(3)
- zip_discard(3)

## Miscellaneous (Writing)

- zip_file_attributes_init(3)
- zip_libzip_version(3)
- zip_register_cancel_callback_with_state(3)
- zip_register_progress_callback_with_state(3)
- zip_set_archive_comment(3)
- zip_set_archive_flag(3)
- zip_source(3)

# ERROR HANDLING

- zip_error_strerror(3)
- zip_strerror(3)
- zip_file_strerror(3)
- zip_file_get_error(3)
- zip_get_error(3)
- zip_error_init_with_code(3)
- zip_error_system_type(3)
- zip_errors(3)

# AUTHORS

Dieter Baron <dillo@nih.at> and Thomas Klausner <tk@giga.or.at>

June 18, 2022 | NiH