#define MAX_ZIPBYTES	0x03000000	/* Arbitrary max reasonable size, detecting corrupt */

struct zip_info
{
	int offset;
	int skipping;		/* Flag */
	unsigned int skipcount;	/* Counter for bytes skipped after filename */
	unsigned int namelen;	/* Length of filename */
	char filename[512];
};

void trim_leading(char* buf);
void trim_trailing(char* buf);
void trim_trailch(char* buf, char ch1, char ch2, char ch3);
void expand_list(char** buffer, const char* addition, const char* delim);
char* stristr(const char* haystack, const char* needle);
unsigned char hex2int(char* hexform);
void decode_hex(char* text, char hexflag, int underscore, char* optdest);
int base64_decode_line(const char* input, char* dest);
void base64_encode_line(const char* input, int insize, char* output);
void init_zip(struct zip_info* zip);
char* unzip_filename(char* databuf, int databuf_len, struct zip_info* zip);


syntax highlighted by Code2HTML, v. 0.9.1