<!DOCTYPE html>
<html>
<!-- This is an automatically generated file.  Do not edit.
   zip_set_file_comment.mdoc -- set comment for file in zip
   Copyright (C) 2006-2017 Dieter Baron and Thomas Klausner
  
   This file is part of libzip, a library to manipulate ZIP files.
   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"/>
  <style>
    table.head, table.foot { width: 100%; }
    td.head-rtitle, td.foot-os { text-align: right; }
    td.head-vol { text-align: center; }
    div.Pp { margin: 1ex 0ex; }
  </style>
  <link rel="stylesheet" href="../nih-man.css" type="text/css" media="all"/>
  <title>ZIP_SET_FILE_COMMENT(3)</title>
</head>
<body>
<table class="head">
  <tr>
    <td class="head-ltitle">ZIP_SET_FILE_COMMENT(3)</td>
    <td class="head-vol">Library Functions Manual</td>
    <td class="head-rtitle">ZIP_SET_FILE_COMMENT(3)</td>
  </tr>
</table>
<div class="manual-text">
<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
<b class="Nm" title="Nm">zip_set_file_comment</b> &#x2014;
  <span class="Nd" title="Nd">set comment for file in zip (obsolete
  interface)</span>
<h1 class="Sh" title="Sh" id="LIBRARY"><a class="selflink" href="#LIBRARY">LIBRARY</a></h1>
libzip (-lzip)
<h1 class="Sh" title="Sh" id="SYNOPSIS"><a class="selflink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<b class="In" title="In">#include &lt;<a class="In" title="In">zip.h</a>&gt;</b>
<div class="Pp"></div>
<var class="Ft" title="Ft">int</var>
<br/>
<b class="Fn" title="Fn">zip_set_file_comment</b>(<var class="Fa" title="Fa" style="white-space: nowrap;">zip_t
  *archive</var>,
  <var class="Fa" title="Fa" style="white-space: nowrap;">zip_uint64_t
  index</var>, <var class="Fa" title="Fa" style="white-space: nowrap;">const
  char *comment</var>,
  <var class="Fa" title="Fa" style="white-space: nowrap;">int len</var>);
<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
The <b class="Fn" title="Fn">zip_set_file_comment</b>() function is the obsolete
  version of
  <a class="Xr" title="Xr" href="zip_file_set_comment.html">zip_file_set_comment(3)</a>.
  The only differences are the type of the <var class="Ar" title="Ar">len</var>
  argument and the additional <var class="Ar" title="Ar">flags</var> argument.
  <b class="Fn" title="Fn">zip_set_file_comment</b>() is the same as calling
  <a class="Xr" title="Xr" href="zip_file_set_comment.html">zip_file_set_comment(3)</a>
  with an empty <var class="Ar" title="Ar">flags</var> argument.
<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
  ALSO</a></h1>
<a class="Xr" title="Xr" href="libzip.html">libzip(3)</a>,
  <a class="Xr" title="Xr" href="zip_file_set_comment.html">zip_file_set_comment(3)</a>
<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
<b class="Fn" title="Fn">zip_set_file_comment</b>() was added in libzip 0.7. In
  libzip 0.10 the type of <var class="Ar" title="Ar">index</var> was changed
  from <var class="Vt" title="Vt">int</var> to
  <var class="Vt" title="Vt">zip_uint64_t</var>. It was deprecated in libzip
  0.11, use <b class="Fn" title="Fn">zip_file_set_comment</b>() instead.
<h1 class="Sh" title="Sh" id="AUTHORS"><a class="selflink" href="#AUTHORS">AUTHORS</a></h1>
<span class="An" title="An">Dieter Baron</span>
  &lt;<a class="Mt" title="Mt" href="mailto:dillo@nih.at">dillo@nih.at</a>&gt;
  and <span class="An" title="An">Thomas Klausner</span>
  &lt;<a class="Mt" title="Mt" href="mailto:tk@giga.or.at">tk@giga.or.at</a>&gt;</div>
<table class="foot">
  <tr>
    <td class="foot-date">December 18, 2017</td>
    <td class="foot-os">NetBSD 8.99.14</td>
  </tr>
</table>
</body>
</html>
