ZIP_SOURCE_BUFFER_FRAGMENT(3) | Library Functions Manual | ZIP_SOURCE_BUFFER_FRAGMENT(3)

# NAME

`zip_source_buffer_fragment`, `zip_source_buffer_fragment_create` — create zip data source from multiple buffer

# LIBRARY

libzip (-lzip)

# SYNOPSIS

`#include <zip.h>`

zip_source_t *
`zip_source_buffer_fragment`(zip_t *archive, zip_buffer_fragment_t *fragments, zip_uint64_t nfragments, int freep);

zip_source_t *
`zip_source_buffer_fragment_create`(zip_buffer_fragment_t *fragments, zip_uint64_t nfragments, int freep, zip_error_t *error);

# DESCRIPTION

The functions `zip_source_buffer_fragment`() and `zip_source_buffer_fragment_create`() create a zip source from the data in fragments. nfragments specifies the number of fragments. If freep is non-zero, the data will be freed when it is no longer needed.

    struct zip_stat {
        zip_uint8_t *data;    /* pointer to the actual data */
        zip_uint64_t length;  /* length of this fragment */
    };

The data fragments point to must remain valid for the lifetime of the created source. fragments itself can be discarded once the source is created.

The source can be used to open a zip archive from.

# RETURN VALUES

Upon successful completion, the created source is returned. Otherwise, `NULL` is returned and the error code in archive or error is set to indicate the error.

# ERRORS

`zip_source_buffer`() and `zip_source_buffer_create`() fail if:

[`ZIP_ER_INVAL`]
  nfragments is greater than zero and fragments is `NULL`.
[`ZIP_ER_MEMORY`]
  Required memory could not be allocated.

# SEE ALSO

libzip(3), zip_file_add(3), zip_file_replace(3), zip_open_from_source(3), zip_source(5)

# HISTORY

`zip_source_buffer_fragment`() and `zip_source_buffer_fragment_create`() were added in libzip 1.4.0.

# AUTHORS

Dieter Baron <dillo@nih.at> and Thomas Klausner <wiz@gatalith.at>

December 18, 2017 | NiH