# Copr (c) 1993 Richard Breuer. MAGIC is freeware. No warranties.
# File recognition patterns
#
# $Id: magic 1.4 1993/04/05 18:33:30 Ricki Exp $
#
# This file is part of the RUTILS40 package. It can be used with the FILE
# command to identify (guess) unknown files.
#
#
# You   are   free to use and modify this file, as  long   as the header
# remains unchanged (the header ends with the string "<End-Of-Header>").
# Please  report substantial modifications  to the author, so that I can
# include them in the next release.  Each submission will make this file
# more useful! The author disclaims all warranties as  to this software,
# whether express or  implied,  including without limitation any implied
# warranties  of   merchantability,  fitness for  a  particular purpose,
# functionality or data integrity or protection. Phew.
# 
# Richard Breuer
#
# Brunssumstrasse 6
# 5100 Aachen
# Germany
#
# Phone:  +49/241/85605
# Fax:    +49/241/8021329
# Email:  ricki@rwthi3.informatik.rwth-aachen.de
#
#	$Log: magic $
#	Revision 1.4  1993/04/05  18:33:30  Ricki
#	added zsh
#
#	Revision 1.3  1993/03/19  17:19:17  Ricki
#	adaption to FILEs new 'x' facility for strings
#	new comments include the unix man page for magic now
#
#	Revision 1.2  1993/03/11  14:44:23  Ricki
#	Jounis suggestions
#
#	Revision 1.1  1993/02/11  12:09:54  Ricki
#	Initial revision
#
# Credits:
#
#   The following other people added information to this file:
#	jon@stekt.oulu.fi (Jouni Miettunen)
#	maman@mars.Colorado.EDU (Nathan M. Maman)
#	Sun Microsystems
#	rthomson@mesa.dsd.es.com (Rich Thomson)
#	csd05@keele.ac.uk (Yufan Hu)
#	roe2@ellis.uchicago.edu (Cave Newt)
#	pb@sunra10.cern.ch (Peter Beckmann)
#	Gisbert W. Selke (I translated most of his MAGIC.FT file)
#
#
# NOTES:
#   I made some little changes to the 'standard' magic file format. Before
#   you kill me for that, read on :-)
#
#   The following text is copied from a unix manual page. I marked my
#   modifications and enhancements with a change bar at the right.
#
#     ------------------------------------------------------------
#     Each line of the file specifies a test to be  performed.   A
#     test  compares  the  data starting at a particular offset in
#     the file with a 1-byte, 2-byte, or 4-byte numeric value or a
#     string.   If  the  test succeeds, a message is printed.  The
#     line consists of the following fields:
#
#          offset TAB* type TAB* value TAB* message
#
#     offset    A number specifying the offset, in bytes, into the
#               file of the data which is to be tested.
#               A negative offset means end-of-file minus offset.        |
#
#     type      The type of the data to be tested.   The  possible
#               values are:
#
#               byte     A one-byte value.
#               short    A two-byte value.
#               long     A four-byte value.
#               rshort   A two-byte value with reversed byte order.      |
#               rlong    A four-byte value with reversed byte order.     |
#               string   A string of bytes.
#
#               The types byte, short, long, rshort and  rlong may       |
#               optionally  be followed by a mask specifier of the
#               form  &number.  If a mask specifier is  given, the
#               value  is   AND'ed    with  the  number before any
#               comparisons are done. The number is specified in C
#               form.  For instance, 13 is decimal, 013  is octal,
#               and 0x13 is hexade- cimal.
#
#     value     The value to be compared with the value  from  the
#               file.   If  the  type  is  numeric,  this value is
#               specified in C form.  If it is  a  string,  it  is
#               specified  as  a  C  string with the usual escapes
#               permitted (for instance, \n for NEWLINE).
#
#               If   the value field of a string value starts with	|
#               the letter 'x',   it is treated as a mask  for any	|
#               string with a given length. 'x' may be followed by	|
#               the length in bytes, like 'x10'. If  the length is	|
#               omitted, 255 is  assumed. If a normal string value	|
#               shall start with 'x', you must use '\170' instead.	|
#
#               For normal string values, the byte string from the	|
#               file   must  match the specified byte string.  The
#               byte string from  the file which is matched is the
#               same length as the specified byte string.
#
#               Numeric values may  be  preceded  by  a  character
#               indicating  the operation to be performed.  It may
#               be `=', to specify that the value  from  the  file
#               must  equal  the  specified value, `<', to specify
#               that the value from the file must be less than the
#               specified  value,  `>',  to specify that the value
#               from the file must be greater than  the  specified
#               value,  `&',  to  specify that all the bits in the
#               specified value must be set in the value from  the
#               file,  `^',  to  specify  that at least one of the
#               bits in the specified value must not be set in the
#               value  from  the  file,  or  x to specify that any
#               value will match.  If the character is omitted, it
#               is assumed to be `='.
#
#     message   The  message  to  be  printed  if  the  comparison
#               succeeds.   If  the  string  contains a printf(3V)
#               format specification,  the  value  from  the  file
#               (with  any specified masking performed) is printed
#               using the message as the format string.
#
#               You   must make sure that the format specification	|
#               corresponds with  the data type of the  value. The	|
#               following table shows the legal correspondencies:	|
#
#			byte		%b (NOTE this is new!)		|
#	       		short		%d or %u			|
#	       		rshort		%d or %u			|
#	       		long		%ld or %lu			|
#	       		rlong		%ld or %lu			|
#	       		string		%s				|
#     ------------------------------------------------------------
#
# FURTHER NOTES:
#	- It should be possible to append nearly each MAGIC file floating
#	  around in cyberworld to this file (except a crude version I
#	  saw only once - you will notice if you see it... :-) ... if you
#	  append one, you will send me the updated version, will you?).
#
#	  Minor problems may arise, though:
#		- I once saw a dialect which defined '&' in column 1. You
#		  must replace this with '>'
#		- The values must correspond with the C style format elements
#		  (at least in length). You must change combinations like
#		  "byte <--> %d" to "byte <--> %b" (see above for details)
#		- If FILE reports a syntax error, check if there are no
#		  SPACES between the definition columns
#		- The 'x' in strings which start with it, must be replaced
#		  with '\170'
#
#	- There are pseudo-comments starting with #@, followed by a list
#	  of 3-char keywords. If FILE encounters such a comments, it reads
#	  the keywords and assigns them to all the following patterns -
#	  until the next #@ comments (or eof) comes. Currently there are
#	  these possible keywords:
#
#		arc	Archive (collection of several other files)
#		asc	ASCII file
#		bin	Binary file
#		exe	Executable file
#		pic	Picture file
#		snd	Sound file
#		txt	Text file (eg. from a Wordprocessor)
#
#	  The keywords are output by FILE and may help to search for
#	  specific properties. You may also restrict the search of FILE
#	  to one or more of the above categories. If no keyword is specified
#	  (as in 'standard' magic files), all are assumed.
#
#	  Since the keyword lists are input as comments, they are no problem
#	  for other implementations.
#
#	- You may use an arbitary number of sublevels, marked with >>, >>>,
#	  and so on. The meaning of this can be explained as follows. If
#	  FILE finds a pattern which does not match, it will skip all the
#	  following patterns until one on the same or a lower level is
#	  found. At this point the examination continues normally.
#
#	- The magic file may contain lines w/o an output message. This means
#	  that recognition is 'delayed', ie. a file is not regarded as
#	  recognized until it matches the following patterns (which have
#	  levels > 0). This delayed recognition allows to specify multiple
#	  conditions for a matching which must all be fulfilled. Let's
#	  consider an example for that:
#
#		0	string	MZ
#		>28	string	RJSX\377\377	ARJ self-extracting archive
#
#	  The first line is matched by all MSDOS EXE files, but the second
#	  will finally identify ARJ sea's. On the other hand, the second
#	  pattern will not be checked at all, if the file is no EXE file.
#	  See the patterns for TGA files for an (extreme) example.
#
#	- FILE is restrictive about the TABs which separate offset, type,
#	  value, and message in the pattern definitions. It accepts nothing
#	  else than TABs, esp. no SPACES!
#
# 				(End-Of-Header)

