<!DOCTYPE html>
<html>
<!-- This is an automatically generated file.  Do not edit.
   zip_error_get.mdoc -- get error codes for archive or file
   Copyright (C) 2004-2017 Dieter Baron and Thomas Klausner
  
   This file is part of libzip, a library to manipulate ZIP archives.
   The authors can be contacted at <libzip@nih.at>
  
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions
   are met:
   1. Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
   2. Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in
      the documentation and/or other materials provided with the
      distribution.
   3. The names of the authors may not be used to endorse or promote
      products derived from this software without specific prior
      written permission.
  
   THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
   OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
   IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
   IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   -->
<head>
  <meta charset="utf-8"/>
  <link rel="stylesheet" href="../nih-man.css" type="text/css" media="all"/>
  <title>ZIP_ERROR_GET(3)</title>
</head>
<body>
<table class="head">
  <tr>
    <td class="head-ltitle">ZIP_ERROR_GET(3)</td>
    <td class="head-vol">Library Functions Manual</td>
    <td class="head-rtitle">ZIP_ERROR_GET(3)</td>
  </tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<code class="Nm">zip_error_get</code>,
  <code class="Nm">zip_file_error_get</code> &#x2014;
<div class="Nd">get error codes for archive or file (obsolete interface)</div>
</section>
<section class="Sh">
<h1 class="Sh" id="LIBRARY"><a class="permalink" href="#LIBRARY">LIBRARY</a></h1>
libzip (-lzip)
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<code class="In">#include &lt;<a class="In">zip.h</a>&gt;</code>
<p class="Pp"><var class="Ft">void</var>
  <br/>
  <code class="Fn">zip_error_get</code>(<var class="Fa" style="white-space: nowrap;">zip_t
    *archive</var>, <var class="Fa" style="white-space: nowrap;">int *zep</var>,
    <var class="Fa" style="white-space: nowrap;">int *sep</var>);</p>
<p class="Pp"><var class="Ft">void</var>
  <br/>
  <code class="Fn">zip_file_error_get</code>(<var class="Fa" style="white-space: nowrap;">zip_file_t
    *file</var>, <var class="Fa" style="white-space: nowrap;">int *zep</var>,
    <var class="Fa" style="white-space: nowrap;">int *sep</var>);</p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
The functions <code class="Fn">zip_error_get</code>() and
  <code class="Fn">zip_file_error_get</code>() are deprecated. Use
  <a class="Xr" href="zip_error_code_system.html">zip_error_code_system(3)</a>,
  <a class="Xr" href="zip_error_code_zip.html">zip_error_code_zip(3)</a>,
  <a class="Xr" href="zip_file_get_error.html">zip_file_get_error(3)</a>, and
  <a class="Xr" href="zip_get_error.html">zip_get_error(3)</a> instead.
<p class="Pp">For <code class="Fn">zip_error_get</code>(), replace</p>
<div class="Bd Pp Bd-indent">
<pre>
int ze, se;
zip_error_get(za, &amp;ze, &amp;se);
</pre>
</div>
with
<div class="Bd Pp Bd-indent">
<pre>
int ze, se;
zip_error_t *error = zip_get_error(za);
ze = zip_error_code_zip(error);
se = zip_error_code_system(error);
</pre>
</div>
For <code class="Fn">zip_file_error_get</code>(), replace
<div class="Bd Pp Bd-indent">
<pre>
int ze, se;
zip_file_error_get(zf, &amp;ze, &amp;se);
</pre>
</div>
with
<div class="Bd Pp Bd-indent">
<pre>
int ze, se;
zip_error_t *error = zip_file_get_error(zf);
ze = zip_error_code_zip(error);
se = zip_error_code_system(error);
</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
  ALSO</a></h1>
<a class="Xr" href="libzip.html">libzip(3)</a>,
  <a class="Xr" href="zip_error_code_system.html">zip_error_code_system(3)</a>,
  <a class="Xr" href="zip_error_code_zip.html">zip_error_code_zip(3)</a>,
  <a class="Xr" href="zip_file_get_error.html">zip_file_get_error(3)</a>,
  <a class="Xr" href="zip_get_error.html">zip_get_error(3)</a>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<code class="Fn">zip_error_get</code>() was added in libzip 0.6. It was
  deprecated in libzip 1.0, use <code class="Fn">zip_get_error</code>(),
  <code class="Fn">zip_error_code_zip</code>(), /
  <code class="Fn">zip_error_code_system</code>() instead.
<p class="Pp"><code class="Fn">zip_file_error_get</code>() was added in libzip
    0.6. It was deprecated in libzip 1.0, use
    <code class="Fn">zip_file_get_error</code>(),
    <code class="Fn">zip_error_code_zip</code>(), /
    <code class="Fn">zip_error_code_system</code>() instead.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<span class="An">Dieter Baron</span>
  &lt;<a class="Mt" href="mailto:dillo@nih.at">dillo@nih.at</a>&gt; and
  <span class="An">Thomas Klausner</span>
  &lt;<a class="Mt" href="mailto:tk@giga.or.at">tk@giga.or.at</a>&gt;
</section>
</div>
<table class="foot">
  <tr>
    <td class="foot-date">December 18, 2017</td>
    <td class="foot-os">NiH</td>
  </tr>
</table>
</body>
</html>
