compress.h revision 1.1
1/*	$OpenBSD: compress.h,v 1.1 2016/09/03 13:05:08 tedu Exp $	*/
2
3/*
4 * Copyright (c) 1997 Michael Shalayeff
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 *
28 */
29
30#include <sys/stat.h>
31
32struct z_info {
33	u_int32_t mtime;	/* timestamp */
34	u_int32_t crc;		/* crc */
35	u_int32_t hlen;		/* header length */
36	u_int64_t total_in;	/* # bytes in */
37	u_int64_t total_out;	/* # bytes out */
38};
39
40/*
41 * making it any bigger does not affect perfomance very much.
42 * actually this value is just a little bit better than 8192.
43 */
44#define Z_BUFSIZE 16384
45
46enum program_mode {
47	MODE_COMP,
48	MODE_DECOMP,
49	MODE_CAT
50} pmode;
51
52/*
53 * exit codes for compress
54 */
55#define	SUCCESS	0
56#define	FAILURE	1
57#define	WARNING	2
58
59extern char null_magic[];
60
61extern void *z_open(int, const char *, char *, int, u_int32_t, int);
62extern FILE *zopen(const char *, const char *,int);
63extern int zread(void *, char *, int);
64extern int zwrite(void *, const char *, int);
65extern int z_close(void *, struct z_info *, const char *, struct stat *);
66
67
68extern void *gz_open(int, const char *, char *, int, u_int32_t, int);
69extern int gz_read(void *, char *, int);
70extern int gz_write(void *, const char *, int);
71extern int gz_close(void *, struct z_info *, const char *, struct stat *);
72extern int gz_flush(void *, int);
73
74extern void *lzh_open(int, const char *, char *, int, u_int32_t, int);
75extern int lzh_read(void *, char *, int);
76extern int lzh_write(void *, const char *, int);
77extern int lzh_close(void *, struct z_info *);
78extern int lzh_flush(void *, int);
79
80extern void *null_open(int, const char *, char *, int, u_int32_t, int);
81extern int null_read(void *, char *, int);
82extern int null_write(void *, const char *, int);
83extern int null_close(void *, struct z_info *, const char *, struct stat *);
84extern int null_flush(void *, int);
85
86extern void setfile(const char *, int, struct stat *);
87