#
#	Each program should be self-aware :-)
#
#@ asc
0	string	# Copr (c) 1993 Richard Breuer. MAGIC is freeware. No warranties.	File recognition patterns for RUTILS40's FILE



#
#	Phil Karn's ZIP archives
#

#@ arc bin
0	string		PK\003\004		Zip archive
>4	string		\011			(extract: v0.9+)
>4	string		\012			(extract: v1.0+)
>4	string		\013			(extract: v1.1+)
>4	string		\024			(extract: v2.0+)



#
#	LZH archives (LHArc, LHA)
#

#@ arc bin
2	string		-lh
>6	string		-
>>5	byte		x	LZH archive (Lharc/LHa, Compression type %c)
2	string		-lz
>6	string		-
>>5	byte		x	LZH archive (Lharc/LHa, Compression type %c)



#
#	ZOO archives
#

#@ arc bin
0	string		ZOO\040
8	string		\040Archive		ZOO archive
>4	string		x4			(v%s)
>32	string		\001\000		(modify: v1.0+)
>32	string		\001\004		(modify: v1.4+)
>32	string		\002\000		(modify: v2.0+)
>70	string		\001\000		(extract: v1.0+)
>70	string		\002\001		(extract: v2.1+)



#
#	ARC archives
#

#@ arc bin
0	string		\032\008		ARC archive



