platform ps2, handle audio similar to psp
[picodrive.git] / unzip / unzip.h
... / ...
CommitLineData
1#ifndef __UNZIP_H\r
2#define __UNZIP_H\r
3\r
4#include <stdio.h>\r
5\r
6#ifdef USE_LIBRETRO_VFS\r
7#include "file_stream_transforms.h"\r
8#endif\r
9\r
10#ifdef __cplusplus\r
11extern "C" {\r
12#endif\r
13\r
14// notaz: something's missing this\r
15#ifndef UINT16\r
16#define UINT32 unsigned int\r
17#define UINT16 unsigned short\r
18#define UINT8 unsigned char\r
19#endif\r
20\r
21/***************************************************************************\r
22 * Support for retrieving files from zipfiles\r
23 ***************************************************************************/\r
24\r
25struct zipent {\r
26 UINT32 cent_file_header_sig;\r
27 UINT8 version_made_by;\r
28 UINT8 host_os;\r
29 UINT8 version_needed_to_extract;\r
30 UINT8 os_needed_to_extract;\r
31 UINT16 general_purpose_bit_flag;\r
32 UINT16 compression_method;\r
33 UINT16 last_mod_file_time;\r
34 UINT16 last_mod_file_date;\r
35 UINT32 crc32;\r
36 UINT32 compressed_size;\r
37 UINT32 uncompressed_size;\r
38 UINT16 filename_length;\r
39 UINT16 extra_field_length;\r
40 UINT16 file_comment_length;\r
41 UINT16 disk_number_start;\r
42 UINT16 internal_file_attrib;\r
43 UINT32 external_file_attrib;\r
44 UINT32 offset_lcl_hdr_frm_frst_disk;\r
45 char* name; /* 0 terminated */\r
46};\r
47\r
48typedef struct _ZIP {\r
49 char* zip; /* zip name */\r
50 FILE* fp; /* zip handler */\r
51 long length; /* length of zip file */\r
52\r
53 char* ecd; /* end_of_cent_dir data */\r
54 unsigned ecd_length; /* end_of_cent_dir length */\r
55\r
56 char* cd; /* cent_dir data */\r
57\r
58 unsigned cd_pos; /* position in cent_dir */\r
59\r
60 struct zipent ent; /* buffer for readzip */\r
61\r
62 /* end_of_cent_dir */\r
63 UINT32 end_of_cent_dir_sig;\r
64 UINT16 number_of_this_disk;\r
65 UINT16 number_of_disk_start_cent_dir;\r
66 UINT16 total_entries_cent_dir_this_disk;\r
67 UINT16 total_entries_cent_dir;\r
68 UINT32 size_of_cent_dir;\r
69 UINT32 offset_to_start_of_cent_dir;\r
70 UINT16 zipfile_comment_length;\r
71 char* zipfile_comment; /* pointer in ecd */\r
72} ZIP;\r
73\r
74/* Opens a zip stream for reading\r
75 return:\r
76 !=0 success, zip stream\r
77 ==0 error\r
78*/\r
79ZIP* openzip(const char* path);\r
80\r
81/* Closes a zip stream */\r
82void closezip(ZIP* zip);\r
83\r
84/* Reads the current entry from a zip stream\r
85 in:\r
86 zip opened zip\r
87 return:\r
88 !=0 success\r
89 ==0 error\r
90*/\r
91struct zipent* readzip(ZIP* zip);\r
92\r
93/* Suspend access to a zip file (release file handler)\r
94 in:\r
95 zip opened zip\r
96 note:\r
97 A suspended zip is automatically reopened at first call of\r
98 readuncompressd() or readcompressed() functions\r
99*/\r
100void suspendzip(ZIP* zip);\r
101\r
102/* Resets a zip stream to the first entry\r
103 in:\r
104 zip opened zip\r
105 note:\r
106 ZIP file must be opened and not suspended\r
107*/\r
108void rewindzip(ZIP* zip);\r
109\r
110/* Read compressed data from a zip entry\r
111 in:\r
112 zip opened zip\r
113 ent entry to read\r
114 out:\r
115 data buffer for data, ent.compressed_size UINT8s allocated by the caller\r
116 return:\r
117 ==0 success\r
118 <0 error\r
119*/\r
120int readcompresszip(ZIP* zip, struct zipent* ent, char* data);\r
121\r
122/* Read decompressed data from a zip entry\r
123 in:\r
124 zip zip stream open\r
125 ent entry to read\r
126 out:\r
127 data buffer for data, ent.uncompressed_size UINT8s allocated by the caller\r
128 return:\r
129 ==0 success\r
130 <0 error\r
131*/\r
132int readuncompresszip(ZIP* zip, struct zipent* ent, char* data);\r
133\r
134int seekcompresszip(ZIP* zip, struct zipent* ent);\r
135\r
136/* public functions */\r
137int /* error */ load_zipped_file (const char *zipfile, const char *filename,\r
138 unsigned char **buf, unsigned int *length);\r
139int /* error */ checksum_zipped_file (const char *zipfile, const char *filename, unsigned int *length, unsigned int *sum);\r
140\r
141void unzip_cache_clear(void);\r
142\r
143/* public globals */\r
144extern int gUnzipQuiet; /* flag controls error messages */\r
145\r
146#ifdef __cplusplus\r
147}\r
148#endif\r
149\r
150#endif\r