ZIP_SOURCE_FUNCTION
Section: Library Functions Manual (3)
Updated: September 22, 2013
Index
Return to Main Contents
NAME
zip_source_function
- create data source from function
LIBRARY
libzip (-lzip)
SYNOPSIS
#include <zip.h>
struct zip_source *
zip_source_function(struct zip *archive, zip_source_callback fn, void *userdata);
DESCRIPTION
The function
zip_source_function()
creates a zip source from the user-provided function
fn,
which must be of the following type:
- typedef zip_int64_t (*zip_source_callback)(void *state,
void *data, zip_uint64_t len, enum zip_source_cmd cmd);
When called by the library, the first argument is the
userdata
argument supplied to
zip_source_function().
The next two arguments are a buffer
data
of size
len
when data is expected to be returned, or else
NULL
and 0.
The last argument,
cmd,
specifies which action the function should perform:
-
- ZIP_SOURCE_OPEN
-
Prepare for reading.
Return 0 on success, -1 on error.
- ZIP_SOURCE_READ
-
Read data into the buffer
data
of size
len.
Return the number of bytes placed into
data
on success, -1 on error.
- ZIP_SOURCE_CLOSE
-
Reading is done.
Return 0.
- ZIP_SOURCE_STAT
-
Get meta information for the input data.
data
points to an allocated
struct zip_stat,
which should be initialized using
zip_stat_init(3)
and then filled in.
Information only available after the source has been read (e.g. size)
can be omitted in an earlier call.
Return sizeof(struct zip_stat) on success, -1 on error.
NOTE:
zip_source_function()
may be called with this argument even after being called with
ZIP_SOURCE_CLOSE.
- ZIP_SOURCE_ERROR
-
Get error information.
data
points to an array of two ints, which should be filled with the libzip
error code and the corresponding system error code for the error that
occurred.
See
zip_errors(3)
for details on the error codes.
Return return(2 * sizeof(int)).
- ZIP_SOURCE_FREE
-
Clean up and free all resources.
Return 0.
The library will always issue
ZIP_SOURCE_OPEN
before issuing
ZIP_SOURCE_READ.
When it no longer wishes to read from this source, it will issue
ZIP_SOURCE_CLOSE.
If the library wishes to read the data again, it will issue
ZIP_SOURCE_OPEN
a second time.
If the function is unable to provide the data again, it should
return -1.
ZIP_SOURCE_STAT
can be issued at any time.
ZIP_SOURCE_ERROR
will only be issued in response to the function
returning -1.
ZIP_SOURCE_FREE
will be the last command issued;
if
ZIP_SOURCE_OPEN
was called and succeeded,
ZIP_SOURCE_CLOSE
will be called before
ZIP_SOURCE_FREE.
RETURN VALUES
Upon successful completion, the created source is returned.
Otherwise,
NULL
is returned and the error code in
archive
is set to indicate the error.
ERRORS
zip_source_function()
fails if:
- [ZIP_ER_MEMORY]
-
Required memory could not be allocated.
SEE ALSO
libzip(3),
zip_add(3),
zip_replace(3),
zip_source_buffer(3),
zip_source_file(3),
zip_source_filep(3),
zip_source_free(3),
zip_source_zip(3),
zip_stat_init(3)
AUTHORS
Dieter Baron <
dillo@nih.at>
and
Thomas Klausner <
tk@giga.or.at>
Index
- NAME
-
- LIBRARY
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUES
-
- ERRORS
-
- SEE ALSO
-
- AUTHORS
-