#
#	ARJ archives
#

#@ arc bin
0	string		\140\352		ARJ archive
>5	byte		x			(v%b,
>6	byte		x			extract: v%b+,
>7	byte		0			from MSDOS)
>7	byte		1			from PRIMOS)
>7	byte		2			from UNIX)
>7	byte		3			from AMIGA)
>7	byte		4			from MAC-OS)
>7	byte		5			from OS/2)
>7	byte		6			from APPLE GS)
>7	byte		7			from ATARI ST)
>7	byte		8			from NEXT)
>7	byte		9			from VAX VMS)
>7	byte		>9			from unknown host OS)



#
#	DWC archives
#

#@ arc bin
-3	string		DWC		DWC archive



#
#	cpio archives
#

#@ arc bin
0	short		070707		cpio archive
0	short		0143561		Byte-swapped cpio archive
0	long		0177555		Very old ar archive (PDP 11)
0	short		0177545		Old ar archive (PDP 11)

#@ arc asc
0	string		070707		ASCII cpio archive



#
#	Other archives
#

#@ arc bin
0	string		<ar>			System V Release 1 archive
0	string		!<arch>\n__.SYMDEF	ar Archive random library
0	string		!<arch>\n__________E	ar MIPS archive
>20	string		U			with mipsucode members
>21	string		L			with mipsel members
>21	string		B			with mipseb members
>19	string		L			and a EL hash table
>19	string		B			and a EB hash table
>22	string		X			-- out of date
0	string		!<arch>\n		ar Archive
0	string		@(#)SunPHIGS		SunPHIGS
>40	string		SunBin			binary
>32	string		archive			archive
0	string		\377\377\174		ddis/dots archive
0	short		0xff65			Xenix archive
257	string		ustar\0			Tape archive (TAR)
65	string		PACTCPCT		compressed Macintosh Compact Pro archive
65	string		SIT!SIT!		compressed Macintosh Stuffit 1.51 archive
65	string		SITDSIT!		compressed Macintosh Stuffit DeLuxe archive
0	string		SIT!			compressed Macintosh Compact Pro archive

#@ arc asc
0	string		ARF_BEGARF		PHIGS clear text archive
0	string		#! /bin/sh\r\n# This is a shell archive		Shell archive (shar)
0	string		:
>-1	string		:			BinHexed Macintosh ASCII file archive
>-2	string		:\n			BinHexed Macintosh ASCII file archive (unix format)
>-3	string		:\r\n			BinHexed Macintosh ASCII file archive (DOS format)



#
#	Compressed DOS executables and self-extracting archives
#

#@ bin exe
0	string		MZ			Microsoft EXEcutable
>25	string		\0\0\0LZ91		- LZEXE compressed
>28	string		diet\371\234		- DIET compressed
>30	string		PKLITE Copr.		- PKLITE compressed

#@ arc bin exe
>28	string		RJSX\377\377		- self-extracting ARJ archive
>30	string		Copyright\040
>>50	string		PKWARE Inc. All Rights Reserved.	- self-extracting ZIP archive (PKZip 1.10)
>30	string		PKLITE Copr.\040
>>51	string		PKWARE Inc. All Rights Reserved.	- self-extracting ZIP archive (PKZip 2.04)
>24	string		LHarc's SFX		- self-extracting LHA archive
>24	string		LHA's SFX 		- self-extracting LHARC archive

#@ bin exe
46	string		PKLITE Copr.\040
>68	string		PKWARE Inc. All Rights Reserved\007\0\0\0		PKLITE compressed executable (COM type)
48	string		PKLITE Copr.\040
>69	string		PKWARE Inc. All Rights Reserved\007\0\0\0		PKLITE compressed executable (COM type)

#@ arc bin exe
6	string		LHarc's SFX		Self-extracting LZH archive (COM type)
6	string		SFX of LHarc 		Self-extracting LHARC archive (COM type)



#
#	Other executables and system files
#

#@ bin exe
0	byte		0xE9		Executable (COM)
0	byte		0xEB		Executable (COM)
0	short		0x0103		Executable or object module
>2	byte		0x50		(pure)
>28	long		>0		(not stripped)
>6	short		>0		- v%d
0	short		0407		VAX BSD executable
0	long		0410		4.0 pure executable
>16	long		>0		(not stripped)
>2	short		>0		- v%d
0	long		0411		4.0 separate I&D
>16	long		>0		(not stripped)
>2	short		>0		- v%d
0	long		0413		VAX BSD demand paged executable
>16	long		>0		(not stripped)
0	short		0514		386 System V demand paged executable
>12	long		>0		(not stripped)
0	short		0565		386 AIX demand paged executable
>12	long		>0		(not stripped)
0	short		0537		370 XA sysV executable
>12	long		>0		(not stripped)
>22	short		>0		- v%d
>30	long		>0		- 5.2 format
0	short		0535		370 sysV executable
>12	long		>0		(not stripped)
>22	short		>0		- v%d
>30	long		>0		- 5.2 format
0	short		0532		370 XA sysV pure executable
>12	long		>0		(not stripped)
>22	short		>0		- v%d
>30	long		>0		- 5.2 format
0	short		0530		370 sysV pure executable
>12	long		>0		(not stripped)
>22	short		>0		- v%d
>30	long		>0		- 5.2 format
0	short		054001		370 sysV pure executable
>12	long		>0		(not stripped)
0	short		055001		370 XA sysV pure executable
>12	long		>0		(not stripped)
0	short		056401		370 sysV executable
>12	long		>0		(not stripped)
0	short		057401		370 XA sysV executable
>12	long		>0		(not stripped)
0	short		0502		Basic-16 executable
>12	long		>0		(not stripped)
0	short		0503		Basic-16 executable (TV)
>12	long		>0		(not stripped)
0	short		0510		x86 executable
>12	long		>0		(not stripped)
0	short		0511		x86 executable (TV)
>12	long		>0		(not stripped)
0	short		0550		3b20d executable
>12	long		>0		(not stripped)
0	short		0551		3b20d executable (TV)
>12	long		>0		(not stripped)
0	short		0560		3b5 executable
>12	long		>0		(not stripped)
0	short		0561		3b5 executable (TV)
>12	long		>0		(not stripped)
0	short		0570		VAX sysV executable
>12	long		>0		(not stripped)
>22	short		>0		- version %ld
0	short		0575		VAX sysV pure executable
>12	long		>0		(not stripped)
>22	short		>0		- version %ld
0	short		074001		VAX SysV executable
>12	long		>0		(not stripped)
>22	short		>0		- v%d
0	short		076401		VAX SysV pure executable
>12	long		>0		(not stripped)
>22	short		>0		- v%d
0	short		02401		VAX bsd overlay
0	short		03401		VAX bsd executable
>16	long		>0		(not stripped)
>2	short		>0		- v%d
0	short		04001		VAX bsd pure executable
>16	long		>0		(not stripped)
>2	short		>0		- v%d
0	short		04401		VAX bsd separate I&D executable
>16	long		>0		(not stripped)
>2	short		>0		- v%d
0	short		05401		VAX bsd demand paged executable
>16	long		>0		(not stripped)
>2	short		>0		- v%d
0	short		046001		386 System V demand paged executable
>12	long		>0		(not stripped)
0	short		072401		386 AIX demand paged executable
>12	long		>0		(not stripped)
0	byte		0x80		8086 relocatable
0	short		03002		Xenix
>28	byte		0x01		PDP-11
>28	byte		0x02		23fixed from PDP-11
>28	byte		0x03		Z8000
>28	byte		0x44		I8086
>28	byte		0x85		M68000
>28	byte		0x46		Z80
>28	byte		0x47		VAX 780/750
>28	byte		0x88		NS32016
>28	byte		0x49		iAPX 80286
>28	byte		0x4a		iAPX 80186
>28	byte		0x4b		iAPX 80386
>28	byte		0x69		iAPX 80286 (V)
>16	long		>0		not stripped)
>32	short		0xff65		archive
>30	short		&0x6000		large model
>30	short		&0x4000		middle model
>30	short		&0x2000		large data and small text
>30	short		&0x0001		huge model
>30	short		&0x0000		small model
0	short		01006		Xenix
>28	byte		0x01		PDP-11
>28	byte		0x02		23fixed from PDP-11
>28	byte		0x03		Z8000
>28	byte		0x44		I8086
>28	byte		0x85		M68000
>28	byte		0x46		Z80
>28	byte		0x47		VAX 780/750
>28	byte		0x88		NS32016
>28	byte		0x49		iAPX 80286
>28	byte		0x4a		iAPX 80186
>28	byte		0x4b		iAPX 80386
>28	byte		0x69		iAPX 80286 (V)
>16	long		>0		(not stripped)
>30	short		&0x0060		large model
>30	short		&0x0040		middle model
>30	short		&0x0020		large data and small text
>30	short		&0x0100		huge model
>30	short		&0x0000		small model
0	short		0x0160		mipseb
>20	short		0407		executable
>20	short		0410		pure
>20	short		0413		demand paged
>8	long		!0		(not stripped)
>8	long		0		stripped
>22	byte		x		- version %ld.
>23	byte		x		\b%ld
0	short		0x0162		mipsel
>20	short		0407		executable
>20	short		0410		pure
>20	short		0413		demand paged
>8	long		!0		(not stripped)
>8	long		0		stripped
>23	byte		x		- version %ld.
>22	byte		x		\b%ld
0	short		0x6001		swapped mipseb
>20	short		03401		executable
>20	short		04001		pure
>20	short		05401		demand paged
>8	long		!0		(not stripped)
>8	long		0		stripped
>22	byte		x		- version %ld.
>23	byte		x		\b%ld
0	short		0x6201		swapped mipsel
>20	short		03401		executable
>20	short		04001		pure
>20	short		05401		demand paged
>8	long		!0		(not stripped)
>8	long		0		stripped
>22	byte		x		- version %ld.
>23	byte		x		\b%ld
0	short		0x180		mipseb ucode
0	short		0x182		mipsel ucode
0	long		0x7f454c46	ELF executable
0	short		0x0163		mipseb mips2
>20	short		0407		executable
>20	short		0410		pure
>20	short		0413		demand paged
>8	long		!0		(not stripped)
>8	long		0		stripped
>22	byte		x		- version %ld.
>23	byte		x		\b%ld
0	short		0x0166		mipsel mips2
>20	short		0407		executable
>20	short		0410		pure
>20	short		0413		demand paged
>8	long		!0		(not stripped)
>8	long		0		stripped
>22	byte		x		- version %ld.
>23	byte		x		\b%ld
0	short		0x6301		swapped mipseb mips2
>20	short		03401		executable
>20	short		04001		pure
>20	short		05401		demand paged
>8	long		!0		(not stripped)
>8	long		0		stripped
>23	byte		x		- version %ld.
>22	byte		x		\b%ld
0	short		0x6601		swapped mipsel mips2
>20	short		03401		executable
>20	short		04001		pure
>20	short		05401		demand paged
>8	long		!0		(not stripped)
>8	long		0		stripped
>23	byte		x		- version %ld.
>22	byte		x		\b%ld

