.TH HUFFMAN 3 .SH NAME \fBhuffman\fR \- huffman coding/decoding .SH SYNOPSIS .ta .75i 1.5i 2.25i 3i 3.75i 4.5i 5.25i 6i .PP .nf \fB #include <huffman.h> Huff_t *huffinit(Sfio_t *\fIfile\fP, long \fIsize\fP) Huff_t *huffgethdr(Sfio_t *\fIfile\fP) int huffputhdr(Huff_t *\fIptr\fP, Sfio_t *\fIfile\fP) int huffencode(Huff_t *\fIptr\fP, Sfio_t *\fIinfile\fP, Sfio_t *\fIoutfile\fP, int \fIsize\fP) int huffdecode(Huff_t *\fIptr\fP, Sfio_t *\fIinfile\fP, Sfio_t *\fIoutfile\fP, int \fIsize\fP) int huffend(Huff_t *\fIptr\fP) long huffisize(Huff_t *\fIptr\fP) long huffosize(Huff_t *\fIptr\fP) int huffhsize(Huff_t *\fIptr\fP) \fR .fi .SH DESCRIPTION .PP The \fIhuffman\fR routines can be used to pack and unpack files or strings using static huffman encoding. The .I huffint routine counts the frequency of the first .I size characters in .I file and returns an encoded table based on these frequencies. The .I file argument can refer to a file or string that has been opened with .IR dfopen (3). If .I size is less than zero, the complete file or string will be used. When successful, .I huffinit returns a pointer to an encoded huffman table which can be used as the first argument to other .I huffman routines. Otherwise, .I huffinit returns a null pointer and the .B errno variable contains the cause of the error. .PP .I huffputhdr writes the encoding information to .I file in the format used by the .IR pack (1) utility. When successful, .I huffputhdr returns the number of bytes written. Otherwise, .I huffputhdr returns \-1 and the .B errno variable contains the cause of the error. .PP .I huffgethdr reads from .I file and builds the encoding table. The information in .I file must be in the format produced by .IR huffputhdr . When successful, .I huffgethdr returns a pointer to an encoded huffman table which can be used as the first argument to other .I huffman routines. Otherwise, .I huffgethdr returns a null pointer and the .B errno variable contains the cause of the error. .PP .I huffencode encodes .I infile using the huffman codes contained in .I ptr and writes the encoded result onto .IR outfile . The .I size arguments specifies the number of bytes from .I infile that will be encoded. The whole file will be encoded if .I size is less than zero. When successful, .I huffencode returns the number of bytes written. Otherwise, .I huffencode returns \-1 and the .B errno variable contains the cause of the error. When successful, .PP .I huffdecode decodes .I infile using the huffman codes contained in .I ptr and writes the decoded results onto .IR outfile . The .I size arguments specifies the number maximum number of bytes that will be decoded and written to .IR outfile . The whole file will be decoded if .I size is less than zero. .I huffdecode returns the number of bytes decoded. Otherwise, .I huffdecode returns \-1 and the .B errno variable contains the cause of the error. .PP .IR huffisize , .IR huffosize , and .I huffhsize provide the size of the input file, the output file, and the header respectively. .SH HISTORY \fIhuffman\fR is a library interface that can be used to implement the pack and unpack utilities provided in System V. The code was derived from the pack and unpack utilities but was substantially rewritten to provide better performance and to utilize the sfio library. It can also be use to encode and decode strings. .SH AUTHOR David Korn .SH SEE ALSO pack(1), unpack(1), sfio(3).