<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="../nih-man.css" type="text/css" media="all"/>
<title>ZIP_SOURCE(5)</title>
</head>
<body>
<table class="head">
<tr>
<td class="head-ltitle">ZIP_SOURCE(5)</td>
<td class="head-vol">File Formats Manual</td>
<td class="head-rtitle">ZIP_SOURCE(5)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">zip_source</code> — <span class="Nd">zip
data source structure</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
<p class="Pp">libzip (-lzip)</p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp"><code class="In">#include
<<a class="In">zip.h</a>></code></p>
<p class="Pp"><var class="Vt">zip_source_t *source</var>;</p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">A <var class="Vt">zip_source_t</var> represents a data source (or
destination when used for writing).
<a class="Xr" href="libzip.html">libzip(3)</a> uses it for adding or
replacing file contents for a file in a zip archive. If the source supports
seeking, it can also be used to open zip archives from.</p>
<p class="Pp">Data can come from a file on disk
(<a class="Xr" href="zip_source_file.html">zip_source_file(3)</a>,
<a class="Xr" href="zip_source_file_create.html">zip_source_file_create(3)</a>,
<a class="Xr" href="zip_source_filep.html">zip_source_filep(3)</a>, or
<a class="Xr" href="zip_source_filep_create.html">zip_source_filep_create(3)</a>),
memory
(<a class="Xr" href="zip_source_buffer.html">zip_source_buffer(3)</a>,
<a class="Xr" href="zip_source_buffer_create.html">zip_source_buffer_create(3)</a>,
<a class="Xr" href="zip_source_buffer_fragment.html">zip_source_buffer_fragment(3)</a>,
or
<a class="Xr" href="zip_source_buffer_fragment_create.html">zip_source_buffer_fragment_create(3)</a>),
a file inside an archive
(<a class="Xr" href="zip_source_zip.html">zip_source_zip(3)</a>), or
provided via a callback function
(<a class="Xr" href="zip_source_function.html">zip_source_function(3)</a> or
<a class="Xr" href="zip_source_function_create.html">zip_source_function_create(3)</a>).
<a class="Xr" href="zip_source_window.html">zip_source_window(3)</a> or
<a class="Xr" href="zip_source_window_create.html">zip_source_window_create(3)</a>
can be used restrict access to a part of the contained data.</p>
<p class="Pp">It can also be used as a filter to process the data provided by an
underlying <var class="Vt">zip_source_t</var> (e.g., to compress it or
compute a checksum), created with
<a class="Xr" href="zip_source_layered.html">zip_source_layered(3)</a> or
<a class="Xr" href="zip_source_layered_create.html">zip_source_layered_create(3)</a>).</p>
<p class="Pp">Sources are freed with
<a class="Xr" href="zip_source_free.html">zip_source_free(3)</a>.</p>
<p class="Pp">Sources must support reading, and can optionally support seeking
and writing.</p>
<p class="Pp"><var class="Vt">zip_source_t</var> is reference counted, and
created with a reference count of 1.
<a class="Xr" href="zip_open_from_source.html">zip_open_from_source(3)</a>,
<a class="Xr" href="zip_file_add.html">zip_file_add(3)</a>, and
<a class="Xr" href="zip_file_replace.html">zip_file_replace(3)</a> will take
ownership of the passed source (decrement the reference count when they are
done using it), so
<a class="Xr" href="zip_source_free.html">zip_source_free(3)</a> only needs
to be called when these functions return an error. The underlying data (file
or buffer) must remain valid until the archive is closed. Use
<a class="Xr" href="zip_source_keep.html">zip_source_keep(3)</a> to increase
the reference count, for example if you need the source after
<a class="Xr" href="zip_close.html">zip_close(3)</a>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
ALSO</a></h1>
<p class="Pp"><a class="Xr" href="libzip.html">libzip(3)</a>,
<a class="Xr" href="zip_source_buffer.html">zip_source_buffer(3)</a>,
<a class="Xr" href="zip_source_file.html">zip_source_file(3)</a>,
<a class="Xr" href="zip_source_filep.html">zip_source_filep(3)</a>,
<a class="Xr" href="zip_source_free.html">zip_source_free(3)</a>,
<a class="Xr" href="zip_source_function.html">zip_source_function(3)</a>,
<a class="Xr" href="zip_source_keep.html">zip_source_keep(3)</a>,
<a class="Xr" href="zip_source_window.html">zip_source_window(3)</a>,
<a class="Xr" href="zip_source_zip.html">zip_source_zip(3)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp"><span class="An">Dieter Baron</span>
<<a class="Mt" href="mailto:dillo@nih.at">dillo@nih.at</a>> and
<span class="An">Thomas Klausner</span>
<<a class="Mt" href="mailto:wiz@gatalith.at">wiz@gatalith.at</a>></p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">May 5, 2025</td>
<td class="foot-os">NiH</td>
</tr>
</table>
</body>
</html>