#@ bin
0	short		017436		Packed text
0	string		Rast		RST format font raster
0	short		0x0104		Shared library
0	short		0x0105		ctab data
0	short		0xfe04		Structured file
0	short		0x04fe		Structured file
0	short		017777		Compacted text (4.1bsd)
0	short		017437		Packed text
0	short		0401		Unix-rt ldp
0	short		0405		Old overlay
0	short		0437		PDP-11 kernel overlay
0	string		core		Core image of
>566	short		0565		386 executable
>566	short		072401		386 executable
>564	short		0535		B370 executable
>564	short		056401		B370 executable
>564	short		0530		B370 executable
>564	short		054001		B370 executable
>564	short		0537		XA370 executable
>564	short		057401		XA370 executable
>564	short		055001		XA370 executable
>564	short		0532		XA370 executable
0	long		0xdeadadb0	IRIX core dump
0	long		0100554		APL workspace (Ken's original?)
0	long		0101555		PDP-11 single precision APL workspace
0	long		0101554		PDP-11 double precision APL workspace
0	long		0101557		VAX single precision APL workspace
0	long		0101556		VAX double precision APL workspace
0	string		\377 FONT   \0	DOS code page file (CPI)
0	long		0xFFFFFFFF	DOS device driver
0	string		TPU		Turbo Pascal unit/lib
>3	byte		48		(v%c, TP 4.0)
>3	byte		53		(v%c, TP 5.0)
>3	byte		54		(v%c, TP 5.5)
>3	byte		57		(v%c, TP 6.0 or TPW 1.0)
>3	byte		<48		(unknown v%c)
>3	byte		>57		(unknown v%c)
>3	byte		1		(unknown v%c)
>3	byte		2		(unknown v%c)
>3	byte		3		(unknown v%c)
>3	byte		4		(unknown v%c)
>3	byte		7		(unknown v%c)
>3	byte		8		(unknown v%c)
0	short		0x8765		Disk quotas file



#
#	Various data files and files from word processors
#

#@ bin
38	string		Spreadsheet	sc file
0	string		NG\0\001\0\0	Norton Guides database
0	string		PNCI		Norton data file
0	short		017437		Old packed data
0	string		\037\036	Packed data
0	string		\377\037	Compacted data
0	string		\037\235	Compressed data
>2	byte&0x80	>0		- block compressed
>2	byte&0x1f	x		%b bits
0	string		\032\001	Compiled Terminfo Entry
0	short		0433		Curses screen image
0	short		0434		Curses screen image
0	long		0x1010101	MMDF mailbox
24	string		SunGKS		SunGKS
>0	string		GKSM		Metafile
0	string		GKSM		GKS Metafile
0	short		0436		vfont definition
0	string		PCF:db			PC-File header
0	string		WSSCONfig		WSSIndex configuration file
0	string		WSSINDEX\r4		WSSIndex index file, version 4
0	string		WSSINDEX\r5		WSSIndex index file, version 5
0	string		WSSINDEX\r		WSSIndex index file, pre-version 4
0	string		\0\0\002\0 Q		Quattro WQ1 file
0	string		\0\0\002\0\004\004	Lotus 1-2-3 WKS file (version 1.A)
0	string		\0\0\002\0\004\005	Symphony WKS file (version 1.0)
0	string		\0\0\002\0\004?		Lotus/Symphony WK1 file (Lotus 2.01+, Symphony 1.1+)
0	string		ID;P			SYLK (?)
0	string		<!SGML			SGML document
0	string		F1\217\0\001\0\217\0C2.3	Bitstream Font
1	byte		<100
>2	byte		<13
>>3	byte		<33
>>>0	byte		03			dBase III Database File (no Memo file)
>>>0	byte		83			dBase III Database File (with Memo file)
0	long		0x0e031301		NCSA hierarchical data format (HDF)
0	string		GRIB			GRIB weather product information

#@ bin txt
0	string		<MakerFile	FrameMaker document
>11	string		x3		(%s
>14	byte		x		%c)
0	string		<MIFFile	FrameMaker MIF file
>9	string		x3		(%s)
0	string		<MakerDictionar	FrameMaker Dictionary file
>17	string		x3		(%s)
0	string		<MakerScreenFon	FrameMaker Font file
>17	string		x4		(%s)
0	string		<MML		FrameMaker MML file
0	string		<Book		FrameMaker Book file
>10	string		x3		(%s
>13	byte		x		%c)
0	string		Maker Intermediate Print File	FrameMaker IPL file
0	string		Interpress/Xerox		Interpress document
0	long		0x137A2944	NeWS bitmap font
0	long		0x137A2947	NeWS font family
8	long		0x137A2B45	X11/NeWS bitmap font
8	long		0x137A2B48	X11/NeWS font family
0	long		0x137A2950	Scalable OpenFont binary
0	long		0x137A2951	Encrypted scalable OpenFont binary
0	short&0xffe0	0x0020		Binary Computer Graphics Metafile
0	short		0x3020		Character Computer Graphics Metafile
3	string		pgscriptver	SunWrite document
1	string		OPS\000\000	Interleaf document
0	long		0x31BE0000	Microsoft WORD text
0	long		0x31BE0100	Microsoft WORD text building block
0	long		0x31BE0200	Microsoft WORD printer description file
0	string		\033)s246W	HP downloadable font
0	string		\377WPC			WordPerfect
>8	string		\001\001		macro file
>8	string		\001\002		help file
>8	string		\001\003		keyboard definition file
>8	string		\001\012		document file
>8	string		\001\013		dictionary file
>8	string		\001\014		thesaurus file
>8	string		\001\015		block
>8	string		\001\016		rectangular block
>8	string		\001\017		column block
>8	string		\001\020		printer resource file (PRS)
>8	string		\001\021		setup file
>8	string		\001\022		prefix information file
>8	string		\001\023		printer resource file (ALL)
>8	string		\001\024		display resource file (DRS)
>8	string		\001\025		overlay file (WP.FIL)
>8	string		\001\026		graphics file (WPG)
>8	string		\001\027		hyphenation code module
>8	string		\001\030		hyphenation data module
>8	string		\001\031		macro resource file (MRS)
>8	string		\001\032		graphics driver (WPD)
>8	string		\001\033		hyphenation lex module
0	string		WNGZWZ		Wingz
>6	string		SC		compiled script
>6	string		SS		spreadsheet
>6	string		HP		help file
0	byte		247
>1	byte		<5		DVI file (TeX output, v%b)
>1	byte		131		TeX Generic Font (GF)
>1	byte		89		TeX Packed Font (PK)
0	string		FLIB\001\0	emTeX Font library

