Files
commandergenius/project/jni/zzip/include/zzip/fseeko.h
2010-11-29 12:44:44 +02:00

130 lines
3.7 KiB
C

#ifndef _ZZIP_FSEEKO_H_
#define _ZZIP_FSEEKO_H_
/*
* NOTE: this is part of libzzipfseeko (i.e. it is not libzzip).
*
* simplified zip disk access using fseeko on a stdio FILE handle
*
* Author:
* Guido Draheim <guidod@gmx.de>
*
* Copyright (c) 2003,2004 Guido Draheim
* All rights reserved,
* use under the restrictions of the
* Lesser GNU General Public License
* or alternatively the restrictions
* of the Mozilla Public License 1.1
*/
#include <zzip/types.h>
#include <stdio.h>
#ifdef _ZZIP_ENTRY_STRUCT
#include <zlib.h>
#include <zzip/format.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct zzip_entry ZZIP_ENTRY;
typedef struct zzip_entry_file ZZIP_ENTRY_FILE;
typedef int (*zzip_strcmp_fn_t)(char*, char*);
typedef int (*zzip_fnmatch_fn_t)(char*, char*, int);
#ifndef zzip_entry_extern
#define zzip_entry_extern extern
#endif
zzip_entry_extern zzip_off_t
zzip_entry_data_offset(ZZIP_ENTRY* entry);
zzip__new__
zzip_entry_extern ZZIP_ENTRY*
zzip_entry_findfirst(FILE* file);
zzip__new__
zzip_entry_extern ZZIP_ENTRY*
zzip_entry_findnext(ZZIP_ENTRY* _zzip_restrict entry);
#define zzip_entry_findlast zzip_entry_free
#define zzip_entry_findlastfile zzip_entry_free
#define zzip_entry_findlastmatch zzip_entry_free
zzip_entry_extern int
zzip_entry_free(ZZIP_ENTRY* entry);
zzip__new__
zzip_entry_extern char*
zzip_entry_strdup_name(ZZIP_ENTRY* entry);
zzip_entry_extern char*
zzip_entry_to_data(ZZIP_ENTRY* entry);
zzip__new__
zzip_entry_extern ZZIP_ENTRY*
zzip_entry_findfile(FILE* disk, char* filename,
ZZIP_ENTRY* _zzip_restrict old,
zzip_strcmp_fn_t compare);
zzip__new__
zzip_entry_extern ZZIP_ENTRY*
zzip_entry_findmatch(FILE* disk, char* filespec,
ZZIP_ENTRY* _zzip_restrict old,
zzip_fnmatch_fn_t compare, int flags);
zzip__new__
zzip_entry_extern ZZIP_ENTRY_FILE*
zzip_entry_fopen (ZZIP_ENTRY* entry, int takeover);
zzip__new__
zzip_entry_extern ZZIP_ENTRY_FILE*
zzip_entry_ffile (FILE* disk, char* filename);
zzip_entry_extern _zzip_size_t
zzip_entry_fread (void* ptr, _zzip_size_t size, _zzip_size_t nmemb,
ZZIP_ENTRY_FILE* file);
zzip_entry_extern int
zzip_entry_fclose (ZZIP_ENTRY_FILE* file);
int
zzip_entry_feof (ZZIP_ENTRY_FILE* file);
# ifdef _ZZIP_ENTRY_STRUCT
# ifdef __cplusplus
# define __zzip_entry_extends_zzip_disk_entry
struct zzip_entry : public struct zzip_disk_entry
{
char* _zzip_restrict tail;
zzip_off_t tailalloc; /* the allocated size of tail */
FILE* diskfile; /* a file reference */
zzip_off_t disksize; /* the size of the file */
zzip_off_t headseek; /* the offset within the file */
zzip_off_t zz_usize;
zzip_off_t zz_csize; /* items scanned from header */
zzip_off_t zz_offset; /* or zip64 extension block */
int zz_diskstart;
};
# else
struct zzip_entry /* : struct zzip_disk_entry */
{
struct zzip_disk_entry head;
char* _zzip_restrict tail;
zzip_off_t tailalloc; /* the allocated size of tail */
FILE* diskfile; /* a file reference */
zzip_off_t disksize; /* the size of the file */
zzip_off_t headseek; /* the offset within the file */
zzip_off_t zz_usize;
zzip_off_t zz_csize; /* items scanned from header */
zzip_off_t zz_offset; /* or zip64 extension block */
int zz_diskstart;
};
# endif /* __cplusplus */
# endif /* _ZZIP_MEM_ENTRY_PRIVATE */
#ifdef __cplusplus
extern "C" {
}
#endif
#endif