version 1.1.1.1, 2012/02/21 23:48:05
|
version 1.1.1.2, 2013/07/22 01:32:11
|
Line 1
|
Line 1
|
/* |
/* |
zip_source_zip.c -- create data source from zip file |
zip_source_zip.c -- create data source from zip file |
Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner | Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner |
|
|
This file is part of libzip, a library to manipulate ZIP archives. |
This file is part of libzip, a library to manipulate ZIP archives. |
The authors can be contacted at <libzip@nih.at> |
The authors can be contacted at <libzip@nih.at> |
Line 41
|
Line 41
|
struct read_zip { |
struct read_zip { |
struct zip_file *zf; |
struct zip_file *zf; |
struct zip_stat st; |
struct zip_stat st; |
off_t off, len; | zip_uint64_t off; |
| zip_int64_t len; |
}; |
}; |
|
|
static ssize_t read_zip(void *st, void *data, size_t len, | static zip_int64_t read_zip(void *st, void *data, zip_uint64_t len, |
enum zip_source_cmd cmd); |
enum zip_source_cmd cmd); |
|
|
|
|
|
|
ZIP_EXTERN(struct zip_source *) |
ZIP_EXTERN(struct zip_source *) |
zip_source_zip(struct zip *za, struct zip *srcza, int srcidx, int flags, | zip_source_zip(struct zip *za, struct zip *srcza, zip_uint64_t srcidx, |
off_t start, off_t len) | int flags, zip_uint64_t start, zip_int64_t len) |
{ |
{ |
struct zip_error error; |
struct zip_error error; |
struct zip_source *zs; |
struct zip_source *zs; |
Line 62 zip_source_zip(struct zip *za, struct zip *srcza, int
|
Line 63 zip_source_zip(struct zip *za, struct zip *srcza, int
|
if (za == NULL) |
if (za == NULL) |
return NULL; |
return NULL; |
|
|
if (srcza == NULL || start < 0 || len < -1 || srcidx < 0 || srcidx >= srcza->nentry) { | if (srcza == NULL || len < -1 || srcidx < 0 || srcidx >= srcza->nentry) { |
_zip_error_set(&za->error, ZIP_ER_INVAL, 0); |
_zip_error_set(&za->error, ZIP_ER_INVAL, 0); |
return NULL; |
return NULL; |
} |
} |
Line 115 zip_source_zip(struct zip *za, struct zip *srcza, int
|
Line 116 zip_source_zip(struct zip *za, struct zip *srcza, int
|
|
|
|
|
|
|
static ssize_t | static zip_int64_t |
read_zip(void *state, void *data, size_t len, enum zip_source_cmd cmd) | read_zip(void *state, void *data, zip_uint64_t len, enum zip_source_cmd cmd) |
{ |
{ |
struct read_zip *z; |
struct read_zip *z; |
char b[8192], *buf; |
char b[8192], *buf; |
int i, n; | int i; |
| zip_uint64_t n; |
|
|
z = (struct read_zip *)state; |
z = (struct read_zip *)state; |
buf = (char *)data; |
buf = (char *)data; |