#@ asc
1	string		makefile	PBE makefile
0	string		From		Mail folder
0	string		begin\040	uuencoded file
#  note that 'x' must be written as \170 in the following pattern!
0	string		\170btoa	btoa'd file
0	string		%(Doc-		InterViews file
0	string		%I Unidraw	InterViews ibuild data file
0	string		Volume\011	DCAT catalog file for RUTILS DCAT
0	string		;FTMagic	FType Magic number file
>8	string		x3		(version %s)

#@ asc txt
0	string		<!OPS			Interleaf ASCII document
0	string		%!			PostScript document
0	string		StartFontMetrics	ASCII font metrics
0	string		StartFont		ASCII font bits
0	string		BEGMF			clear text Computer Graphics Metafile
0	string		{rtf			Microsoft Rich Text Format
0	string		{ rtf			Microsoft Rich Text Format


#
#	Picture and graphics related files
#

#@ bin pic
0	string		%bitmap		FBM pixmap
>30	byte		=0x31		(mono)
>30	byte		=0x33		(color)
10	string		sundraw		SunDraw document
0	string		GIF		GIF
>3	string		x3		\b%s
>3	string		x2		(Compuserve May 19%s)
>6	short		x		-- %u
>8	short		x		x %u
0	long		0x59a66a95	Sun raster file
0	short		0x52cc		Utah Raster Toolkit RLE
>2	short		x		Pos (%d,
>4	short		x		\b%d) -
>6	short		x		Size %d x
>8	short		x		%d
0	long		0x49492A00	TIFF (lsb first)
0	long		0x4D4D002A	TIFF (msb first)
0	long		0xFFD9FFE0	JPEG
>6	string		JFIF		JFIF
0	long		0xffd8ffe0	JPEG image, big endian
0	long		0xe0ffd8ff	JPEG image, little endian
0	string		hsi1		HSI1 image (JPEG derivative by Handmade Software)
8	string		ILBM			IFF ILBM file
0	string		This is a BitMap file	Lisp Machine bit-array-file
0	string		!!			Bennet Yee's "face" format
0	string		RRTL
>4	short		0x0001			ClipArt image
0	string		Falc
>4	short		0x0000			Harvard Graphics Chart (CHT) (??)
0	string		pk\b\bBGI Device Driver		Borland graphics driver (BGI)
0	string		PK\b\bBGI Stroked Font		Borland graphics stroked font (CHR)
0	string		ca\b\bBGI\040			Borland Quattro Pro graphics driver
0	string		CB\b\bBGI\040			Borland Quattro Pro graphics driver
0	string		\377WPC
>8	short		0x0116		WordPerfect graphics file (WPG)
>8	short		0x011A		WordPerfect graphics driver (WPD)
0	long		0x00010008	GEM Image File (versions 1.x, 2.x)
0	long		0xFFFF1800	GEM Metafile (versions 1.x, 2.x)
0	string		FORM		IFF/LBM image
0	short		0x0A00		PCX image (Paintbrush version 2.5)
0	short		0x0A02		PCX image (Paintbrush version 2.8, w/palette)
0	short		0x0A03		PCX image (Paintbrush version 2.8, w/o palette)
0	short		0x0A05		PCX image (Paintbrush version 3.0)
0	short		000732		SGI imagelib image
>6	short		x		(%d x
>8	short		x		%d)
0	short		0155001		SGI imagelib image (byte swapped)
0	string		\361\0\100\273	CMU window manager bitmap
0	string		yz		MGR bitmap
0	long		0x04553207	X image
0	string		Rast		RST format font raster
0	string		\064\022	PIC image file
0	string		\001\0\0\0	Lotus PIC image (?)
0	short		0x0506
>2	byte		0x49		IRIS Showcase file
>>3	byte		x		- version %b
0	short		0x0226
>2	byte		0x63		IRIS Showcase template
>>3	byte		x		- version %b
4	long		0xdeadbabe	IRIX Parallel Arena
>8	long		>0		- version %ld
0	string		#Inventor V	IRIS Inventor file
>15	string		ascii		- ASCII format
>15	string		binary		- binary format
0	string		BM
>18	long		>0		MS Windows Bitmap %ld
>>22	long		>0		x %ld
4	short		0xAF11		Autodesk Animator FLI file
>8	short		>0		%d
>>10	short		>0		x %d
1		byte		<2
>2		byte		<12
>>7		byte		<33
>>>12		short		>0
>>>>14		short		>0
>>>>>2		byte		0		Truevision Targa file (TGA), no image data,
>>>>>2		byte		1		Truevision Targa file (TGA), uncompressed, color-mapped image,
>>>>>2		byte		2		Truevision Targa file (TGA), uncompressed, true-color image,
>>>>>2		byte		3		Truevision Targa file (TGA), uncompressed, black & white image,
>>>>>2		byte		9		Truevision Targa file (TGA), RLE-encoded, color-mapped image,
>>>>>2		byte		10		Truevision Targa file (TGA), RLE-encoded, true-color image,
>>>>>2		byte		11		Truevision Targa file (TGA), RLE-encoded, black & white image,
>>>>>12		short		x		%d
>>>>>14		short		x		x %d

#@ asc pic
0	string		"P1"		PBM bitmap
0	string		"P2"		PGM greymap
0	string		"P3"		PPM pixmap
0	string		"P4"		PBM raw bitmap
0	string		"P5"		PGM raw greymap
0	string		"P6"		PPM raw pixmap



#
#	Sound files
#

#@ bin snd
0	string		.snd		Audio data (AU)
>4	long		>23
>>12	long		1		- 8-bit ISDN u-law,
>>12	long		2		- 8-bit linear PCM (REF-PCM),
>>12	long		3		- 16-bit linear PCM,
>>12	long		4		- 24-bit linear PCM,
>>12	long		5		- 32-bit linear PCM,
>>12	long		6		- 32-bit IEEE floating point,
>>12	long		7		- 64-bit IEEE floating point,
>>12	long		23		- 8-bit ISDN u-law compressed,
>>20	long		1		mono,
>>20	long		2		stereo,
>>20	long		4		quad,
>>16	rlong		x		%ld Hz
8	long		0x41494646	AIFF sound data file
8	long		0x41494643	AIFF-C sound data file
0	long		0x4e54524b	MultiTrack sound data file
>4	long		x		- version %ld
0	string		STEVE\002H	Digitized Sound File (SND)
0	string		Creative Voice File\032		Soundblaster VOC file
65	string		FSSD
>128	string		HCOM		SoundKit Macintosh HCOM format
0	long		107364		SoundKit IRCAM Soundfile
28	short		0x1a01		MOD file (song)
>30	byte		x		major version: %b,
>31	byte		x		minor version: %b
28	short		0x1a02		MOD file (module)
>30	byte		x		major version: %b,
>31	byte		x		minor version: %b


#
#	Various ASCII files
#

#@ asc exe
0	string		#!			exec()able unix script
>2	string		/bin/sh			- Bourne shell
>2	string		/usr/bin/sh		- Bourne shell
>2	string		/bin/ksh		- Korn shell
>2	string		/usr/local/bin/ash	- NeilBrown's ash
>2	string		/usr/local/bin/ae	- NeilBrown's ae
>2	string		/home/harry/bin/perl	- Perl
>2	string		/usr/local/bin/perl	- Perl
>2	string		/usr/bin/perl		- Perl
>2	string		/bin/awk		- AWK
>2	string		/bin/nawk		- new AWK
>2	string		/usr/bin/nawk		- new AWK
>2	string		/usr/local/bin/nawk	- new AWK
>2	string		/bin/gawk		- GNU AWK
>2	string		/usr/local/bin/gawk	- GNU AWK
>2	string		/bin/csh		- C shell
>2	string		/usr/bin/csh		- C shell
>2	string		/usr/bin/tcsh		- tcsh shell
>2	string		/bin/tcsh		- tcsh shell
>2	string		/usr/bin/zsh		- zsh shell
>2	string		/bin/zsh		- zsh shell
0	string		echo			DOS Batchfile
0	string		ECHO			DOS Batchfile
0	string		Echo			DOS Batchfile
0	string		@echo			DOS Batchfile
0	string		@ECHO			DOS Batchfile
0	string		@Echo			DOS Batchfile
0	string		REM			DOS Batchfile
0	string		rem			DOS Batchfile
0	string		Rem			DOS Batchfile

#@ asc src
0	string		PROGRAM				Pascal source (?)
0	string		program				Pascal source (?)
0	string		Program				Pascal source (?)
0	string		{\040				Pascal source (?)
0	string		{$				Turbo Pascal source (?)
0	string		(*\040				Pascal/Modula source (?)
0	string		      PROGRAM			Fortran source
0	string		C\040\040\040\040\040\040	Fortran source
0	string		/*				C source (?)
0	string		//				C++ source (?)
0	string		#include\040			C source
0	string		%{				Lex/Yacc source (?)
0	string		head\t				rcs/cvs working file



##
##	The following pattern explains an implicit rule of RUTILS FILE program.
##	It is not processed (if you uncomment it, an error message will appear)
##
##
##@ asc
##0	string		x512 (only readable characters allowed)		Text or source file (?)

