您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ zip_stat_index函数代码示例

51自学网 2021-06-03 12:00:07
  C++
这篇教程C++ zip_stat_index函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中zip_stat_index函数的典型用法代码示例。如果您正苦于以下问题:C++ zip_stat_index函数的具体用法?C++ zip_stat_index怎么用?C++ zip_stat_index使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了zip_stat_index函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: ipsw_get_file_size

int ipsw_get_file_size(const char* ipsw, const char* infile, off_t* size) {	ipsw_archive* archive = ipsw_open(ipsw);	if (archive == NULL || archive->zip == NULL) {		error("ERROR: Invalid archive/n");		return -1;	}	int zindex = zip_name_locate(archive->zip, infile, 0);	if (zindex < 0) {		error("ERROR: zip_name_locate: %s/n", infile);		return -1;	}	struct zip_stat zstat;	zip_stat_init(&zstat);	if (zip_stat_index(archive->zip, zindex, 0, &zstat) != 0) {		error("ERROR: zip_stat_index: %s/n", infile);		return -1;	}	*size = zstat.size;	ipsw_close(archive);	return 0;}
开发者ID:Blackmamba0,项目名称:idevicerestore,代码行数:25,


示例2: FileNode

FileNode *FileNode::createNodeForZipEntry(struct zip *zip,        const char *fname, zip_int64_t id) {    FileNode *n = new FileNode(zip, fname, id);    if (n == NULL) {        return NULL;    }    n->is_dir = false;    n->open_count = 0;    n->state = CLOSED;    struct zip_stat stat;    zip_stat_index(zip, id, 0, &stat);    // check that all used fields are valid    zip_uint64_t needValid = ZIP_STAT_NAME | ZIP_STAT_INDEX |        ZIP_STAT_SIZE | ZIP_STAT_MTIME;    // required fields are always valid for existing items or newly added    // directories (see zip_stat_index.c from libzip)    assert((stat.valid & needValid) == needValid);    n->m_mtime = n->m_atime = n->m_ctime = stat.mtime;    n->has_cretime = false;    n->m_size = stat.size;    n->parse_name();    n->processExternalAttributes();    n->processExtraFields();    return n;}
开发者ID:dxafn,项目名称:fuse-zip,代码行数:28,


示例3: r_io_zip_slurp_file

static int r_io_zip_slurp_file(RIOZipFileObj *zfo) {	struct zip_file *zFile = NULL;	struct zip *zipArch;	struct zip_stat sb;	bool res = false;	if (!zfo) {		return res;	}	zipArch = r_io_zip_open_archive (		zfo->archivename, zfo->perm,		zfo->mode, zfo->rw);	if (zipArch && zfo && zfo->entry != -1) {		zFile = zip_fopen_index (zipArch, zfo->entry, 0);		if (!zfo->b) {			zfo->b = r_buf_new ();		}		zip_stat_init (&sb);		if (zFile && zfo->b && !zip_stat_index (zipArch, zfo->entry, 0, &sb)) {			ut8 *buf = malloc (sb.size);			memset (buf, 0, sb.size);			if (buf) {				zip_fread (zFile, buf, sb.size);				r_buf_set_bytes (zfo->b, buf, sb.size);				res = true;				zfo->opened = true;				free (buf);			}		}		zip_fclose (zFile);	}	zip_close (zipArch);	return res;}
开发者ID:csarn,项目名称:radare2,代码行数:34,


示例4: r_io_zip_get_files

RList * r_io_zip_get_files(char *archivename, ut32 flags, int mode, int rw) {	ut64 num_entries = 0, i = 0;	struct zip * zipArch = r_io_zip_open_archive(archivename, flags, mode, rw);	struct zip_stat sb; 	RList *files = NULL; 	//eprintf("Slurping file");	if (zipArch) {		files = r_list_new();		num_entries = zip_get_num_files(zipArch);		for (i=0; i < num_entries; i++) {			char *name = NULL;				zip_stat_init(&sb );			zip_stat_index(zipArch, i, 0, &sb );				//eprintf("Comparing %s == %s = %d/n", sb.name, filename, strcmp(sb.name, filename));			name = strdup(sb.name);			if (name) {				r_list_append(files, name);			}		}	}	if (zipArch)		zip_close(zipArch);	return files;}
开发者ID:jdukes,项目名称:radare2,代码行数:27,


示例5: zip_enumerate

static int zip_enumerate(arch_enum_t e,struct arch_enum_callbacks *cb,void*arg){    if (cb->data!=NULL) Abort("cannot enumerate data");    while(e->next<e->count){        struct zip_stat sb;        int res=zip_stat_index(e->archive->archive,e->next,0,&sb);        if (res<0) {            Abort("cannot stat zip archive: %s/n",zip_strerror(e->archive->archive));        }        if(cb->new_item) {            res=cb->new_item(arg,e->next,sb.name);            if (res) {                e->next++;                return res;            }        }        if(cb->stat) {            struct archive_item_s item;            item.name=sb.name;            item.code=zip_get_file_comment(e->archive->archive,e->next,NULL,0);            item.length=sb.size;            item.compressed=sb.comp_size;            res=cb->stat(arg,e->next,&item);            if (res) {                e->next++;                return res;            }                    }        e->next++;    }    return 0;}
开发者ID:graydon,项目名称:ltsmin,代码行数:32,


示例6: r_io_zip_alloc_zipfileobj

/* The file can be a file in the archive or ::[num].  */RIOZipFileObj* r_io_zip_alloc_zipfileobj(const char *archivename, const char *filename, ut32 perm, int mode, int rw) {	RIOZipFileObj *zfo = NULL;	ut64 i, num_entries;	struct zip_stat sb;	struct zip *zipArch = r_io_zip_open_archive (archivename, perm, mode, rw);	if (!zipArch) {		return NULL;	}	num_entries = zip_get_num_files (zipArch);	for (i = 0; i < num_entries; i++) {		zip_stat_init (&sb);		zip_stat_index (zipArch, i, 0, &sb);		if (sb.name != NULL) {			if (strcmp (sb.name, filename) == 0) {				zfo = r_io_zip_create_new_file (					archivename, filename, &sb,					perm, mode, rw);				r_io_zip_slurp_file (zfo);				break;			}		}	}	if (!zfo) {		zfo = r_io_zip_create_new_file (archivename,			filename, NULL, perm, mode, rw);	}	zip_close (zipArch);	return zfo;}
开发者ID:csarn,项目名称:radare2,代码行数:31,


示例7: arch_zip_read

archive_t arch_zip_read(const char* name,int buf){    archive_t arch=(archive_t)HREmalloc(NULL,sizeof(struct archive_s));    arch_init(arch);    int err;    arch->archive=zip_open(name,ZIP_CHECKCONS,&err);    if (arch->archive==NULL){        char errstr[1024];        zip_error_to_str(errstr, sizeof(errstr), err, errno);        Abort("cannot open zip archive `%s': %s/n",name , errstr);    }    arch->stream_index=SIcreate();#ifdef LIBZIP_VERSION    int count=zip_get_num_entries(arch->archive,0);#else    int count=zip_get_num_files(arch->archive);#endif    for(int i=0;i<count;i++){        struct zip_stat sb;        int res=zip_stat_index(arch->archive,i,0,&sb);        if (res<0) {            Abort("cannot stat zip archive: %s/n",zip_strerror(arch->archive));        }        SIputAt(arch->stream_index,sb.name,i);        Print(infoShort,"stream %d is %s",i,sb.name);    }    arch->procs.contains=zip_contains;    arch->procs.read=hre_zip_read;    arch->procs.read_raw=hre_zip_read_raw;    arch->procs.enumerator=zip_enum;    arch->procs.close=hre_zip_close;    arch->buf=buf;    return arch;}
开发者ID:graydon,项目名称:ltsmin,代码行数:33,


示例8: Unzip

size_t Unzip(const char *dst_path_, const char *archive, const UnzipFileHandler& handler){    struct zip *za;    struct zip_file *zf;    struct zip_stat sb;    char buf[1024];    size_t ret = 0;    std::string dst_path = dst_path_;    int err;    if ((za = zip_open(archive, 0, &err)) == nullptr) {        zip_error_to_str(buf, sizeof(buf), err, errno);        return false;    }    for (int i = 0; i < zip_get_num_entries(za, 0); ++i) {        if (zip_stat_index(za, i, 0, &sb) == 0) {            std::string dstpath = dst_path + '/' + sb.name;            if (dstpath.back() == '/') {                std::experimental::filesystem::create_directories(dstpath.c_str());            }            else {                zf = zip_fopen_index(za, i, 0);                if (!zf) {                    goto bail_out;                }                FILE *of = fopen(dstpath.c_str(), "wb");                if (of == nullptr) {                    goto bail_out;                }                size_t sum = 0;                while (sum != sb.size) {                    size_t len = (size_t)zip_fread(zf, buf, sizeof(buf));                    if (len < 0) {                        fclose(of);                        goto bail_out;                    }                    fwrite(buf, 1, len, of);                    sum += len;                }                fclose(of);                zip_fclose(zf);                if (handler) { handler(dstpath.c_str()); }                ++ret;            }        }    }    if (zip_close(za) == -1) {        return false;    }    return ret;bail_out:    zip_close(za);    return ret;}
开发者ID:unity3d-jp,项目名称:FrameCapturer,代码行数:60,


示例9: fzip2buffer

static int fzip2buffer(struct zip *fzip, int index, byte **buffer){    struct zip_stat fstat;    struct zip_file *file = NULL;    *buffer = NULL;    zip_stat_index(fzip, index, 0, &fstat);    *buffer = malloc(fstat.size);    // Read zipped file    if((file = zip_fopen(fzip, fstat.name, ZIP_FL_UNCHANGED))==NULL)        goto error;    if(zip_fread(file, *buffer, fstat.size)!=fstat.size)        goto error;    zip_fclose(file); file = NULL;    return fstat.size;error:    free(*buffer); *buffer = NULL;    if(file)        zip_fclose(file);    return -1;}
开发者ID:k5g,项目名称:emulika,代码行数:26,


示例10: r_io_zip_slurp_file

int r_io_zip_slurp_file(RIOZipFileObj *zfo) {	int res = R_FALSE;	struct zip_stat sb;	struct zip_file *zFile = NULL;	struct zip * zipArch ;	if (!zfo) return res;	zipArch = r_io_zip_open_archive (		zfo->archivename, zfo->flags,		zfo->mode, zfo->rw);	//eprintf("Slurping file");	if (zipArch && zfo && zfo->entry != -1) {		zFile = zip_fopen_index (zipArch, zfo->entry, 0);		if (!zfo->b)			zfo->b = r_buf_new ();		zip_stat_init (&sb);		if (zFile && zfo->b && !zip_stat_index(zipArch,				zfo->entry, 0, &sb) ) {			ut8 *buf = malloc (sb.size);			memset (buf, 0, sb.size);			if (buf) {				zip_fread (zFile, buf, sb.size);				r_buf_set_bytes (zfo->b, buf, sb.size);				res = zfo->opened = R_TRUE;				free (buf);			}		}		zip_fclose (zFile);	}	zip_close (zipArch);	return res;}
开发者ID:CodingFree,项目名称:radare2,代码行数:33,


示例11: zip_get_num_entries

QStringList KaraokePlayable_ZIP::enumerate(){    QStringList filelist;    // http://www.nih.at/libzip/zip_get_num_entries.html    int files = zip_get_num_entries( m_zip, ZIP_FL_UNCHANGED );    if ( files == 0 )    {        m_errorMsg = "archive has no files";        return filelist;    }    for ( int i = 0; i < files; i++ )    {        // Retrieve the file size        struct zip_stat fileinfo;        // http://www.nih.at/libzip/zip_stat_index.html        if ( zip_stat_index( m_zip, i, 0, &fileinfo) != 0 )        {            m_errorMsg = "file info not found";            return QStringList();        }        filelist.push_back( decodeFilename( fileinfo.name ) );    }    return filelist;}
开发者ID:gyunaev,项目名称:spivak,代码行数:30,


示例12: qDebug

QByteArray zipobject::readData(const QString& inZipPath)const{    if( NULL == m_zip){        qDebug()<<"zip unopened";        return QByteArray();    }    int index = zip_name_locate(m_zip,getCharPtr(inZipPath),0);    if( -1 == index ){        qDebug()<<"no such file : "<<inZipPath;        return QByteArray();    }    zip_file *pFile = zip_fopen_index(m_zip,index,0);    if( NULL == pFile){        qDebug()<<"fopen is NULL"<<zip_strerror(m_zip);        return QByteArray();    }    struct zip_stat stat;    int rStat = zip_stat_index(m_zip,index, 0, &stat);    if( -1 == rStat ){        qDebug()<<"stat failed : "<<zip_strerror(m_zip);        return QByteArray();    }    const int length = stat.size;    char buffer[length +1 ];    int rRead = zip_fread(pFile,buffer,sizeof(buffer));    if( -1 == rRead ){        qDebug()<<"read failed : "<<zip_strerror(m_zip);        return QByteArray();    }    return QByteArray (buffer,rRead);}
开发者ID:kubuntu,项目名称:Dlut-Game-Platform,代码行数:30,


示例13: zip_get_num_files

bool zipobject::extractTo(const QString& dirPath){    int num_entries = zip_get_num_files(m_zip) ;    for( int i = 0 ; i < num_entries ; ++i ){        qDebug()<<zip_get_name(m_zip,i,0);        zip_file* pFile = zip_fopen_index(m_zip,i,0);        struct zip_stat stat ;        zip_stat_index(m_zip,i,0,&stat);                const int length = stat.size ;        char buffer[length +1 ] ;        int rRead = zip_fread(pFile,buffer,sizeof(buffer));        if( -1 == rRead ){            qDebug()<<"read failed : "<<zip_strerror(m_zip);            return false;        }                QFileInfo fileInfo(dirPath + '/' + stat.name);        QDir dir = fileInfo.absoluteDir() ;        if(!dir.mkpath(".")){            return false;        }                QFile file(dirPath + '/' + stat.name);        file.open(QIODevice::WriteOnly);        file.write(QByteArray(buffer,length));        file.close();    }    return true;}
开发者ID:kubuntu,项目名称:Dlut-Game-Platform,代码行数:29,


示例14: confirm_replace

static intconfirm_replace(struct zip *za, const char *tname, int it,		struct zip *zs, const char *sname, int is){    char line[1024];    struct zip_stat st, ss;    if (confirm & CONFIRM_ALL_YES)	return 1;    else if (confirm & CONFIRM_ALL_NO)	return 0;    if (zip_stat_index(za, it, ZIP_FL_UNCHANGED, &st) < 0) {	fprintf(stderr, "%s: cannot stat file %d in `%s': %s/n",		prg, it, tname, zip_strerror(za));	return -1;    }    if (zip_stat_index(zs, is, 0, &ss) < 0) {	fprintf(stderr, "%s: cannot stat file %d in `%s': %s/n",		prg, is, sname, zip_strerror(zs));	return -1;    }    if (st.size == ss.size && st.crc == ss.crc) {	if (confirm & CONFIRM_SAME_YES)	    return 1;	else if (confirm & CONFIRM_SAME_NO)	    return 0;    }    printf("replace `%s' (%llu / %08x) in `%s'/n"	   "   with `%s' (%llu / %08x) from `%s'? ",	   st.name, st.size, st.crc, tname,	   ss.name, ss.size, ss.crc, sname);    fflush(stdout);    if (fgets(line, sizeof(line), stdin) == NULL) {	fprintf(stderr, "%s: read error from stdin: %s/n",		prg, strerror(errno));	return -1;    }    if (tolower((unsigned char)line[0]) == 'y')	return 1;    return 0;}
开发者ID:Distrotech,项目名称:libzip,代码行数:47,


示例15: _vdezName

const char* _vdezName(struct VDirEntry* vde) {	struct VDirEntryZip* vdez = (struct VDirEntryZip*) vde;	struct zip_stat s;	if (zip_stat_index(vdez->z, vdez->index, 0, &s) < 0) {		return 0;	}	return s.name;}
开发者ID:OpenEmu,项目名称:mGBA-Core,代码行数:8,


示例16: path

bool Upgrader::unzipper(int targetfile){    bfs::path target = path(DATA) / "upgrade";    if (!verifyPath(target.c_str(), true)) {return false;}    const char *targetzip = (target / targetswitch(targetfile)).string().c_str();    struct zip *archive;    struct zip_file *zipfile;    struct zip_stat filestat;    char buffer[1024*1024];    FILE *file;    int bufferlength, err;    unsigned long long sum;    printf("Extracting %s/n", targetzip);    if ((archive = zip_open(targetzip, 0, &err)) == NULL) {        printf("Failed to open archive %s/n", targetzip);        return false;    }     for (unsigned int i = 0; i < zip_get_num_entries(archive, 0); i++)     {        if (zip_stat_index(archive, i, 0, &filestat) == 0)        {            verifyPath((target / filestat.name).parent_path(), true);            if (!is_directory(target / filestat.name))            {                zipfile = zip_fopen_index(archive, i, 0);                if (!zipfile) {                    printf("Could not open %s in archive/n", filestat.name);                    continue;                }                file = fopen((target / filestat.name).string().c_str(), "w");                 sum = 0;                while (sum != filestat.size) {                    bufferlength = zip_fread(zipfile, buffer, 1024*1024);                    fwrite(buffer, sizeof(char), bufferlength, file);                    sum += bufferlength;                }                printf("Finished extracting %s/n", filestat.name);                fclose(file);                zip_fclose(zipfile);            }        }    }    if (zip_close(archive) == -1)     {        printf("Can't close zip archive %s/n", targetzip);        return false;    }    bfs::remove(target / targetswitch(targetfile));    return true;}
开发者ID:JohnLZeller,项目名称:Gridcoin-Research,代码行数:58,


示例17: zip_stat

ZIP_EXTERN intzip_stat(struct zip *za, const char *fname, zip_flags_t flags, struct zip_stat *st){    zip_int64_t idx;    if ((idx=zip_name_locate(za, fname, flags)) < 0)	return -1;    return zip_stat_index(za, (zip_uint64_t)idx, flags, st);}
开发者ID:Crell,项目名称:php-src,代码行数:10,


示例18: zip_stat

ZIP_EXTERN intzip_stat(struct zip *za, const char *fname, int flags, struct zip_stat *st){    int idx;    if ((idx=zip_name_locate(za, fname, flags)) < 0)	return -1;    return zip_stat_index(za, idx, flags, st);}
开发者ID:amogos,项目名称:tests,代码行数:10,


示例19: zip_name_locate

static STRBUF *read_from_zip(const char *zipfile, const char *filename){	int r = 0;	STRBUF *content = NULL;#ifdef HAVE_LIBZIP	int zip_error;	struct zip *zip = NULL;	struct zip_stat stat;	struct zip_file *unzipped = NULL;	char *buf = NULL;	if ( !(zip = zip_open(zipfile, 0, &zip_error)) ||	     (r = zip_name_locate(zip, filename, 0)) < 0 ||	     (zip_stat_index(zip, r, ZIP_FL_UNCHANGED, &stat) < 0) ||	     !(unzipped = zip_fopen_index(zip, r, ZIP_FL_UNCHANGED)) ) {		if (unzipped)			zip_fclose(unzipped);		if (zip)			zip_close(zip);		r = -1;	}#else	r = kunzip_get_offset_by_name((char*)zipfile, (char*)filename, 3, -1);#endif	if(-1 == r) {		fprintf(stderr,			"Can't read from %s: Is it an OpenDocument Text?/n", zipfile);		exit(EXIT_FAILURE);	}#ifdef HAVE_LIBZIP	if ( !(buf = ymalloc(stat.size + 1)) ||	     (zip_fread(unzipped, buf, stat.size) != stat.size) ||	     !(content = strbuf_slurp_n(buf, stat.size)) ) {		if (buf)			yfree(buf);		content = NULL;	}	zip_fclose(unzipped);	zip_close(zip);#else	content = kunzip_next_tobuf((char*)zipfile, r);#endif	if (!content) {		fprintf(stderr,			"Can't extract %s from %s.  Maybe the file is corrupted?/n",			filename, zipfile);		exit(EXIT_FAILURE);	}	return content;}
开发者ID:shenek,项目名称:odt2txt,代码行数:55,


示例20: ThrowException

Handle<Value> ZipFile::readFileSync(const Arguments& args) {    HandleScope scope;    if (args.Length() != 1 || !args[0]->IsString())        return ThrowException(Exception::TypeError(                                  String::New("first argument must be a file name inside the zip")));    std::string name = TOSTR(args[0]);    ZipFile* zf = ObjectWrap::Unwrap<ZipFile>(args.This());    struct zip_file *zf_ptr;    int idx = -1;    std::vector<std::string>::iterator it = std::find(zf->names_.begin(), zf->names_.end(), name);    if (it != zf->names_.end()) {        idx = distance(zf->names_.begin(), it);    }    if (idx == -1) {        std::stringstream s;        s << "No file found by the name of: '" << name << "/n";        return ThrowException(Exception::Error(String::New(s.str().c_str())));    }    if ((zf_ptr=zip_fopen_index(zf->archive_, idx, 0)) == NULL) {        zip_fclose(zf_ptr);        std::stringstream s;        s << "cannot open file #" << idx << " in " << name << ": archive error: " << zip_strerror(zf->archive_) << "/n";        return ThrowException(Exception::Error(String::New(s.str().c_str())));    }    struct zip_stat st;    zip_stat_index(zf->archive_, idx, 0, &st);    std::vector<unsigned char> data;    data.clear();    data.resize(st.size);    int result = 0;    result = static_cast<int>(zip_fread(zf_ptr, reinterpret_cast<void*> (&data[0]), data.size()));    if (result < 0) {        zip_fclose(zf_ptr);        std::stringstream s;        s << "error reading file #" << idx << " in " << name << ": archive error: " << zip_file_strerror(zf_ptr) << "/n";        return ThrowException(Exception::Error(String::New(s.str().c_str())));    }    node::Buffer *retbuf = Buffer::New(reinterpret_cast<char *>(&data[0]), data.size());    zip_fclose(zf_ptr);    return scope.Close(retbuf->handle_);}
开发者ID:anoopsinha,项目名称:maui-epub,代码行数:54,


示例21: zip_get_num_files

void ZipFile::GetNames(){    int num = zip_get_num_files(this->archive);    this->names.clear();    this->names.reserve(num);    int i = 0;    for (i=0; i<num; i++) {        struct zip_stat st;        zip_stat_index(this->archive, i, 0, &st);        this->names.push_back(st.name);    }}
开发者ID:toots,项目名称:node-zipfile,代码行数:12,


示例22: GetFileSize

 const uint64 GetFileSize(size_t index) const override {     zip_stat_t zipFileStat;     if (zip_stat_index(_zip, index, 0, &zipFileStat) == ZIP_ER_OK)     {         return zipFileStat.size;     }     else     {         return 0;     } }
开发者ID:YJSoft,项目名称:OpenRCT2,代码行数:12,


示例23: ipsw_extract_to_memory

int ipsw_extract_to_memory(const char* ipsw, const char* infile, unsigned char** pbuffer, unsigned int* psize) {	ipsw_archive* archive = ipsw_open(ipsw);	if (archive == NULL || archive->zip == NULL) {		error("ERROR: Invalid archive/n");		return -1;	}	int zindex = zip_name_locate(archive->zip, infile, 0);	if (zindex < 0) {		error("ERROR: zip_name_locate: %s/n", infile);		return -1;	}	struct zip_stat zstat;	zip_stat_init(&zstat);	if (zip_stat_index(archive->zip, zindex, 0, &zstat) != 0) {		error("ERROR: zip_stat_index: %s/n", infile);		return -1;	}	struct zip_file* zfile = zip_fopen_index(archive->zip, zindex, 0);	if (zfile == NULL) {		error("ERROR: zip_fopen_index: %s/n", infile);		return -1;	}	int size = zstat.size;	unsigned char* buffer = (unsigned char*) malloc(size+1);	if (buffer == NULL) {		error("ERROR: Out of memory/n");		zip_fclose(zfile);		return -1;	}	if (zip_fread(zfile, buffer, size) != size) {		error("ERROR: zip_fread: %s/n", infile);		zip_fclose(zfile);		free(buffer);		return -1;	}	buffer[size] = '/0';	zip_fclose(zfile);	ipsw_close(archive);	*pbuffer = buffer;	*psize = size;	return 0;}
开发者ID:Blackmamba0,项目名称:idevicerestore,代码行数:50,


示例24: S_archive_stat

static int S_archive_stat(lua_State* L) {    struct zip**    ar        = check_archive(L, 1);    const char*     path      = (lua_isnumber(L, 2)) ? NULL : luaL_checkstring(L, 2);    int             path_idx  = (lua_isnumber(L, 2)) ? luaL_checkint(L, 2)-1 : -1;    int             flags     = (lua_gettop(L) < 3)  ? 0    : luaL_checkint(L, 3);    struct zip_stat stat;    int             result;    if ( ! *ar ) return 0;    if ( NULL == path ) {        result = zip_stat_index(*ar, path_idx, flags, &stat);    } else {        result = zip_stat(*ar, path, flags, &stat);    }    if ( result != 0 ) {        lua_pushnil(L);        lua_pushstring(L, zip_strerror(*ar));        return 2;    }    lua_createtable(L, 0, 8);    lua_pushstring(L, stat.name);    lua_setfield(L, -2, "name");    lua_pushinteger(L, stat.index+1);    lua_setfield(L, -2, "index");    lua_pushnumber(L, stat.crc);    lua_setfield(L, -2, "crc");    lua_pushnumber(L, stat.size);    lua_setfield(L, -2, "size");    lua_pushnumber(L, stat.mtime);    lua_setfield(L, -2, "mtime");    lua_pushnumber(L, stat.comp_size);    lua_setfield(L, -2, "comp_size");    lua_pushnumber(L, stat.comp_method);    lua_setfield(L, -2, "comp_method");    lua_pushnumber(L, stat.encryption_method);    lua_setfield(L, -2, "encryption_method");    return 1;}
开发者ID:MarkTseng,项目名称:lua-zip,代码行数:50,


示例25: iterateFiles

	void iterateFiles(FunctorT Functor)	{		struct zip_stat Stat;		auto NumEntries = zip_get_num_entries(mZip, 0);		for (zip_uint64_t I = 0; I != NumEntries; ++I)		{			auto Error = zip_stat_index(mZip, I, 0, &Stat);			if (Error != 0) throw std::runtime_error{"Error reading zip"};			auto Length = std::char_traits<char>::length(Stat.name);			if (Length == 0 || Stat.name[Length - 1] == '/') continue;			auto File = ZipFileT{Stat.name, zip_fopen_index(mZip, I, 0)};			Functor(File);		}	}
开发者ID:det,项目名称:RapidTools,代码行数:14,


示例26: loadZipFile

/** * Read the contents of the first file of the ZIP file and load * it into a ModPlugFile.**/static ModPlugFile* loadZipFile(const char *path){	ModPlugFile *self_ = NULL;	int err = 0;	struct zip *zf = zip_open(path, 0, &err);	if (!zf) return NULL;	struct zip_stat sb;	// FIXME: Assumes the first file is the mod-file	if (zip_stat_index(zf, 0, 0, &sb)) {		MPSP_EPRINTF("failed to stat ZIP member: %s/n", zip_strerror(zf));		goto exit1;	}	// FIXME: Assumes the first file is the mod-file	struct zip_file *file = zip_fopen_index(zf, 0, 0);	if (!file) {		MPSP_EPRINTF("failed to open ZIP member: %s/n", zip_strerror(zf));		goto exit1;	}	void *data = malloc(sb.size);	if (!data) {		MPSP_EPRINTF("failed to allocate memory: %s/n", strerror(errno));		goto exit2;	}	if (zip_fread(file, data, sb.size) != sb.size) {		MPSP_EPRINTF("failed to read ZIP member: %s/n", zip_file_strerror(file));		goto exit3;	}	self_ = ModPlug_Load(data, sb.size);exit3:	free(data);exit2:	(void) zip_fclose(file);exit1:	(void) zip_close(zf);	return self_;}
开发者ID:tommie,项目名称:modplug,代码行数:53,


示例27: zip_stat_index

	PImportStream COpcPackageReader::openZIPEntryIndexed(_In_ nfUint64 nIndex)	{		zip_stat_t Stat;		nfInt32 nResult = zip_stat_index(m_ZIParchive, nIndex, ZIP_FL_UNCHANGED, &Stat);		if (nResult != 0)			throw CNMRException(NMR_ERROR_COULDNOTSTATZIPENTRY);		nfUint64 nSize = Stat.size;		zip_file_t * pFile = zip_fopen_index(m_ZIParchive, nIndex, ZIP_FL_UNCHANGED);		if (pFile == nullptr)			throw CNMRException(NMR_ERROR_COULDNOTOPENZIPENTRY);		return std::make_shared<CImportStream_ZIP>(pFile, nSize);	}
开发者ID:ChiefGyk,项目名称:lib3mf,代码行数:17,


示例28: distance

void ZipFile::Work_ReadFile(uv_work_t* req) {    closure_t *closure = static_cast<closure_t *>(req->data);    struct zip_file *zf_ptr = NULL;    int idx = -1;    std::vector<std::string>::iterator it = std::find(closure->zf->names_.begin(),                                                      closure->zf->names_.end(),                                                      closure->name);    if (it != closure->zf->names_.end()) {        idx = distance(closure->zf->names_.begin(), it);    }    if (idx == -1) {        std::stringstream s;        s << "No file found by the name of: '" << closure->name << "/n";        closure->error = true;        closure->error_name = s.str();    } else {        if ((zf_ptr = zip_fopen_index(closure->za, idx, 0)) == NULL) {            std::stringstream s;            s << "cannot open file #" << idx << " in "              << closure->name << ": archive error: " << zip_strerror(closure->za) << "/n";            closure->error = true;            closure->error_name = s.str();        } else {            struct zip_stat st;            zip_stat_index(closure->za, idx, 0, &st);            closure->data.clear();            closure->data.resize(st.size);            int result =  0;            result = static_cast<int>(zip_fread(zf_ptr, reinterpret_cast<void*> (&closure->data[0]), closure->data.size()));            if (result < 0) {                std::stringstream s;                s << "error reading file #" << idx << " in "                  << closure->name << ": archive error: " << zip_file_strerror(zf_ptr) << "/n";                closure->error = true;                closure->error_name = s.str();            }        }    }    zip_fclose(zf_ptr);}
开发者ID:anoopsinha,项目名称:maui-epub,代码行数:46,


示例29: zip_get_contents

static int zip_get_contents(struct zip *zf, const char *filename, int locate_flags, char **buffer, uint32_t *len){	struct zip_stat zs;	struct zip_file *zfile;	int zindex = zip_name_locate(zf, filename, locate_flags);	*buffer = NULL;	*len = 0;	if (zindex < 0) {		return -1;	}	zip_stat_init(&zs);	if (zip_stat_index(zf, zindex, 0, &zs) != 0) {		fprintf(stderr, "ERROR: zip_stat_index '%s' failed!/n", filename);		return -2;	}	if (zs.size > 10485760) {		fprintf(stderr, "ERROR: file '%s' is too large!/n", filename);		return -3;	}	zfile = zip_fopen_index(zf, zindex, 0);	if (!zfile) {		fprintf(stderr, "ERROR: zip_fopen '%s' failed!/n", filename);		return -4;	}	*buffer = malloc(zs.size);	if (zs.size > LLONG_MAX || zip_fread(zfile, *buffer, zs.size) != (zip_int64_t)zs.size) {		fprintf(stderr, "ERROR: zip_fread %" PRIu64 " bytes from '%s'/n", (uint64_t)zs.size, filename);		free(*buffer);		*buffer = NULL;		zip_fclose(zfile);		return -5;	}	*len = zs.size;	zip_fclose(zfile);	return 0;}
开发者ID:NitzanDavari,项目名称:ideviceinstaller,代码行数:43,



注:本文中的zip_stat_index函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ zip_stat_init函数代码示例
C++ zip_source_free函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。