compress revision 133359
1181624Skmacy
2181624Skmacy#------------------------------------------------------------------------------
3181624Skmacy# compress:  file(1) magic for pure-compression formats (no archives)
4181624Skmacy#
5181624Skmacy# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
6181624Skmacy#
7181624Skmacy# Formats for various forms of compressed data
8181624Skmacy# Formats for "compress" proper have been moved into "compress.c",
9181624Skmacy# because it tries to uncompress it to figure out what's inside.
10181624Skmacy
11181624Skmacy# standard unix compress
12181624Skmacy0	string		\037\235	compress'd data
13181624Skmacy>2	byte&0x80	>0		block compressed
14181624Skmacy>2	byte&0x1f	x		%d bits
15181624Skmacy
16181624Skmacy# gzip (GNU zip, not to be confused with Info-ZIP or PKWARE zip archiver)
17181624Skmacy#   Edited by Chris Chittleborough <cchittleborough@yahoo.com.au>, March 2002
18181624Skmacy#	* Original filename is only at offset 10 if "extra field" absent
19181624Skmacy#	* Produce shorter output - notably, only report compression methods
20181624Skmacy#	  other than 8 ("deflate", the only method defined in RFC 1952).
21181624Skmacy0       string          \037\213        gzip compressed data
22181624Skmacy>2	byte		<8		\b, reserved method
23181624Skmacy>2	byte		>8		\b, unknown method
24181624Skmacy>3	byte		&0x01		\b, ASCII
25181624Skmacy>3	byte		&0x02		\b, continuation
26181624Skmacy>3	byte		&0x04		\b, extra field
27181624Skmacy>3	byte&0xC	=0x08
28181624Skmacy>>10	string		x		\b, was "%s"
29181624Skmacy>9	byte		=0x00		\b, from MS-DOS
30181624Skmacy>9	byte		=0x01		\b, from Amiga
31181624Skmacy>9	byte		=0x02		\b, from VMS
32181624Skmacy>9	byte		=0x03		\b, from Unix
33181624Skmacy>9	byte		=0x05		\b, from Atari
34181624Skmacy>9	byte		=0x06		\b, from OS/2
35181624Skmacy>9	byte		=0x07		\b, from MacOS
36181624Skmacy>9	byte		=0x0A		\b, from Tops/20
37181624Skmacy>9	byte		=0x0B		\b, from Win/32
38181624Skmacy>3	byte		&0x10		\b, comment
39181624Skmacy>3	byte		&0x20		\b, encrypted
40181624Skmacy### >4	ledate		x		last modified: %s,
41181624Skmacy>8	byte		2		\b, max compression
42181624Skmacy>8	byte		4		\b, max speed
43181624Skmacy
44181624Skmacy# packed data, Huffman (minimum redundancy) codes on a byte-by-byte basis
45181624Skmacy0	string		\037\036	packed data
46181624Skmacy>2	belong		>1		\b, %d characters originally
47181624Skmacy>2	belong		=1		\b, %d character originally
48181624Skmacy#
49181624Skmacy# This magic number is byte-order-independent.
50181624Skmacy0	short		0x1f1f		old packed data
51181624Skmacy
52181624Skmacy# XXX - why *two* entries for "compacted data", one of which is
53181624Skmacy# byte-order independent, and one of which is byte-order dependent?
54181624Skmacy#
55181624Skmacy0	short		0x1fff		compacted data
56181624Skmacy# This string is valid for SunOS (BE) and a matching "short" is listed
57181624Skmacy# in the Ultrix (LE) magic file.
58181624Skmacy0	string		\377\037	compacted data
59181624Skmacy0	short		0145405		huf output
60181624Skmacy
61181624Skmacy# bzip2
62181624Skmacy0	string		BZh		bzip2 compressed data
63181624Skmacy>3	byte		>47		\b, block size = %c00k
64181624Skmacy
65181624Skmacy# squeeze and crunch
66181624Skmacy# Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
67181624Skmacy0	beshort		0x76FF		squeezed data,
68181624Skmacy>4	string		x		original name %s
69181624Skmacy0	beshort		0x76FE		crunched data,
70181624Skmacy>2	string		x		original name %s
71181624Skmacy0	beshort		0x76FD		LZH compressed data,
72181624Skmacy>2	string		x		original name %s
73181624Skmacy
74181624Skmacy# Freeze
75181624Skmacy0	string		\037\237	frozen file 2.1
76181624Skmacy0	string		\037\236	frozen file 1.0 (or gzip 0.5)
77181624Skmacy
78181624Skmacy# SCO compress -H (LZH)
79181624Skmacy0	string		\037\240	SCO compress -H (LZH) data
80181624Skmacy
81181624Skmacy# European GSM 06.10 is a provisional standard for full-rate speech
82181624Skmacy# transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse
83181624Skmacy# excitation/long term prediction) coding at 13 kbit/s.
84181624Skmacy#
85181624Skmacy# There's only a magic nibble (4 bits); that nibble repeats every 33
86181624Skmacy# bytes.  This isn't suited for use, but maybe we can use it someday.
87181624Skmacy#
88181624Skmacy# This will cause very short GSM files to be declared as data and
89181624Skmacy# mismatches to be declared as data too!
90181624Skmacy#0	byte&0xF0	0xd0		data
91181624Skmacy#>33	byte&0xF0	0xd0
92181624Skmacy#>66	byte&0xF0	0xd0
93181624Skmacy#>99	byte&0xF0	0xd0
94181624Skmacy#>132	byte&0xF0	0xd0		GSM 06.10 compressed audio
95181624Skmacy
96181624Skmacy# bzip	a block-sorting file compressor
97181624Skmacy#	by Julian Seward <sewardj@cs.man.ac.uk> and others
98181624Skmacy#
99181624Skmacy0	string		BZ		bzip compressed data
100183375Skmacy>2	byte		x		\b, version: %c
101181624Skmacy>3	string		=1		\b, compression block size 100k
102181624Skmacy>3	string		=2		\b, compression block size 200k
103181624Skmacy>3	string		=3		\b, compression block size 300k
104181624Skmacy>3	string		=4		\b, compression block size 400k
105181624Skmacy>3	string		=5		\b, compression block size 500k
106181624Skmacy>3	string		=6		\b, compression block size 600k
107181624Skmacy>3	string		=7		\b, compression block size 700k
108181624Skmacy>3	string		=8		\b, compression block size 800k
109181624Skmacy>3	string		=9		\b, compression block size 900k
110181624Skmacy
111181624Skmacy# lzop from <markus.oberhumer@jk.uni-linz.ac.at>
112181624Skmacy0	string		\x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a	lzop compressed data
113181624Skmacy>9	beshort		<0x0940
114181624Skmacy>>9	byte&0xf0	=0x00		- version 0.
115181624Skmacy>>9	beshort&0x0fff	x		\b%03x,
116181624Skmacy>>13	byte		1		LZO1X-1,
117251767Sgibbs>>13	byte		2		LZO1X-1(15),
118251767Sgibbs>>13	byte		3		LZO1X-999,
119251767Sgibbs## >>22	bedate		>0		last modified: %s,
120251767Sgibbs>>14	byte		=0x00		os: MS-DOS
121251767Sgibbs>>14	byte		=0x01		os: Amiga
122251767Sgibbs>>14	byte		=0x02		os: VMS
123251767Sgibbs>>14	byte		=0x03		os: Unix
124251767Sgibbs>>14	byte		=0x05		os: Atari
125251767Sgibbs>>14	byte		=0x06		os: OS/2
126251767Sgibbs>>14	byte		=0x07		os: MacOS
127251767Sgibbs>>14	byte		=0x0A		os: Tops/20
128251767Sgibbs>>14	byte		=0x0B		os: WinNT
129251767Sgibbs>>14	byte		=0x0E		os: Win32
130251767Sgibbs>9	beshort		>0x0939
131251767Sgibbs>>9	byte&0xf0	=0x00		- version 0.
132251767Sgibbs>>9	byte&0xf0	=0x10		- version 1.
133251767Sgibbs>>9	byte&0xf0	=0x20		- version 2.
134251767Sgibbs>>9	beshort&0x0fff	x		\b%03x,
135251767Sgibbs>>15	byte		1		LZO1X-1,
136251767Sgibbs>>15	byte		2		LZO1X-1(15),
137251767Sgibbs>>15	byte		3		LZO1X-999,
138251767Sgibbs## >>25	bedate		>0		last modified: %s,
139251767Sgibbs>>17	byte		=0x00		os: MS-DOS
140251767Sgibbs>>17	byte		=0x01		os: Amiga
141251767Sgibbs>>17	byte		=0x02		os: VMS
142251767Sgibbs>>17	byte		=0x03		os: Unix
143251767Sgibbs>>17	byte		=0x05		os: Atari
144251767Sgibbs>>17	byte		=0x06		os: OS/2
145251767Sgibbs>>17	byte		=0x07		os: MacOS
146251767Sgibbs>>17	byte		=0x0A		os: Tops/20
147251767Sgibbs>>17	byte		=0x0B		os: WinNT
148251767Sgibbs>>17	byte		=0x0E		os: Win32
149251767Sgibbs
150251767Sgibbs# 4.3BSD-Quasijarus Strong Compression
151251767Sgibbs# http://minnie.tuhs.org/Quasijarus/compress.html
152251767Sgibbs0	string		\037\241	Quasijarus strong compressed data
153251767Sgibbs
154251767Sgibbs# From: Cory Dikkers <cdikkers@swbell.net>
155251767Sgibbs0	string		XPKF		Amiga xpkf.library compressed data
156251767Sgibbs0	string		PP11		Power Packer 1.1 compressed data
157251767Sgibbs0	string		PP20		Power Packer 2.0 compressed data,
158251767Sgibbs>4	belong		0x09090909	fast compression
159251767Sgibbs>4	belong		0x090A0A0A	mediocre compression
160251767Sgibbs>4	belong		0x090A0B0B	good compression
161251767Sgibbs>4	belong		0x090A0C0C	very good compression
162251767Sgibbs>4	belong		0x090A0C0D	best compression
163251767Sgibbs
164251767Sgibbs# 7z archiver, from Thomas Klausner (wiz@danbala.tuwien.ac.at)
165251767Sgibbs# http://www.7-zip.org or DOC/7zFormat.txt 
166251767Sgibbs#
167251767Sgibbs0	string		7z\274\257\047\034	7z archive data,
168251767Sgibbs>6	byte		x			version %d
169251767Sgibbs>7	byte		x			\b.%d
170251767Sgibbs
171251767Sgibbs# AFX compressed files (Wolfram Kleff)
172251767Sgibbs2	string		-afx-		AFX compressed file data
173251767Sgibbs