/* Header for tiny.c */ /* includes */ #include /* typedefs */ typedef unsigned char u_char; typedef unsigned long u_long; typedef unsigned int u_int; /* defines */ #define OK 1 #define NG 0 /* error return value from huffman code */ #define T_MEM_ERROR -2 /* malloc failure */ #define T_BUF_ERROR -3 /* potential buffer overrun, compressed data too large */ /* cmd line option vals in program */ #define OPT_Z 1 #define OPT_H 2 #define OPT_D 3 /* compressed data header id's */ #define ID_ZLIB 0x7A4C6942 /* zLiB */ #define ID_HUFF 0x48754666 /* HuFf */ /* error message indexes */ #define INSUF_PARAM 1 #define INVALID_PARAM 2 #define DUP_FILENAME 3 #define INVALID_INFILE 4 #define INVALID_OUTFILE 5 #define FILE_READ_ERROR 6 #define FILE_SIZE_ZERO 7 #define FILE_ALREADY_COMPRESSED 8 #define MALLOC_FAIL 9 #define BUF_OVERRUN 10 #define FILE_WRITE_ERROR 11 #define NOT_TINYTIM_FILE 12 #define FILE_CORRUPT 13 #define LENGTH_MISREPORTED 14 /* structures */ /* header for compressed file */ typedef struct { u_long id; /* compression type identifier */ u_long orig_size; /* original data length */ u_long comp_size; /* compressed data length */ }S_HDR; /* for info used throughout tiny.c */ typedef struct { int option; char infile[100]; char outfile[100]; FILE *infile_p; FILE *outfile_p; u_char *wbuf_p,*rbuf_p; u_int rsize; u_int wsize; int errval; }S_ZIP; /* prototypes */ void Compress(void); int hufCompress(void); int zCompress(void); int GetfileSize(void); int Checkid(void); int ReadRawFile(void); void DeCompress(void); int zDeCompress(void); int hufDeCompress(void); int ReadCompressedFile(void); int ReadHeader(void); void FreeMem(void); int AllocMem(u_int readbufsize, u_int writebufsize); int Readfile(FILE *file_p, u_char *rbuffer, u_int readsize); int Writefile(FILE *file_p, u_char *wbuffer, u_int writesize); int OpenFiles(void); int GetOption(char *optstr); int CheckParams(int argc, char *argv[]); void Help(void); void ErrorReport(void); void ShowInfo(void); /* huffman prototypes */ int huffmanencoding(void); int huffmandecoding(void);