xref: /dragonfly/contrib/file/magic/Magdir/compress (revision 3b9cdfa3)
1327e51cbSPeter Avalos#------------------------------------------------------------------------------
2*3b9cdfa3SAntonio Huete Jimenez# $File: compress,v 1.83 2022/08/16 11:16:39 christos Exp $
3327e51cbSPeter Avalos# compress:  file(1) magic for pure-compression formats (no archives)
4327e51cbSPeter Avalos#
5327e51cbSPeter Avalos# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
6327e51cbSPeter Avalos#
7327e51cbSPeter Avalos# Formats for various forms of compressed data
8327e51cbSPeter Avalos# Formats for "compress" proper have been moved into "compress.c",
9327e51cbSPeter Avalos# because it tries to uncompress it to figure out what's inside.
10327e51cbSPeter Avalos
11327e51cbSPeter Avalos# standard unix compress
12327e51cbSPeter Avalos0	string		\037\235	compress'd data
1379343712SPeter Avalos!:mime	application/x-compress
1479343712SPeter Avalos!:apple	LZIVZIVU
15327e51cbSPeter Avalos>2	byte&0x80	>0		block compressed
16327e51cbSPeter Avalos>2	byte&0x1f	x		%d bits
17327e51cbSPeter Avalos
18327e51cbSPeter Avalos# gzip (GNU zip, not to be confused with Info-ZIP or PKWARE zip archiver)
196fca56fbSSascha Wildner# URL: https://en.wikipedia.org/wiki/Gzip
206fca56fbSSascha Wildner# Reference: https://tools.ietf.org/html/rfc1952
216fca56fbSSascha Wildner# Update: Joerg Jenderek, Apr 2019
22327e51cbSPeter Avalos#   Edited by Chris Chittleborough <cchittleborough@yahoo.com.au>, March 2002
23327e51cbSPeter Avalos#	* Original filename is only at offset 10 if "extra field" absent
24327e51cbSPeter Avalos#	* Produce shorter output - notably, only report compression methods
25327e51cbSPeter Avalos#         other than 8 ("deflate", the only method defined in RFC 1952).
266fca56fbSSascha Wildner# Note: find defs -iname '*.trid.xml' -exec grep -q '<Bytes>1F8B08' {} \; -ls
276fca56fbSSascha Wildner# TODO:
286fca56fbSSascha Wildner# FBR	Blueberry FlashBack screen Record	https://www.flashbackrecorder.com/
296fca56fbSSascha Wildner# KPR	KOffice/Calligra KPresenter		application/x-kpresenter
306fca56fbSSascha Wildner# KPT	KOffice/Calligra KPresenter template?	application/x-kpresenter
316fca56fbSSascha Wildner# SAV	Diggles Saved Game File			http://www.innonics.com
326fca56fbSSascha Wildner# SAV	FarCry (demo) saved game		http://www.farcry-thegame.com
336fca56fbSSascha Wildner# DAT	ZOAGZIP game data format		http://en.wikipedia.org/wiki/SD_Gundam_Capsule_Fighter
346fca56fbSSascha Wildner0       string          \037\213
356fca56fbSSascha Wildner# to display gzip compressed (strength=100=2*50) before other (strength=50)?
366fca56fbSSascha Wildner#!:strength * 2
376fca56fbSSascha Wildner# no FNAME and FCOMMENT bit implies no file name/comment. That means only binary
386fca56fbSSascha Wildner>3	byte&0x18	=0
396fca56fbSSascha Wildner# For binary gzipped no ASCII text should occur
406fca56fbSSascha Wildner#	mcd-monu-cad.trid.xml
416fca56fbSSascha Wildner>>10	string		MCD			Monu-Cad Drawing, Component or Font
426fca56fbSSascha Wildner#>>36	string		Created\ with\ MONU-CAD
436fca56fbSSascha Wildner#!:mime	application/octet-stream
446fca56fbSSascha Wildner# http://fileformats.archiveteam.org/wiki/Monu-CAD
456fca56fbSSascha Wildner#	http://www.monucad.com/downloads/FullDemo-2005.EXE
466fca56fbSSascha Wildner#	/HANDS96.MCC	Component
476fca56fbSSascha Wildner#	/DEMO_DD01.MCD	Drawing
486fca56fbSSascha Wildner#	/MCALF020.FNT	Font
496fca56fbSSascha Wildner!:ext	mcc/mcd/fnt
506fca56fbSSascha Wildner# http://www.generalcadd.com
516fca56fbSSascha Wildner>>10	string		GXD			General CADD, Drawing or Component
526fca56fbSSascha Wildner#!:mime	application/octet-stream
536fca56fbSSascha Wildner#	/gxc/BUILDINGEDGE.gxc			Component
546fca56fbSSascha Wildner#	/gxd/HOCKETT-STPAUL-WRHSE.gxd		Drawing
556fca56fbSSascha Wildner#	/gxd/POWERLAND-MILL-ADD-11.gxd		Drawing		v9.1.06
566fca56fbSSascha Wildner!:ext	gxc/gxd
576fca56fbSSascha Wildner#>>>13	ubyte		0			\b, version 0
586fca56fbSSascha Wildner>>>13	string		09			\b, version 9
596fca56fbSSascha Wildner# other gzipped binary like gzipped tar, VirtualBox extension package,...
606fca56fbSSascha Wildner>>10	default		x		gzip compressed data
616fca56fbSSascha Wildner!:mime	application/gzip
626fca56fbSSascha Wildner>>>0	use	gzip-info
636fca56fbSSascha Wildner# size of the original (uncompressed) input data modulo 2^32
64c990e5baSDaniel Fojt>>-0	offset		>48
656fca56fbSSascha Wildner>>>-4	ulelong		x		\b, original size modulo 2^32 %u
66c990e5baSDaniel Fojt>>-0	offset		<48		\b, truncated
676fca56fbSSascha Wildner# gzipped TAR or VirtualBox extension package
686fca56fbSSascha Wildner#!:mime	application/x-compressed-tar
696fca56fbSSascha Wildner#!:mime	application/x-virtualbox-vbox-extpack
706fca56fbSSascha Wildner# https://www.w3.org/TR/SVG/mimereg.html
716fca56fbSSascha Wildner#!:mime	image/image/svg+xml-compressed
726fca56fbSSascha Wildner#	zlib.3.gz
736fca56fbSSascha Wildner#	microcode-20180312.tgz
746fca56fbSSascha Wildner#	tpz same as tgz
756fca56fbSSascha Wildner#	lua-md5_1.2-1_i386_i486.ipk	https://en.wikipedia.org/wiki/Opkg
766fca56fbSSascha Wildner#	Oracle_VM_VirtualBox_Extension_Pack-5.0.12-104815.vbox-extpack
776fca56fbSSascha Wildner!:ext	gz/tgz/tpz/ipk/vbox-extpack/svgz
786fca56fbSSascha Wildner# FNAME/FCOMMENT bit implies file name/comment as iso-8859-1 text
796fca56fbSSascha Wildner>3	byte&0x18	>0		gzip compressed data
806fca56fbSSascha Wildner!:mime	application/gzip
816fca56fbSSascha Wildner# gzipped tar, gzipped Abiword document
826fca56fbSSascha Wildner#!:mime	application/x-compressed-tar
836fca56fbSSascha Wildner#!:mime	application/x-abiword-compressed
846fca56fbSSascha Wildner#!:mime	image/image/svg+xml-compressed
856fca56fbSSascha Wildner#	kleopatra_splashscreen.svgz	gzipped .svg
866fca56fbSSascha Wildner!:ext	gz/tgz/tpz/zabw/svgz
876fca56fbSSascha Wildner>>0	use	gzip-info
886fca56fbSSascha Wildner# size of the original (uncompressed) input data modulo 2^32
89c990e5baSDaniel Fojt>>-0	offset		>48
90c990e5baSDaniel Fojt>>>-4	ulelong		x		\b, original size modulo 2^32 %u
91c990e5baSDaniel Fojt>>-0	offset		<48		\b, truncated
926fca56fbSSascha Wildner#	display information of gzip compressed files
936fca56fbSSascha Wildner0	name				gzip-info
946fca56fbSSascha Wildner#>2	byte		x		THIS iS GZIP
95327e51cbSPeter Avalos>2	byte		<8		\b, reserved method
96327e51cbSPeter Avalos>2	byte		>8		\b, unknown method
97327e51cbSPeter Avalos>3	byte		&0x01		\b, ASCII
98327e51cbSPeter Avalos>3	byte		&0x02		\b, has CRC
99327e51cbSPeter Avalos>3	byte		&0x04		\b, extra field
100327e51cbSPeter Avalos>3	byte&0xC	=0x08
101327e51cbSPeter Avalos>>10	string		x		\b, was "%s"
102327e51cbSPeter Avalos>3	byte		&0x10		\b, has comment
103e8af9738SPeter Avalos>3	byte		&0x20		\b, encrypted
104e8af9738SPeter Avalos>4	ledate		>0		\b, last modified: %s
105e8af9738SPeter Avalos>8	byte		2		\b, max compression
106e8af9738SPeter Avalos>8	byte		4		\b, max speed
107327e51cbSPeter Avalos>9	byte		=0x00		\b, from FAT filesystem (MS-DOS, OS/2, NT)
108327e51cbSPeter Avalos>9	byte		=0x01		\b, from Amiga
109327e51cbSPeter Avalos>9	byte		=0x02		\b, from VMS
110327e51cbSPeter Avalos>9	byte		=0x03		\b, from Unix
111327e51cbSPeter Avalos>9	byte		=0x04		\b, from VM/CMS
112327e51cbSPeter Avalos>9	byte		=0x05		\b, from Atari
113327e51cbSPeter Avalos>9	byte		=0x06		\b, from HPFS filesystem (OS/2, NT)
114327e51cbSPeter Avalos>9	byte		=0x07		\b, from MacOS
115327e51cbSPeter Avalos>9	byte		=0x08		\b, from Z-System
116327e51cbSPeter Avalos>9	byte		=0x09		\b, from CP/M
117327e51cbSPeter Avalos>9	byte		=0x0A		\b, from TOPS/20
118327e51cbSPeter Avalos>9	byte		=0x0B		\b, from NTFS filesystem (NT)
119327e51cbSPeter Avalos>9	byte		=0x0C		\b, from QDOS
120327e51cbSPeter Avalos>9	byte		=0x0D		\b, from Acorn RISCOS
1216fca56fbSSascha Wildner# size of the original (uncompressed) input data modulo 2^32
1226fca56fbSSascha Wildner#>-4	ulelong		x		\b, original size modulo 2^32 %u
1236fca56fbSSascha Wildner#ERROR: line 114: non zero offset 1048572 at level 1
124327e51cbSPeter Avalos
125327e51cbSPeter Avalos# packed data, Huffman (minimum redundancy) codes on a byte-by-byte basis
126327e51cbSPeter Avalos0	string		\037\036	packed data
12779343712SPeter Avalos!:mime	application/octet-stream
128327e51cbSPeter Avalos>2	belong		>1		\b, %d characters originally
129327e51cbSPeter Avalos>2	belong		=1		\b, %d character originally
130327e51cbSPeter Avalos#
131327e51cbSPeter Avalos# This magic number is byte-order-independent.
132327e51cbSPeter Avalos0	short		0x1f1f		old packed data
13379343712SPeter Avalos!:mime	application/octet-stream
134327e51cbSPeter Avalos
135327e51cbSPeter Avalos# XXX - why *two* entries for "compacted data", one of which is
136327e51cbSPeter Avalos# byte-order independent, and one of which is byte-order dependent?
137327e51cbSPeter Avalos#
138327e51cbSPeter Avalos0	short		0x1fff		compacted data
13979343712SPeter Avalos!:mime	application/octet-stream
140327e51cbSPeter Avalos# This string is valid for SunOS (BE) and a matching "short" is listed
141327e51cbSPeter Avalos# in the Ultrix (LE) magic file.
142327e51cbSPeter Avalos0	string		\377\037	compacted data
14379343712SPeter Avalos!:mime	application/octet-stream
144327e51cbSPeter Avalos0	short		0145405		huf output
14579343712SPeter Avalos!:mime	application/octet-stream
146327e51cbSPeter Avalos
147327e51cbSPeter Avalos# bzip2
148327e51cbSPeter Avalos0	string		BZh		bzip2 compressed data
14979343712SPeter Avalos!:mime	application/x-bzip2
150*3b9cdfa3SAntonio Huete Jimenez!:ext	bz2
151327e51cbSPeter Avalos>3	byte		>47		\b, block size = %c00k
152327e51cbSPeter Avalos
1536fca56fbSSascha Wildner# bzip	a block-sorting file compressor
1546fca56fbSSascha Wildner#	by Julian Seward <sewardj@cs.man.ac.uk> and others
1556fca56fbSSascha Wildner0	string		BZ0		bzip compressed data
1566fca56fbSSascha Wildner!:mime	application/x-bzip
1576fca56fbSSascha Wildner>3	byte		>47		\b, block size = %c00k
1586fca56fbSSascha Wildner
15979343712SPeter Avalos# lzip
16079343712SPeter Avalos0	string		LZIP		lzip compressed data
16179343712SPeter Avalos!:mime application/x-lzip
16279343712SPeter Avalos>4	byte		x		\b, version: %d
16379343712SPeter Avalos
164327e51cbSPeter Avalos# squeeze and crunch
165327e51cbSPeter Avalos# Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
166327e51cbSPeter Avalos0	beshort		0x76FF		squeezed data,
167327e51cbSPeter Avalos>4	string		x		original name %s
168327e51cbSPeter Avalos0	beshort		0x76FE		crunched data,
169327e51cbSPeter Avalos>2	string		x		original name %s
170327e51cbSPeter Avalos0	beshort		0x76FD		LZH compressed data,
171327e51cbSPeter Avalos>2	string		x		original name %s
172327e51cbSPeter Avalos
173327e51cbSPeter Avalos# Freeze
174327e51cbSPeter Avalos0	string		\037\237	frozen file 2.1
175327e51cbSPeter Avalos0	string		\037\236	frozen file 1.0 (or gzip 0.5)
176327e51cbSPeter Avalos
177327e51cbSPeter Avalos# SCO compress -H (LZH)
178327e51cbSPeter Avalos0	string		\037\240	SCO compress -H (LZH) data
179327e51cbSPeter Avalos
180327e51cbSPeter Avalos# European GSM 06.10 is a provisional standard for full-rate speech
181327e51cbSPeter Avalos# transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse
182327e51cbSPeter Avalos# excitation/long term prediction) coding at 13 kbit/s.
183327e51cbSPeter Avalos#
184327e51cbSPeter Avalos# There's only a magic nibble (4 bits); that nibble repeats every 33
185327e51cbSPeter Avalos# bytes.  This isn't suited for use, but maybe we can use it someday.
186327e51cbSPeter Avalos#
187327e51cbSPeter Avalos# This will cause very short GSM files to be declared as data and
188327e51cbSPeter Avalos# mismatches to be declared as data too!
189327e51cbSPeter Avalos#0	byte&0xF0	0xd0		data
190327e51cbSPeter Avalos#>33	byte&0xF0	0xd0
191327e51cbSPeter Avalos#>66	byte&0xF0	0xd0
192327e51cbSPeter Avalos#>99	byte&0xF0	0xd0
193327e51cbSPeter Avalos#>132	byte&0xF0	0xd0		GSM 06.10 compressed audio
194327e51cbSPeter Avalos
195327e51cbSPeter Avalos# lzop from <markus.oberhumer@jk.uni-linz.ac.at>
196327e51cbSPeter Avalos0	string		\x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a	lzop compressed data
197327e51cbSPeter Avalos>9	beshort		<0x0940
198327e51cbSPeter Avalos>>9	byte&0xf0	=0x00		- version 0.
199327e51cbSPeter Avalos>>9	beshort&0x0fff	x		\b%03x,
200327e51cbSPeter Avalos>>13	byte		1		LZO1X-1,
201327e51cbSPeter Avalos>>13	byte		2		LZO1X-1(15),
202327e51cbSPeter Avalos>>13	byte		3		LZO1X-999,
203327e51cbSPeter Avalos## >>22	bedate		>0		last modified: %s,
204327e51cbSPeter Avalos>>14	byte		=0x00		os: MS-DOS
205327e51cbSPeter Avalos>>14	byte		=0x01		os: Amiga
206327e51cbSPeter Avalos>>14	byte		=0x02		os: VMS
207327e51cbSPeter Avalos>>14	byte		=0x03		os: Unix
208327e51cbSPeter Avalos>>14	byte		=0x05		os: Atari
209327e51cbSPeter Avalos>>14	byte		=0x06		os: OS/2
210327e51cbSPeter Avalos>>14	byte		=0x07		os: MacOS
211327e51cbSPeter Avalos>>14	byte		=0x0A		os: Tops/20
212327e51cbSPeter Avalos>>14	byte		=0x0B		os: WinNT
213327e51cbSPeter Avalos>>14	byte		=0x0E		os: Win32
214327e51cbSPeter Avalos>9	beshort		>0x0939
215327e51cbSPeter Avalos>>9	byte&0xf0	=0x00		- version 0.
216327e51cbSPeter Avalos>>9	byte&0xf0	=0x10		- version 1.
217327e51cbSPeter Avalos>>9	byte&0xf0	=0x20		- version 2.
218327e51cbSPeter Avalos>>9	beshort&0x0fff	x		\b%03x,
219327e51cbSPeter Avalos>>15	byte		1		LZO1X-1,
220327e51cbSPeter Avalos>>15	byte		2		LZO1X-1(15),
221327e51cbSPeter Avalos>>15	byte		3		LZO1X-999,
222327e51cbSPeter Avalos## >>25	bedate		>0		last modified: %s,
223327e51cbSPeter Avalos>>17	byte		=0x00		os: MS-DOS
224327e51cbSPeter Avalos>>17	byte		=0x01		os: Amiga
225327e51cbSPeter Avalos>>17	byte		=0x02		os: VMS
226327e51cbSPeter Avalos>>17	byte		=0x03		os: Unix
227327e51cbSPeter Avalos>>17	byte		=0x05		os: Atari
228327e51cbSPeter Avalos>>17	byte		=0x06		os: OS/2
229327e51cbSPeter Avalos>>17	byte		=0x07		os: MacOS
230327e51cbSPeter Avalos>>17	byte		=0x0A		os: Tops/20
231327e51cbSPeter Avalos>>17	byte		=0x0B		os: WinNT
232327e51cbSPeter Avalos>>17	byte		=0x0E		os: Win32
233327e51cbSPeter Avalos
234327e51cbSPeter Avalos# 4.3BSD-Quasijarus Strong Compression
2356fca56fbSSascha Wildner# https://minnie.tuhs.org/Quasijarus/compress.html
236327e51cbSPeter Avalos0	string		\037\241	Quasijarus strong compressed data
237327e51cbSPeter Avalos
238327e51cbSPeter Avalos# From: Cory Dikkers <cdikkers@swbell.net>
239327e51cbSPeter Avalos0	string		XPKF		Amiga xpkf.library compressed data
240327e51cbSPeter Avalos0	string		PP11		Power Packer 1.1 compressed data
241327e51cbSPeter Avalos0	string		PP20		Power Packer 2.0 compressed data,
242327e51cbSPeter Avalos>4	belong		0x09090909	fast compression
243327e51cbSPeter Avalos>4	belong		0x090A0A0A	mediocre compression
244327e51cbSPeter Avalos>4	belong		0x090A0B0B	good compression
245327e51cbSPeter Avalos>4	belong		0x090A0C0C	very good compression
246327e51cbSPeter Avalos>4	belong		0x090A0C0D	best compression
247327e51cbSPeter Avalos
248327e51cbSPeter Avalos# 7-zip archiver, from Thomas Klausner (wiz@danbala.tuwien.ac.at)
2496fca56fbSSascha Wildner# https://www.7-zip.org or DOC/7zFormat.txt
250327e51cbSPeter Avalos#
251327e51cbSPeter Avalos0	string		7z\274\257\047\034	7-zip archive data,
252327e51cbSPeter Avalos>6	byte		x			version %d
253327e51cbSPeter Avalos>7	byte		x			\b.%d
254e4d4ce0cSPeter Avalos!:mime	application/x-7z-compressed
255c30bd091SSascha Wildner!:ext 7z/cb7
256327e51cbSPeter Avalos
25779343712SPeter Avalos# Type: LZMA
2589f86ab30SPeter Avalos0	lelong&0xffffff	=0x5d
259e8af9738SPeter Avalos>12	leshort		0xff			LZMA compressed data,
260e8af9738SPeter Avalos!:mime	application/x-lzma
2619f86ab30SPeter Avalos>>5	lequad		=0xffffffffffffffff	streamed
2629f86ab30SPeter Avalos>>5	lequad		!0xffffffffffffffff	non-streamed, size %lld
263e8af9738SPeter Avalos>12	leshort		0			LZMA compressed data,
264e8af9738SPeter Avalos>>5	lequad		=0xffffffffffffffff	streamed
265e8af9738SPeter Avalos>>5	lequad		!0xffffffffffffffff	non-streamed, size %lld
26679343712SPeter Avalos
26779343712SPeter Avalos# http://tukaani.org/xz/xz-file-format.txt
268970935fdSSascha Wildner0	ustring		\xFD7zXZ\x00		XZ compressed data, checksum
269614728caSSascha Wildner!:strength * 2
270614728caSSascha Wildner!:mime	application/x-xz
271970935fdSSascha Wildner>7	byte&0xf	0x0			NONE
272970935fdSSascha Wildner>7	byte&0xf	0x1			CRC32
273970935fdSSascha Wildner>7	byte&0xf	0x4			CRC64
274970935fdSSascha Wildner>7	byte&0xf	0xa			SHA-256
275970935fdSSascha Wildner
276ff91a668SPeter Avalos# https://github.com/ckolivas/lrzip/blob/master/doc/magic.header.txt
277ff91a668SPeter Avalos0	string		LRZI			LRZIP compressed data
278ff91a668SPeter Avalos>4	byte		x			- version %d
279ff91a668SPeter Avalos>5	byte		x			\b.%d
280614728caSSascha Wildner>22	byte		1			\b, encrypted
281ff91a668SPeter Avalos!:mime	application/x-lrzip
282ff91a668SPeter Avalos
2836fca56fbSSascha Wildner# https://fastcompression.blogspot.fi/2013/04/lz4-streaming-format-final.html
28482c5fa3eSPeter Avalos0	lelong		0x184d2204	LZ4 compressed data (v1.4+)
285e8af9738SPeter Avalos!:mime	application/x-lz4
28682c5fa3eSPeter Avalos# Added by osm0sis@xda-developers.com
28782c5fa3eSPeter Avalos0 	lelong		0x184c2103	LZ4 compressed data (v1.0-v1.3)
28882c5fa3eSPeter Avalos!:mime	application/x-lz4
28982c5fa3eSPeter Avalos0	lelong		0x184c2102	LZ4 compressed data (v0.1-v0.9)
290e8af9738SPeter Avalos!:mime	application/x-lz4
291e8af9738SPeter Avalos
292c30bd091SSascha Wildner# Zstandard/LZ4 skippable frames
293c30bd091SSascha Wildner# https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
294c30bd091SSascha Wildner0         lelong&0xFFFFFFF0  0x184D2A50
295c30bd091SSascha Wildner>(4.l+8)  indirect	x
296c30bd091SSascha Wildner
297c30bd091SSascha Wildner# Zstandard Dictionary ID subroutine
298c30bd091SSascha Wildner0     name        zstd-dictionary-id
299c30bd091SSascha Wildner# Single Segment = True
300c30bd091SSascha Wildner>0    byte        &0x20   \b, Dictionary ID:
301c30bd091SSascha Wildner>>0   byte&0x03   0       None
302c30bd091SSascha Wildner>>0   byte&0x03   1
303c30bd091SSascha Wildner>>>1  byte        x       %u
304c30bd091SSascha Wildner>>0   byte&0x03   2
305c30bd091SSascha Wildner>>>1  leshort     x       %u
306c30bd091SSascha Wildner>>0   byte&0x03   3
307c30bd091SSascha Wildner>>>1  lelong      x       %u
308c30bd091SSascha Wildner# Single Segment = False
309c30bd091SSascha Wildner>0    byte        ^0x20   \b, Dictionary ID:
310c30bd091SSascha Wildner>>0   byte&0x03   0       None
311c30bd091SSascha Wildner>>0   byte&0x03   1
312c30bd091SSascha Wildner>>>2  byte        x       %u
313c30bd091SSascha Wildner>>0   byte&0x03   2
314c30bd091SSascha Wildner>>>2  leshort     x       %u
315c30bd091SSascha Wildner>>0   byte&0x03   3
316c30bd091SSascha Wildner>>>2  lelong      x       %u
317c30bd091SSascha Wildner
318c30bd091SSascha Wildner# Zstandard compressed data
319c30bd091SSascha Wildner# https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
320c30bd091SSascha Wildner0     lelong       0xFD2FB522  Zstandard compressed data (v0.2)
3216fca56fbSSascha Wildner!:mime  application/zstd
322c30bd091SSascha Wildner0     lelong       0xFD2FB523  Zstandard compressed data (v0.3)
3236fca56fbSSascha Wildner!:mime  application/zstd
324c30bd091SSascha Wildner0     lelong       0xFD2FB524  Zstandard compressed data (v0.4)
3256fca56fbSSascha Wildner!:mime  application/zstd
326c30bd091SSascha Wildner0     lelong       0xFD2FB525  Zstandard compressed data (v0.5)
3276fca56fbSSascha Wildner!:mime  application/zstd
328c30bd091SSascha Wildner0     lelong       0xFD2FB526  Zstandard compressed data (v0.6)
3296fca56fbSSascha Wildner!:mime  application/zstd
330c30bd091SSascha Wildner0     lelong       0xFD2FB527  Zstandard compressed data (v0.7)
3316fca56fbSSascha Wildner!:mime  application/zstd
332c30bd091SSascha Wildner>4    use          zstd-dictionary-id
333c30bd091SSascha Wildner0     lelong       0xFD2FB528  Zstandard compressed data (v0.8+)
3346fca56fbSSascha Wildner!:mime  application/zstd
335c30bd091SSascha Wildner>4    use          zstd-dictionary-id
336c30bd091SSascha Wildner
337c30bd091SSascha Wildner# https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
338c30bd091SSascha Wildner0  lelong    0xEC30A437  Zstandard dictionary
3396fca56fbSSascha Wildner!:mime  application/x-std-dictionary
340c30bd091SSascha Wildner>4 lelong    x           (ID %u)
341c30bd091SSascha Wildner
342327e51cbSPeter Avalos# AFX compressed files (Wolfram Kleff)
343327e51cbSPeter Avalos2	string		-afx-		AFX compressed file data
344327e51cbSPeter Avalos
345327e51cbSPeter Avalos# Supplementary magic data for the file(1) command to support
346327e51cbSPeter Avalos# rzip(1).  The format is described in magic(5).
347327e51cbSPeter Avalos#
348327e51cbSPeter Avalos# Copyright (C) 2003 by Andrew Tridgell.  You may do whatever you want with
349327e51cbSPeter Avalos# this file.
350327e51cbSPeter Avalos#
351327e51cbSPeter Avalos0	string		RZIP		rzip compressed data
352327e51cbSPeter Avalos>4	byte		x		- version %d
353327e51cbSPeter Avalos>5	byte		x		\b.%d
354327e51cbSPeter Avalos>6	belong		x		(%d bytes)
35579343712SPeter Avalos
356e4d4ce0cSPeter Avalos0	string		ArC\x01		FreeArc archive <http://freearc.org>
357e4d4ce0cSPeter Avalos
358e4d4ce0cSPeter Avalos# Type:	DACT compressed files
359e4d4ce0cSPeter Avalos0	long	0x444354C3	DACT compressed data
360e4d4ce0cSPeter Avalos>4	byte	>-1		(version %i.
361e4d4ce0cSPeter Avalos>5	byte	>-1		%i.
362e4d4ce0cSPeter Avalos>6	byte	>-1		%i)
363e4d4ce0cSPeter Avalos>7	long	>0		, original size: %i bytes
364e4d4ce0cSPeter Avalos>15	long	>30		, block size: %i bytes
365e8af9738SPeter Avalos
366e8af9738SPeter Avalos# Valve Pack (VPK) files
367e8af9738SPeter Avalos0	lelong	0x55aa1234	Valve Pak file
368e8af9738SPeter Avalos>0x4	lelong	x		\b, version %u
369e8af9738SPeter Avalos>0x8	lelong	x		\b, %u entries
370e8af9738SPeter Avalos
37182c5fa3eSPeter Avalos# Snappy framing format
3726fca56fbSSascha Wildner# https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
37382c5fa3eSPeter Avalos0	string	\377\006\0\0sNaPpY	snappy framed data
37482c5fa3eSPeter Avalos!:mime	application/x-snappy-framed
37582c5fa3eSPeter Avalos
3766fca56fbSSascha Wildner# qpress, https://www.quicklz.com/
37782c5fa3eSPeter Avalos0	string	qpress10	qpress compressed data
37882c5fa3eSPeter Avalos!:mime	application/x-qpress
37982c5fa3eSPeter Avalos
38082c5fa3eSPeter Avalos# Zlib https://www.ietf.org/rfc/rfc6713.txt
381c30bd091SSascha Wildner0	string/b	x
382c30bd091SSascha Wildner>0	beshort%31	=0
383c30bd091SSascha Wildner>>0	byte&0xf	=8
384c30bd091SSascha Wildner>>>0	byte&0x80 	=0	zlib compressed data
38582c5fa3eSPeter Avalos!:mime	application/zlib
3866fca56fbSSascha Wildner
3876fca56fbSSascha Wildner# BWC compression
3886fca56fbSSascha Wildner0	string		BWC
3896fca56fbSSascha Wildner>3	byte		0	BWC compressed data
3906fca56fbSSascha Wildner
3916fca56fbSSascha Wildner# UCL compression
3926fca56fbSSascha Wildner0	bequad		0x00e955434cff011a	UCL compressed data
3936fca56fbSSascha Wildner
3946fca56fbSSascha Wildner# Softlib archive
3956fca56fbSSascha Wildner0	string		SLIB	Softlib archive
3966fca56fbSSascha Wildner>4	leshort		x	\b, version %d
3976fca56fbSSascha Wildner>6	leshort		x	(contains %d files)
3986fca56fbSSascha Wildner
3996fca56fbSSascha Wildner# URL:  https://github.com/lzfse/lzfse/blob/master/src/lzfse_internal.h#L276
4006fca56fbSSascha Wildner# From: Eric Hall <eric.hall@darkart.com>
4016fca56fbSSascha Wildner0	string	bvx-	lzfse encoded, no compression
4026fca56fbSSascha Wildner0	string	bvx1	lzfse compressed, uncompressed tables
4036fca56fbSSascha Wildner0	string	bvx2	lzfse compressed, compressed tables
4046fca56fbSSascha Wildner0	string	bvxn	lzfse encoded, lzvn compressed
405c990e5baSDaniel Fojt
406c990e5baSDaniel Fojt# pcxLib.exe compression program
407c990e5baSDaniel Fojt# http://www.shikadi.net/moddingwiki/PCX_Library
408c990e5baSDaniel Fojt0	string/b	pcxLib
409c990e5baSDaniel Fojt>0x0A	string/b	Copyright\020(c)\020Genus\020Microprogramming,\020Inc.	pcxLib compressed
410