summaryrefslogtreecommitdiff
path: root/usr.bin/file/magdir/compress
blob: 702eb68cb81b70bef2e781506ef4f394e905b369 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

#------------------------------------------------------------------------------
# compress:  file(1) magic for pure-compression formats (no archives)
#
# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, whap, etc.
#
# Formats for various forms of compressed data
# Formats for "compress" proper have been moved into "compress.c",
# because it tries to uncompress it to figure out what's inside.

# standard unix compress
0	string		\037\235	compress'd data
>2	byte&0x80	>0		block compressed
>2	byte&0x1f	x		%d bits

# gzip (GNU zip, not to be confused with [Info-ZIP/PKWARE] zip archiver)
0       string          \037\213        gzip compressed data
>2      byte            <8              - reserved method,
>2      byte            8               - deflate method,
>3	byte		&0x01		ascii,
>3	byte		&0x02		continuation,
>3	byte		&0x04		extra field,
>3	byte		&0x08		original file name,
>3	byte		&0x10		comment,
>3	byte		&0x20		encrypted,
>4	ledate		x		last modified: %s,
>8	byte		2		max compression,
>8	byte		4		max speed,
>9	byte		=0x00		os: MS-DOS
>9	byte		=0x01		os: Amiga
>9	byte		=0x02		os: VMS
>9	byte		=0x03		os: Unix
>9	byte		=0x05		os: Atari
>9	byte		=0x06		os: OS/2
>9	byte		=0x07		os: MacOS
>9	byte		=0x0A		os: Tops/20
>9	byte		=0x0B		os: Win/32

# According to gzip.h, this is the correct byte order for packed data.
#
0	string		\037\036	packed data
>2	belong		>1		%d characters originally
>2	belong		=1		%d character originally
#
# This magic number is byte-order-independent.
# Are there two types of old packed data?  One big endian, one little endian?
#
#0	beshort		017437		old packed data, big endian
#0	leshort		017437		old packed data, little endian
0	short		017437		old packed data

# XXX - why *two* entries for "compacted data", one of which is
# byte-order independent, and one of which is byte-order dependent?
#
0	short		0x1fff		compacted data
0	string		\377\037	compacted data
0	short		0145405		huf output

# Squeeze and Crunch...
# These numbers were gleaned from the Unix versions of the programs to
# handle these formats.  Note that I can only uncrunch, not crunch, and
# I didn't have a crunched file handy, so the crunch number is untested.
#				Keith Waclena <keith@cerberus.uchicago.edu>
0	leshort		0x76FF		squeezed data (CP/M, DOS)
0	leshort		0x76FE		crunched data (CP/M, DOS)

# Freeze
0	string		\037\237	Frozen file 2.1
0	string		\037\236	Frozen file 1.0 (or gzip 0.5)

# lzh?
0	string		\037\240	LZH compressed data

# European GSM 06.10 is a provisional standard for full-rate speech
# transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse
# excitation/long term prediction) coding at 13 kbit/s.
#
# WEAK - There's only a magic nibble (4 bits); but that nibble repeats
# every 33 bytes.  This magic is NOT suited for use, but maybe we can
# use it someday.
#
# This will cause very short GSM files to be declared as data and
# mismatches to be declared as data too!
#0	byte&0xF0	0xd0	data
#>33	byte&0xF0	0xd0
#>66	byte&0xF0	0xd0
#>99	byte&0xF0	0xd0
#>132	byte&0xF0	0xd0	GSM 06.10 compressed audio