GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
ZIP_FILE_ADD(3) FreeBSD Library Functions Manual ZIP_FILE_ADD(3)

zip_file_add, zip_file_replaceadd file to zip archive or replace file in zip archive

libzip (-lzip)

#include <zip.h>

zip_int64_t
zip_file_add(zip_t *archive, const char *name, zip_source_t *source, zip_flags_t flags);

int
zip_file_replace(zip_t *archive, zip_uint64_t index, zip_source_t *source, zip_flags_t flags);

The function () adds a file to a zip archive, while () replaces an existing file in a zip archive. The argument archive specifies the zip archive to which the file should be added. name is the file's name in the zip archive (for zip_file_add()), while index specifies which file should be replaced (for zip_file_replace()). The flags argument can be any combination of ZIP_FL_OVERWRITE with one of ZIP_FL_ENC_*:

Overwrite any existing file of the same name. For zip_file_add only.
Guess encoding of name (default). (Only CP-437 and UTF-8 are recognized.)
Interpret name as UTF-8.
Interpret name as code page 437 (CP-437).
The data is obtained from the source argument, see zip_source(3).

: zip_source_free(3) should not be called on a source after it was used successfully in a zip_file_add or zip_file_replace call.

Please also note that when using zip_replace, the target file's extra field information will be deleted since this usually is dependent on the file contents. If you want to keep them, query them beforehand with zip_file_extra_field_get(3) and restore them after zip_replace with zip_file_extra_field_set(3).

Upon successful completion, zip_file_add() returns the index of the new file in the archive, and zip_file_replace() returns 0. Otherwise, -1 is returned and the error code in archive is set to indicate the error.

zip_source_t *s;
const char buf[]="teststring";

if ((s=zip_source_buffer(archive, buf, sizeof(buf), 0)) == NULL ||
    zip_file_add(archive, name, s, ZIP_FL_ENC_UTF_8) < 0) {
    zip_source_free(s);
    printf("error adding file: %s\n", zip_strerror(archive));
}

zip_file_add() and zip_file_replace() fail if:

[]
There is already a file called name in the archive. (Only applies to zip_file_add(), and only if ZIP_FL_OVERWRITE is not provided).
[]
source or name are NULL, or index is invalid.
[]
Required memory could not be allocated.
[]
Archive was opened in read-only mode.

libzip(3), zip_source(3)

zip_file_add() and zip_file_replace() were added in libzip 0.11.

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

March 18, 2024 FreeBSD 14.3-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.