# Magic file created Wed Aug  4 20:28:33 GMT 1993 by root
#! file
# Magic data for file(1) command.
# Machine-genererated from src/cmd/file/magdir/*; edit there only!
# Format is described in magic(files), where:
# files is 4 on V7 and BSD, 4 on SV, and ?? in the SVID.
# $Id: Localstuff,v 1.2 93/01/05 13:22:25 ian Exp $
# Add any locally-observed files here.  Remember:
# text if readable, executable if runnable binary, data if unreadable.
#
# Alliant FX series a.out files:
# If the FX series is the one that had a processor with a 68K-derived
# instruction set, the "short" should probably become "beshort" and the
# "long" should probably become "belong".
# If it's the i860-based one, they should probably become either the
# big-endian or little-endian versions, depending on the mode they ran
# the 860 in....
#
0	short		0420		0420 Alliant virtual executable
>2	short		&0x0020		common library
>16	long		>0		not stripped
0	short		0421		0421 Alliant compact executable
>2	short		&0x0020		common library
>16	long		>0		not stripped
#
# magic.apl:
#
0	long		0100554		APL workspace (Ken's original?)
#
# "ar", for all kinds of archives.
#
# XXX - why are there multiple <ar> thingies?  Note that 0x213c6172 is
# "!<ar", so, for new-style (4.xBSD/SVR2andup) archives, we have:
#
# 0	string		!<arch>		current ar archive
# 0	long		0x213c6172	archive file
#
# and for SVR3.1 archives, we have:
#
# 0	string		\<ar>		System V Release 1 ar archive
# 0	string		=<ar>		archive
# 0	string		=<ar>		archive
#
# XXX - did Aegis really store shared libraries, breakpointed modules,
# and absolute code program modules in the same format as new-style
# "ar" archives?
#
0	string		!<arch>		current ar archive
>8	string		__.SYMDEF	random library
>0	belong		=65538		- pre SR9.5
>0	belong		=65539		- post SR9.5
>0	beshort		2		- object archive
>0	beshort		3		- shared library module
>0	beshort		4		- debug break-pointed module
>0	beshort		5		- absolute code program module
0	string		\<ar>		System V Release 1 ar archive
0	string		=<ar>		archive
#
# XXX - from "vax", which appears to collect a bunch of byte-swapped
# thingies, to help you recognize VAX files on big-endian machines;
# with "leshort", "lelong", and "string", that's no longer necessary....
#
# 0	long		0x3c61723e	VAX 5.0 archive
#
0	long		0x213c6172	archive file
0	lelong		0177555		very old VAX archive
0	leshort		0177555		very old PDP-11 archive
#
# XXX - "pdp" claims that 0177545 can have an __.SYMDEF member and thus
# be a random library (it said 0xff65 rather than 0177545).
#
0	lelong		0177545		old VAX archive
>8	string		__.SYMDEF	random library
0	leshort		0177545		old PDP-11 archive
>8	string		__.SYMDEF	random library
#
0	string		=<ar>		archive
#
# From "pdp":
#
0	lelong		0x39bed		PDP-11 old archive
0	lelong		0x39bee		PDP-11 4.0 archive
#
0	string		-h-		Software Tools format archive text
# "arc" archiver
#0	byte		26		'arc' archive
#>1	byte		0		(empty)
#>1	byte		1		(old format)
#
# >>>>> ARJ archiver <<<<< (source: arj 2.39a beta)
#     ARJ archives contains two types of header blocks:
#
#	Archive main header - This is located at the head of the archive
#	Local file header   - This is located before each archived file
#
#     Structure of main header (low order byte first):
#
#     Bytes Description
#     ----- -------------------------------------------------------------------
#       2   header id (main and local file) = 0xEA60 or 60000U
#       2   basic header size (from 'first_hdr_size' thru 'comment' below)
#		 = first_hdr_size + strlen(filename) + 1 + strlen(comment) + 1
#		 = 0 if end of archive
#
#       1   first_hdr_size (size up to and including 'extra data')
#       1   archiver version number [2.30==v4 ?  2.39==v5 ?]
#       1   minimum archiver version to extract
#       1   host OS   (0 = MSDOS, 1 = PRIMOS, 2 = UNIX, 3 = AMIGA, 4 = MAC-OS)
#		     (5 = OS/2, 6 = APPLE GS, 7 = ATARI ST, 8 = NEXT)
#		     (9 = VAX VMS)
# [text deleted]
0	short		0xea60		arj archive
#
# >>>>> ARC <<<<<  (source: Greg Roelofs roe2@midway.uchicago.edu)
#
0	string		\032\010		Arc archive
# 0	short		0x1a08			Arc archive
# 0	short		0x081a			Arc archive
#
# >>>>> LHARC/LHA <<<<<  (source: Greg Roelofs roe2@midway.uchicago.edu)
#
2	string		-lh0-			Lharc 1.x archive
2	string		-lh1-			Lharc 1.x archive
2	string		-lz4-			Lharc 1.x archive
2	string		-lz5-			Lharc 1.x archive
#	[never seen any but the last:]
2	string		-lzs-			LHa 2.x? archive [lzs]
2	string		-lh\ -		LHa 2.x? archive [lh ]
2	string		-lhd-			LHa 2.x? archive [lhd]
2	string		-lh2-			Lha 2.x? archive [lh2]
2	string		-lh3-			LHa 2.x? archive [lh3]
2	string		-lh4-			LHa 2.x? archive [lh4]
2	string		-lh5-			LHa (2.x) archive
#
# >>>>> ZIP <<<<<  (source: Greg Roelofs roe2@midway.uchicago.edu)
# [extract ver is from 1st file only]
#
0	string		PK\003\004		Zip archive
>4	string		\011			(at least v0.9 to extract)
>4	string		\012			(at least v1.0 to extract)
>4	string		\013			(at least v1.1 to extract)
>4	string		\024			(at least v2.0 to extract)
#
# >>>>> ZOO <<<<<  (source: Greg Roelofs roe2@midway.uchicago.edu)
#
# [GRR:  don't know if all of these versions exist, or if some missing...]
#0		string		ZOO 			Zoo archive
# [DH: Use GRR's alternate identifiers]
0x2a	string   \xdc\xa7\xc4\xfd
>0 string         >0          %.16s
# >4	string		1.00			(v%4s)
# >4	string		1.10			(v%4s)
# >4	string		1.20			(v%4s)
# >4	string		1.30			(v%4s)
# >4	string		1.40			(v%4s)
# >4	string		1.50			(v%4s)
# >4	string		1.60			(v%4s)
# >4	string		1.70			(v%4s)
# >4	string		1.71			(v%4s)
# >4	string		2.00			(v%4s)
# >4	string		2.01			(v%4s)
# >4	string		2.10			(v%4s)
>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+)
0		string		ZOO 			Zoo archive
# [GRR:  the following are alternate identifiers]
#0x2a	long		0xdca7c4fd		Zoo archive
#0x2a	long		0xc4fddca7		Zoo archive
#
# >>>>> HPACK <<<<<  (source: Peter Gutmann pgut1@cs.aukuni.ac.nz)
# Here's the entry from the local magic file - it's for Ultrix, the format
# may not be 100% the same as everyone else's.  Basically the ID bytes are a
# 4-byte string 'HPAK' at the start.  Anything after that is indeterminate,
# since for example if the archive is encrypted the entire thing will be one
# big block of white noise - it's only the 4-byte ID you can rely on 100%. 
# Once the ISO approves ISO 8824 and 8825 I'll use that format, which will
# provide a lot more information, but that will probably still take awhile....
#   4       string          HPAK            1,1     HPACK archive
0	string	HPAK	HPACK archive
#
# AT&T 3B machines
#
# The `versions' should be un-commented if they work for you.
# (Was the problem just one of endianness?)
#
# 3B20
#
0	beshort		0550		3b20 COFF executable
>12	belong		>0		not stripped
#>22	beshort		>0		- version %ld
0	beshort		0551		3b20 COFF executable (TV)
>12	belong		>0		not stripped
#>22	beshort		>0		- version %ld
#
# WE32K
#
0	beshort		0560		WE32000 COFF
>18	beshort		^00000020	object
>18	beshort		&00000020	executable
>12	belong		>0		not stripped
>18	beshort		^00010000	N/A on 3b2/300 w/paging
>18	beshort		&00020000	32100 required
>18	beshort		&00040000	and mau hardware required
>20	beshort		0407		(impure)
>20	beshort		0410		(pure)
>20	beshort		0413		(demand paged)
>20	beshort		0443		(target shared library)
>22	beshort		>0		- version %ld
0	beshort		0561		WE32000 COFF executable (TV)
>12	belong		>0		not stripped
#>18	beshort		&00020000	- 32100 required
#>18	beshort		&00040000	and mau hardware required
#>22	beshort		>0		- version %ld
# Sound formats, from Jan Nicolai Langfeldt <janl@ifi.uio.no>
#
# XXX -what the hell is the "mips" stuff doing there?  It looks like
# the archive stuff from "iris"....
#
0       string          .snd            audio data:
>12     long            1               8-bit u-law,
>12     long            2               8-bit linear 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 floating point,
>12     long            7               64-bit floating point,
>12	long		23		compressed (G.721 ADPCM),
>20     long            1               mono,
>20     long            2               stereo,
>20     long            4               quad,
>16     long            x               %d Hz
8       long            0x41494646      AIFF sound data file
0       long            0x4e54524b      MultiTrack sound data file
>4      long            x               - version %ld
>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 tabl
>19     string          B               and a EB hash tabl
>22     string          X               -- out of date

# sound files from OS/2 (these are guesses)
0  string      RIFF     
>8 string      WAVE     sound
0  string      MThd\0   MIDI sound

# 68K Blit stuff as seen from 680x0 machine
# Note that this 0407 conflicts with several other a.out formats...
#
# XXX - should this be redone with "be" and "le", so that it works on
# little-endian machines as well?  If so, what's the deal with
# "VAX-order" and "VAX-order2"?
#
#0	long		0407		68K Blit (standalone) executable
#0	short		0407		VAX-order2 68K Blit (standalone) executable
0	short		03401		VAX-order 68K Blit (standalone) executable
0	long		0406		68k Blit mpx/mux executable
0	short		0406		VAX-order2 68k Blit mpx/mux executable
0	short		03001		VAX-order 68k Blit mpx/mux executable
# Need more values for WE32 DMD executables.
# Note that 0520 is the same as COFF
#0	short		0520		tty630 layers executable
# BSDI BSD/386
0	long	0314	BSD/386 demand paged (first page unmapped) pure executable
#	this first will upset you if you're a PL/1 shop...
#	in which case rm it; ascmagic will catch real C programs
0	string		/*		c program text
#
# Intergraph, formerly Fairchild, Clipper.
#
# XXX - what byte order does the Clipper use?
#
# XXX - what's the "!" stuff:
#
# >18	short		!074000,000000	C1 R1 
# >18	short		!074000,004000	C2 R1
# >18	short		!074000,010000	C3 R1
# >18	short		!074000,074000	TEST
#
# I shall assume it's ANDing the field with the first value and
# comparing it with the second, and rewrite it as:
#
# >18	short&074000	000000		C1 R1 
# >18	short&074000	004000		C2 R1
# >18	short&074000	010000		C3 R1
# >18	short&074000	074000		TEST
#
# as SVR3.1's "file" doesn't support anything of the "!074000,000000"
# sort, nor does SunOS 4.x, so either it's something Intergraph added
# in CLIX, or something AT&T added in SVR3.2 or later, or something
# somebody else thought was a good idea; it's not documented in the
# man page for this version of "magic", nor does it appear to be
# implemented (at least not after I blew off the bogus code to turn
# old-style "&"s into new-style "&"s, which just didn't work at all).
#
0	short		0575		CLIPPER COFF executable (VAX #)
>20	short		0407		(impure)
>20	short		0410		(5.2 compatible)
>20	short		0411		(pure)
>20	short		0413		(demand paged)
>20	short		0443		(target shared library)
>12	long		>0		not stripped
>22	short		>0		- version %ld
0	short		0577		CLIPPER COFF executable
>18	short&074000	000000		C1 R1 
>18	short&074000	004000		C2 R1
>18	short&074000	010000		C3 R1
>18	short&074000	074000		TEST
>20	short		0407		(impure)
>20	short		0410		(pure)
>20	short		0411		(separate I&D)
>20	short		0413		(paged)
>20	short		0443		(target shared library)
>12	long		>0		not stripped
>22	short		>0		- version %ld
>48	long&01		01		alignment trap enabled
>52	byte		1		-Ctnc
>52	byte		2		-Ctsw
>52	byte		3		-Ctpw
>52	byte		4		-Ctcb
>53	byte		1		-Cdnc
>53	byte		2		-Cdsw
>53	byte		3		-Cdpw
>53	byte		4		-Cdcb
>54	byte		1		-Csnc
>54	byte		2		-Cssw
>54	byte		3		-Cspw
>54	byte		4		-Cscb
4	string		pipe		CLIPPER instruction trace
4	string		prof		CLIPPER instruction profile
#
# "Commands": stuff for various shells and interpreters.
#
0	string		:\ shell archive or commands for antique kernel text
0	string		#!/bin/sh		Bourne Shell script text
0	string		#!\ /bin/sh		Bourne Shell script text
0	string		#!/bin/csh		C Shell script text
0	string		#!\ /bin/csh		C Shell script text
# korn shell magic, sent by George Wu, gwu@clyde.att.com
0	string		#!/bin/ksh		Korn Shell script text
0	string		#!\ /bin/ksh		Korn Shell script text
0	string	 	#!/bin/tcsh		Tenex C Shell script text
0	string	 	#!\ /bin/tcsh		Tenex C Shell script text
0	string		#!/usr/local/tcsh	Tenex C Shell script text
0	string	 	#!\ /usr/local/tcsh	Tenex C Shell script text
0	string		#!/usr/local/bin/tcsh	Tenex C Shell script text
0	string		#!\ /usr/local/bin/tcsh	Tenex C Shell script text
0	string		#!/bin/zsh		Z Shell script text
0	string		#!\ /bin/zsh 	Z Shell script text
0	string		#!/bin/awk		Awk commands text
0	string		#!\ /bin/awk 	Awk commands text
0  string		#!/bin/nawk		new Awk commands text
0 	string		#!\ /bin/nawk	new Awk commands text
0	string		#!/bin/gawk		GNU Awk commands text		
0	string		#!\ /bin/gawk	GNU Awk commands text		
0	string		#!\ /			a
>3	string		>\0			%s script
0	string		#!/			a
>2	string		>\0			%s script
0	string		#!\ 			commands text
>3	string		>\0			for %s

# For Larry Wall's perl language.  The ``eval'' line recognizes an
# outrageously clever hack for USG systems.
#				Keith Waclena <keith@cerberus.uchicago.edu>
0	string		#!/bin/perl	perl commands text
0	string		#!\ /bin/perl	perl commands text
0	string		eval\ "exec\ /bin/perl	perl commands text

# OS/2 EXTPROC uses specified program to process script
#
0  string		EXTPROC			OS/2 ExtProc commands text
>8 string      >\0				for %s
0  string		extproc			OS/2 ExtProc commands text
>8 string      >\0				for %s
#
# 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.
#
# XXX - the two "packed data" versions are byte-swapped versions of
# one another; is that because the 2-byte magic number is written
# out in native byte order, with "unpack" figuring out the byte order
# from the magic number (in which case both can be left as is, or
# changed to specify a byte order *and* to indicate the byte order of
# the packing machine), or because the old "file" didn't have any way of
# having "magic"-file entries that specified a particular byte order?
#
0	short		017436		packed data
0	short		017037		packed data

#
# This magic number is byte-order-independent.
#
0	short		017437		old packed data

#
0	string		\377\037	compacted data
0	short		0145405		huf output
#
# Squeeze and Crunch, from Keith Waclena <keith@cerberus.uchicago.edu>
# 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.
0	short		0x76FF		squeezed data (CP/M, DOS)
0	short		0x76FE		crunched data (CP/M, DOS)
# Freeze
0	short		0x1f9f		Frozen file 2.1
0	short		0x1f9e		Frozen file 1.0
#
# GNU gzip compressor, from christos@deshaw.com (Christos Zoulas)
#
0       string          \037\213        gzip compressed file method:
>2      byte            <8              reserved,
>2      byte            8               deflate,
>3	byte		&0x1f		flags: 
>3	byte		&0x01		ascii-text,
>3	byte		&0x02		multi-part,
>3	byte		&0x04		name-present,
>3	byte		&0x08		comment-present,
>3	byte		&0x10		encrypted,
>4	date		x		last modified: %s,
>8	byte		x		extra-flags: %x,
>9	byte		=0x00		os: 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
#
# XXX - what byte order does a Convex use?
#
0	long		0513		Convex executable
#
# Yes, the two "cpio archive" formats *are* supposed to just be "short".
# The idea is to indicate archives produced on machines with the same
# byte order as the machine running "file" with "cpio archive", and
# to indicate archives produced on machines with the opposite byte order
# from the machine running "file" with "byte-swapped cpio archive".
#
# The SVR4 "cpio(4)" hints that there are additional formats, but they
# are defined as "short"s; I think all the new formats are
# character-header formats, and thus are strings not numbers.
#
0	short		070707		cpio archive
0	short		0143561		byte-swapped cpio archive
0	string		070707		ASCII cpio archive (pre-SVR4 or odc)
0	string		070701		ASCII cpio archive (SVR4 with no CRC)
0	string		070702		ASCII cpio archive (SVR4 with CRC)
#
# ... diamond is a multi-media mail and electronic conferencing system....
#
# XXX - I think it was either renamed Slate, or replaced by Slate....
#
#	The full deal is too long...
#0	string	<list>\n<protocol\ bbn-multimedia-format>	Diamond Multimedia Document
0	string	=<list>\n<protocol\ bbn-m	Diamond Multimedia Document
#
# magic file lines for output from "diff"...
0	string		diff\ 	'diff' output text
0	string		***\ 		'diff' output text
0	string		Only\ in\ 	'diff' output text
0	string		Common\ subdirectories:\ 	'diff' output text
# Magic numbers for ditroff intermediate language
0	string		x\ T\ cat	titroff output for the C/A/T text
0	string		x\ T\ ps	titroff output for PostScript
0	string		x\ T 		titroff output text
#
# magic.dump, dump file format. For new and old dump filesystems
#
# No, these shouldn't specify a specific byte order, because the byte
# order is dependent on the machine that produced the dump.
#
24	long	60012		new-fs dump file,
>4	date	x		Previous dump %s,
>8	date	x		This dump %s,
>12	long	>0		Volume %ld,
>692	long	0		Level zero, type:
>692	long	>0		Level %d, type:
>0	long	1		tape header,
>0	long	2		beginning of file record,
>0	long	3		map of inodes on tape,
>0	long	4		continuation of file record,
>0	long	5		end of volume,
>0	long	6		map of inodes deleted,
>0	long	7		end of medium (for floppy),
>676	string	>\0		Label %s,
>696	string	>\0		Filesystem %s,
>760	string	>\0		Device %s,
>824	string	>\0		Host %s,
>888	long	>0		Flags %x

24	long	60011		old-fs dump file,
#>4	date	x		Previous dump %s,
#>8	date	x		This dump %s,
>12	long	>0		Volume %ld,
>692	long	0		Level zero, type:
>692	long	>0		Level %d, type:
>0	long	1		tape header,
>0	long	2		beginning of file record,
>0	long	3		map of inodes on tape,
>0	long	4		continuation of file record,
>0	long	5		end of volume,
>0	long	6		map of inodes deleted,
>0	long	7		end of medium (for floppy),
>676	string	>\0		Label %s,
>696	string	>\0		Filesystem %s,
>760	string	>\0		Device %s,
>824	string	>\0		Host %s,
>888	long	>0		Flags %x
#
# ELF
# Missing MIPS image type and flags
#
# Question marks on processor types flag "should not happen because the
# byte order is wrong".  We have to check the byte order flag to see what
# byte order all the other stuff in the header is in.
#
0	string		\177ELF		ELF
>4	byte		0		invalid class
>4	byte		1		32-bit
>4	byte		2		64-bit
>5	byte		0		invalid byte order
>5	byte		1		LSB
>>16	leshort		0		unknown type
>>16	leshort		1		relocatable
>>16	leshort		2		executable
>>16	leshort		3		dynamic lib
>>16	leshort		4		core file
>>18	leshort		0		unknown machine
>>18	leshort		1		WE32100 and up
>>18	leshort		2		SPARC?
>>18	leshort		3		i386 (386 and up)
>>18	leshort		4		M68000?
>>18	leshort		5		M88000?
>>18	leshort		7		i860
>>20	lelong		1		Version 1
>>36	lelong		1		MathCoPro/FPU/MAU Required
>5	byte		2		MSB
>>16	beshort		0		unknown type
>>16	beshort		1		relocatable
>>16	beshort		2		executable
>>16	beshort		3		dynamic lib
>>16	beshort		4		core file
>>18	beshort		0		unknown machine
>>18	beshort		1		WE32100 and up
>>18	beshort		2		SPARC
>>18	beshort		3		i386 (386 and up)?
>>18	beshort		4		M68000
>>18	beshort		5		M88000
>>18	beshort		7		i860
>>20	belong		1		Version 1
>>36	belong		1		MathCoPro/FPU/MAU Required

0   string  ;ELC\x13\0\0\0          Emacs Lisp
>13 string  >\0                     (%s)
0   string  ;;;\ compiled\ by       Emacs Lisp
>16 string  >\0                     (%s)
#
# magic.encore: Recognize encore machines
#
# XXX - needs to have the byte order specified (NS32K was little-endian,
# dunno whether they run the 88K in little-endian mode or not).
#
0	short		0x154		Encore
>20	short		0x107		executable
>20	short		0x108		pure executable
>20	short		0x10b		demand-paged executable
>20	short		0x10f		unsupported executable
>12	long		>0		not stripped
>22	short		>0		- version %ld
>22	short		0		-
#>4	date		x		stamp %s
0	short		0x155		Encore unsupported executable
>12	long		>0		not stripped
>22	short		>0		- version %ld
>22	short		0		-
#>4	date		x		stamp %s
0	string	\366\366\366\366	Formatted floppy w/ no filesystem data
0	string	FONT	ASCII vfont text
0	short	0436	Berkeley vfont data
0	short	017001	byte-swapped Berkeley vfont data
#
# Magic number for FrameMaker files
# This stuff came on a FrameMaker demo tape, most of which is
# copyright, but this file is "published" as witness the following:
#
0	string		\<MakerFile	FrameMaker document
>11	string		3.0		 (3.0
>11	string		2.0		 (2.0
>11	string		1.0		 (1.0
>14	byte		x		  %c)
0	string		\<MIFFile	FrameMaker MIF file
>9	string		3.0		 (3.0)
>9	string		2.0		 (2.0)
>9	string		1.0		 (1.x)
0	string		\<MakerDictionary	FraneMaker Dictionary text
>17	string		3.0		 (3.0)
>17	string		2.0		 (2.0)
>17	string		1.0		 (1.x)
0	string		\<MakerScreenFon	FrameMaker Font file
>17	string		1.01		 (%s)
0	string		\<MML		FrameMaker MML file
0	string		\<Book		FrameMaker Book file
>10	string		3.0		 (3.0
>10	string		2.0		 (2.0
>10	string		1.0		 (1.0
>13	byte		x		  %c)
0	string		\<Maker Intermediate Print File	FrameMaker IPL file
0	string		\<MakerDictionary	FraneMaker Dictionary text
#
# magic.hp: Hewlett Packard Magic
#
# XXX - somebody should figure out whether any byte order needs to be
# applied to the "TML" stuff; I'm assuming the Apollo stuff is
# big-endian as it was mostly 68K-based.
#
# HP-PA is big-endian, so it (and "800", which is *also* HP-PA-based; I
# assume "HPPA-RISC1.1" really means "HP-PA Version 1.1", which first
# showed up in the 700 series, although later 800 series machines are,
# I think, based on the PA7100 which implements HP-PA 1.1) are flagged
# as big-endian.
#
# I think the 500 series was the old stack-based machines, running a
# UNIX environment atop the "SUN kernel"; dunno whether it was
# big-endian or little-endian.
#
# I'm guessing that the 200 series was 68K-based; the 300 and 400 series
# are.
#
# The "misc" stuff needs a byte order; the archives look suspiciously
# like the old 177545 archives (0xff65 = 0177545).
#
#### Old Apollo stuff
0	beshort		0627		Apollo m68k COFF executable
>18	beshort		^040000		not stripped 
>22	beshort		>0		- version %ld
0	beshort		0624		apollo a88k COFF executable
>18	beshort		^040000		not stripped 
>22	beshort		>0		- version %ld
0       long            01203604016     TML 0123 byte-order format
0       long            01702407010     TML 1032 byte-order format
0       long            01003405017     TML 2301 byte-order format
0       long            01602007412     TML 3210 byte-order format
#### HPPA
0	belong 		0x02100106	HPPA-RISC1.1 relocatable object
0	belong 		0x02100107	HPPA-RISC1.1 executable
>(144)	belong		0x054ef630	dynamically linked
>96	belong		>0		-not stripped

0	belong 		0x02100108	HPPA-RISC1.1 shared executable
>(144)	belong		0x054ef630	dynamically linked
>96	belong		>0		-not stripped

0	belong 		0x0210010b	HPPA-RISC1.1 demand-load executable
>(144)	belong		0x054ef630	dynamically linked
>96	belong		>0		-not stripped

0	belong 		0x0210010e	HPPA-RISC1.1 shared library
>96	belong		>0		-not stripped

0	belong 		0x0210010d	HPPA-RISC1.1 dynamic load library
>96	belong		>0		-not stripped

#### 800
0	belong 		0x020b0106	HP s800 relocatable object

0	belong 		0x020b0107	HP s800 executable
>(144)	belong		0x054ef630	dynamically linked
>96	belong		>0		-not stripped

0	belong 		0x020b0108	HP s800 shared executable
>(144)	belong		0x054ef630	dynamically linked
>96	belong		>0		-not stripped

0	belong 		0x020b010b	HP s800 demand-load executable
>(144)	belong		0x054ef630	dynamically linked
>96	belong		>0		-not stripped

0	belong 		0x020b010e	HP s800 shared library
>96	belong		>0		-not stripped

0	belong 		0x020b010d	HP s800 dynamic load library
>96	belong		>0		-not stripped

0	belong		0x213c6172	archive file
>68	belong 		0x020b0619	-HP s800 relocatable library

#### 500
0	long		0x02080106	HP s500 relocatable executable
>16	long		>0		-version %ld

0	long		0x02080107	HP s500 executable
>16	long		>0		-version %ld

0	long		0x02080108	HP s500 pure executable
>16	long		>0		-version %ld

#### 200
0	belong 		0x020c0108	HP s200 pure executable
>4	beshort		>0		-version %ld
>8	belong		&0x80000000	save fp regs
>8	belong		&0x40000000	dynamically linked
>8	belong		&0x20000000	debuggable
>36	belong		>0		not stripped

0	belong		0x020c0107	HP s200 executable
>4	beshort		>0		-version %ld
>8	belong		&0x80000000	save fp regs
>8	belong		&0x40000000	dynamically linked
>8	belong		&0x20000000	debuggable
>36	belong		>0		not stripped

0	belong		0x020c010b	HP s200 demand-load executable
>4	beshort		>0		-version %ld
>8	belong		&0x80000000	save fp regs
>8	belong		&0x40000000	dynamically linked
>8	belong		&0x20000000	debuggable
>36	belong		>0		not stripped

0	belong		0x020c0106	HP s200 relocatable executable
>4	beshort		>0		-version %ld
>6	beshort		>0		-highwater %d
>8	belong		&0x80000000	save fp regs
>8	belong		&0x20000000	debuggable
>8	belong		&0x10000000	PIC

0	belong 		0x020a0108	HP s200 (2.x release) pure executable
>4	beshort		>0		-version %ld
>36	belong		>0		not stripped

0	belong		0x020a0107	HP s200 (2.x release) executable
>4	beshort		>0		-version %ld
>36	belong		>0		not stripped

0	belong		0x020c010e	HP s200 shared library
>4	beshort		>0		-version %ld
>6	beshort		>0		-highwater %d
>36	belong		>0		not stripped

0	belong		0x020c010d	HP s200 dynamic load library
>4	beshort		>0		-version %ld
>6	beshort		>0		-highwater %d
>36	belong		>0		not stripped

#### MISC
0	long		0x0000ff65	HP old archive
0	long		0x020aff65	HP s200 old archive
0	long		0x020cff65	HP s200 old archive
0	long		0x0208ff65	HP s500 old archive

0	long		0x015821a6	HP core file

0	long		0x4da7eee8	HP-WINDOWS font
>8	byte		>0		-version %ld
0	string		Bitmapfile	HP Bitmapfile

0	string		IMGfile	CIS 	compimg HP Bitmapfile
0	short		0x8000		lif file
0	long		0x020c010c	compiled Lisp

0	string		msgcat01	HP NLS message catalog,
>8	long		>0		%d messages
#
# IBM 370 and compatibles.
#
# "ibm370" said that 0x15d == 0535 was "ibm 370 pure executable".
# What the heck *is* "USS/370"?
#
0       beshort		0531		SVR2 executable (Amdahl-UTS)
>12	belong		>0		not stripped
>24     belong		>0		- version %ld
0	beshort		0534		SVR2 pure executable (Amdahl-UTS)
>12	belong		>0		not stripped
>24	belong		>0		- version %ld
0	beshort		0530		SVR2 pure executable (USS/370)
>12	belong		>0		not stripped
>24	belong		>0		- version %ld
0	beshort		0535		SVR2 executable (USS/370)
>12	belong		>0		not stripped
>24	belong		>0		- version %ld

#
# magic.rs6000:
#
# RS/6000 and the RT PC.
#
0	beshort		0x01df		executable (RISC System/6000 V3.1) or obj module
>12	belong		>0		not stripped
# Breaks sun4 statically linked execs.
#0      beshort		0x0103		executable (RT Version 2) or obj module
#>2	byte		0x50		pure
#>28	belong		>0		not stripped
#>6	beshort		>0		- version %ld
0	beshort		0x0104		shared library
0	beshort		0x0105		ctab data
0	beshort		0xfe04		structured file
0	string		0xabcdef	message catalog
#0	string		<aiaff>		archive
# image file format
# From Robert Potter, potter@cs.rochester.edu
0	string		Imagefile\ version-	iff image data
# this adds the whole header (inc. version number), informative but longish
>10	string		>\0		%s
# Tell file about magic for IMAGEN printer-ready files:
0	string	@document(		Imagen printer
# this only works if "language xxx" is first item in Imagen header.
>10	string	language\ impress	(imPRESS data)
>10	string	language\ daisy		(daisywheel text)
>10	string	language\ diablo		(daisywheel text)
>10	string	language\ printer	(line printer emulation)
>10	string	language\ tektronix	(Tektronix 4014 emulation)
# Add any other languages that your Imagen uses - remember
# to keep the word `text' if the file is human-readable.
#
# Now magic for IMAGEN font files...
0	string		Rast		RST-format raster font data
>45	string		>0		face %
# image formats, originally from jef@helios.ee.lbl.gov (Jef Poskanzer),
# additions by janl@ifi.uio.no as well as others. Jan also suggested
# merging several one- and two-line files into here.
#
# XXX - byte order for GIF and TIFF fields?
#

0	string		xbtoa			btoa'd file

# PBMPLUS
0	string		P1			PBM file
0	string		P2			PGM file
0	string		P3			PPM file
0	string		P4			PBM "rawbits" file
0	string		P5			PGM "rawbits" file
0	string		P6			PPM "rawbits" file

# TIFF and friends
0	string		\115\115		TIFF file, big-endian
>2      short           >0              	version %d
0	string		\111\111		TIFF file, little-endian
>2      short           >0              	version %d
#
# NIFF (Navy Interchange File Format, a modification of TIFF)
0	string		IIN1			NIFF raster data

# GIF
0	string		GIF		GIF picture
>3	string		87a		- version %.3s
>3	string		89a		- version %.3s
>6	short		>0		%d x
>8	short		>0		%d,
>10	byte		&0x40		interlaced,
>10	byte&0x07	=0x00		2 colors
>10	byte&0x07	=0x01		4 colors
>10	byte&0x07	=0x02		8 colors
>10	byte&0x07	=0x03		16 colors
>10	byte&0x07	=0x04		32 colors
>10	byte&0x07	=0x05		64 colors
>10	byte&0x07	=0x06		128 colors
>10	byte&0x07	=0x07		256 colors

# Miscellany
0	long		1123028772		Artisan image file
>4	long		1	rectangular 24-bit image
>4	long		2	rectangular 8-bit image with colormap
>4      long            3	rectangular 32-bit image (24-bit with matte)
0	string		\361\0\100\273		CMU window manager bitmap
0	string		#FIG			FIG graphics savefile text
>6      string          2.1             	Version 2.1
>6      string          2.0             	Version 2.0
0	string		GKSM			GKS Metafile
8	string		ILBM			IFF ILBM file
0	string		yz			MGR bitmap
0       string          ARF_BEGARF      	PHIGS clear text archive
0	string		\0\0\1\263		MPEG Paris
# PCX formats (source: Selke's filetype program, 1991)
0	string	\x0A\x00	PCX image (Paintbrush version 2.5)
0	string	\x0A\x02	PCX image (Paintbrush version 2.8, with palette)
0	string	\x0A\x03	PCX image (Paintbrush version 2.8, without palette)
0  string	\x0A\x05	PCX image (Paintbrush version 3.0)
# JPEG (source: Cameron Simpson cameron@cs.unsw.oz.au,
#               John Adams J.Adams@ucl.ac.uk)
0	long		0xffd8ffe0		JPEG image, big endian
0	long		0xe0ffd8ff		JPEG image, little endian
0	string		hsi1			HSI1 image (wrapper for JPEG?)
6	string		JFIF			JPEG JFIF
#
# >>>>> BMP, etc. <<<<< (source: Greg Roelofs roe2@midway.uchicago.edu)
# [GRR: The >14 entries should really be strings of length four]
#
0	string		BM			bitmap
>14	byte		12			(OS/2 1.x format)
>14	byte		64			(OS/2 2.x format)
>14	byte		40			(Windows 3.x format)
# [GRR says the following are untested]
0	string		IC			icon
0	string		PI			pointer
0	string		CI			color icon
0	string		CP			color pointer
0	string		BA			bitmap array

# movie files from OS/2 (these are guesses)
0  string      RIFF     
>8 string      AVI      movie
#
# Various flavors of x86 UNIX executable/object (other than Xenix, which
# is in "microsoft").  DOS is in "ms-dos"; the ambitious soul can do
# Windows as well.
#
# Windows NT belongs elsewhere, as you need x86 and MIPS and Alpha and
# whatever comes next (HP-PA Hummingbird?).  OS/2 may also go elsewhere
# as well, if, as, and when IBM makes it portable.
#
# The `versions' should be un-commented if they work for you.
# (Was the problem just one of endianness?)
#
0	leshort		0502		basic-16 executable
>12	lelong		>0		not stripped
#>22	leshort		>0		- version %ld
0	leshort		0503		basic-16 executable (TV)
>12	lelong		>0		not stripped
#>22	leshort		>0		- version %ld
0	leshort		0510		x86 executable
>12	lelong		>0		not stripped
0	leshort		0511		x86 executable (TV)
>12	lelong		>0		not stripped
0	leshort		=0512		iAPX 286 executable small model (COFF)
>12	lelong		>0		not stripped
#>22	leshort		>0		- version %ld
0	leshort		=0522		iAPX 286 executable large model (COFF)
>12	lelong		>0		not stripped
#>22	leshort		>0		- version %ld
0	leshort		=0514		80386 COFF executable
>12	lelong		>0		not stripped
>22	leshort		>0		- version %ld
#
# magic for InterLeaf TPS:
0	string		=\210OPS	Interleaf saved data
0	string		=<!OPS		Interleaf document text
>5	string		,\ Version\ 	(version
>>14	string		>\0		%s)

#
# magic.iris: Magic for mips from an iris4d
#
# Dunno what byte-order munging is needed; all of SGI's *current*
# machines and OSes run in big-endian mode on the MIPS machines,
# as far as I know, but they do have the MIPSEB and MIPSEL stuff
# here....
#
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		>0		- version %ld.
>23	byte		>0		%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		>0		- version %ld.
>22	byte		>0		%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		>0		- version %ld.
>23	byte		>0		%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		>0		- version %ld.
>23	byte		>0		%ld
0	short		0x180		mipseb ucode
0	short		0x182		mipsel ucode
#
# IRIX core format version 1 (from /usr/include/core.out.h)
0	long		0xdeadadb0	IRIX core dump
>4	long		1		of
>16	string		>\0		'%s'
#
# Archives - This handles archive subtypes
#
0	string		!<arch>\n__________E	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
#
# magic.ispell
#
# XXX - byte order?
#
#0	short	0xffff9601	ispell hash file
0	short	0x9601	ispell hash file
>2	short	0x00	- 8-bit, no capitalization, 26 flags
>2	short	0x01	- 7-bit, no capitalization, 26 flags 
>2	short	0x02	- 8-bit, capitalization, 26 flags
>2	short	0x03	- 7-bit, capitalization, 26 flags 
>2	short	0x04	- 8-bit, no capitalization, 52 flags
>2	short	0x05	- 7-bit, no capitalization, 52 flags 
>2	short	0x06	- 8-bit, capitalization, 52 flags
>2	short	0x07	- 7-bit, capitalization, 52 flags 
>2	short	0x08	- 8-bit, no capitalization, 128 flags
>2	short	0x09	- 7-bit, no capitalization, 128 flags 
>2	short	0x0A	- 8-bit, capitalization, 128 flags
>2	short	0x0B	- 7-bit, capitalization, 128 flags 
>2	short	0x0C	- 8-bit, no capitalization, 256 flags
>2	short	0x0D	- 7-bit, no capitalization, 256 flags 
>2	short	0x0E	- 8-bit, capitalization, 256 flags
>2	short	0x0F	- 7-bit, capitalization, 256 flags 
>4	short	>0	and %d string characters
#	derived empirically, your offsets may vary!
53	string		yyprevious	c program text (from lex)
>3	string		>\0		 for %s
#
# magic.lif:
#
# XXX - byte order?
#
0	short		0x8000		lif file
# Values for Linux/i386 binaries, From: Rik Faith <faith@cs.unc.edu>
2       short           100             Linux/i386
>0      short           0407            executable
>0      short           0410            pure executable
>0      short           0413            demand paged executable
>16     long            >0              not stripped
>0      string          Jump            jump
# core dump file
216     long            0421            core file (Linux)
0	string		#\ Magic	magic text file for file(1) cmd
# Unfortunately, saved netnews also has From line added in some news software.
#0	string		From 		mail text
# There are tests to ascmagic.c to cope with mail and news.
0	string		Relay-Version: 	old news text
0	string		#!\ rnews	batched news text
0	string		N#!\ rnews	mailed, batched news text
0	string		Forward\ to 	mail forwarding text
0	string		Pipe\ to 	mail piping text
0	string		Return-Path:	smtp mail text
0	string		Path:		news text
0	string		Xref:		news text
0	string		From:		news or mail text
0	string		Article 	saved news text
#
# Microsoft (Xenix, not DOS)
#
# "Middle model" stuff, and "Xenix 8086 relocatable or 80286 small
# model" lifted from "magic.xenix", with comment "derived empirically;
# treat as folklore until proven"
#
# "small model", "large model", "huge model" stuff lifted from XXX
#
# XXX - "x.out" collides with PDP-11 archives....
#
0	string		core		core file (Xenix)
0	byte		0x80		8086 relocatable (Microsoft)
0	leshort		0xff65		x.out
>2	string		__.SYMDEF	 randomized
>0	byte		x		archive
0	leshort		0x206		Microsoft a.out
>8	leshort		1		Middle model
>0x1e	leshort		&0x10		overlay
>0x1e	leshort		&0x2		separate
>0x1e	leshort		&0x4		pure
>0x1e	leshort		&0x800		segmented
>0x1e	leshort		&0x400		standalone
>0x1e	leshort		&0x8		fixed-stack
>0x1c	byte		&0x80		byte-swapped
>0x1c	byte		&0x40		word-swapped
>0x10	lelong		>0		not-stripped
>0x1e	leshort		^0xc000		pre-SysV
>0x1c	byte		&0x4		86
>0x1c	byte		&0x9		286
>0x1c	byte		&0xa		386
>0x1f	byte		<0x040		small model
>0x1f	byte		=0x048		large model	
>0x1f	byte		=0x049		huge model 
>0x1e	leshort		&0x1		executable
>0x1e	leshort		^0x1		object file
>0x1e	leshort		&0x40		Large Text
>0x1e	leshort		&0x20		Large Data
>0x1e	leshort		&0x120		Huge Objects Enabled
>0x10	lelong		>0		not stripped

0	leshort		0x140		old Microsoft 8086 x.out
>0x3	byte		&0x4		separate
>0x3	byte		&0x2		pure
>0	byte		&0x1		executable
>0	byte		^0x1		relocatable
>0x14	lelong		>0		not stripped

0	lelong		0x206		b.out
>0x1e	leshort		&0x10		overlay
>0x1e	leshort		&0x2		separate
>0x1e	leshort		&0x4		pure
>0x1e	leshort		&0x800		segmented
>0x1e	leshort		&0x400		standalone
>0x1e	leshort		&0x1		executable
>0x1e	leshort		^0x1		object file
>0x1e	leshort		&0x4000		V2.3
>0x1e	leshort		&0x8000		V3.0
>0x1c	byte		&0x4		86
>0x1c	byte		&0xb		186
>0x1c	byte		&0x9		286
>0x1c	byte		&0x29		286
>0x1c	byte		&0xa		386
>0x1e	leshort		&0x4		Large Text
>0x1e	leshort		&0x2		Large Data
>0x1e	leshort		&0x102		Huge Objects Enabled

0	leshort		0x580		XENIX 8086 relocatable or 80286 small model
#
# RISC MIPS decstation
# Should this be "leshort", given that DEC ran the DECstations in
# little-endian mode?
#
# Where is the non-SGI, non-DEC MIPS stuff?
#
0	short		0x6201		MIPS executable
#
# XXX - byte order?
#
0	long	31415		Mirage Assembler m.out executable
#
# ID is the binary tags database produced by mkid(1).
#
# XXX - byte order?
#
0	string		\311\304	ID tags data
>2	short		>0		version %d
0	long		0x1010101	MMDF mailbox
#
# Motorola
#
# 68K
#
0	beshort		0520		mc68k COFF
>18	beshort		^00000020	object
>18	beshort		&00000020	executable
>12	belong		>0		not stripped
>168	string		.lowmem		Apple toolbox
>20	beshort		0407		(impure)
>20	beshort		0410		(pure)
>20	beshort		0413		(demand paged)
>20	beshort		0421		(standalone)
0	beshort		0521		mc68k executable (shared)
>12	belong		>0		not stripped
0	beshort		0522		mc68k executable (shared demand paged)
>12	belong		>0		not stripped
#
# Motorola/UniSoft 68K Binary Compatibility Standard (BCS)
#
0	beshort		0554		68K BCS executable
#
# 88K
#
# Motorola/88Open BCS
#
0	beshort		0555		88K BCS executable
#
# Various MS-DOS (and OS/2) magic numbers
#
# Contributions: Jouni Miettunen jon@stekt.oulu.fi
#                Greg Roelofs roe2@midway.uchicago.edu 
#                Darrel Hankerson hankedr@mail.auburn.edu
#
0  string      MZ             DOS executable
>24   string   @              (OS/2 or Windows format)
# DH: OS/2 lh 2.22
>>0xe7 string  LH/2\ Self-Extract  (%s)
# DH: OS/2 PKZip 1.01
>>0xe9 string  PKSFX2         (%s)
>0x19 string   \x0\x0\x0LZ91  (lzexe compressed)
>0x1c string   RJSX\xff\xff   (ARJ SFX)
>0x1c string   diet\xf9\x9c   (diet compressed)
>0x1e string   Copyright\ 1989-1990\ PKWARE\ Inc.  (PKSFX)
# JM: 0x1e "PKLITE Copr. 1990-92 PKWARE Inc. All Rights Reserved\7\0\0\0"
>0x1e string   PKLITE\ Copr.  (%.6s compressed)
>0x24 string   LHa's\ SFX     (%.15s) 
>0x24 string   LHA's\ SFX     (%.15s)
0  string      LZ             DOS executable (built-in)
0  byte     0xe9              DOS executable (COM)
>6 string   SFX\ of\ LHarc    (%s)
0  byte     0xeb              DOS executable (COM)
0  byte     0xf0              MS-DOS program library

0  string   ?_\3\0            Windows HLP

#
# magic.tower:
#
# NCR Tower objects, contributed by
# Michael R. Wayne  ***  TMC & Associates  ***  INTERNET: wayne@ford-vax.arpa
# uucp: {philabs | pyramid} !fmsrl7!wayne   OR   wayne@fmsrl7.UUCP
#
0	beshort		000610	Tower/XP rel 2 object
>12	   belong		>0	not stripped
>20	   beshort		0407	executable
>20	   beshort		0410	pure executable
>22	   beshort		>0	- version %ld
0	beshort		000615	Tower/XP rel 2 object
>12	   belong		>0	not stripped
>20	   beshort		0407	executable
>20	   beshort		0410	pure executable
>22	   beshort		>0	- version %ld
0	beshort		000620	Tower/XP rel 3 object
>12	   belong		>0	not stripped
>20	   beshort		0407	executable
>20	   beshort		0410	pure executable
>22	   beshort		>0	- version %ld
0	beshort		000625	Tower/XP rel 3 object
>12	   belong		>0	not stripped
>20	   beshort		0407	executable
>20	   beshort		0410	pure executable
>22	   beshort		>0	- version %ld
0	beshort		000630	Tower32/600/400 68020 object
>12	   belong		>0	not stripped
>20	   beshort		0407	executable
>20	   beshort		0410	pure executable
>22	   beshort		>0	- version %ld
0	beshort		000640	Tower32/800 68020
>18	   beshort		&020000	w/68881 object
>18	   beshort		&040000	compatible object
>18	   beshort		&~060000	object
>20	   beshort		0407	executable
>20	   beshort		0413	pure executable
>12	   belong		>0	not stripped
>22	   beshort		>0	- version %ld
0	beshort		000645	Tower32/800 68010
>18	   beshort		&040000	compatible object
>18	   beshort		&~060000 object
>20	   beshort		0407	executable
>20	   beshort		0413	pure executable
>12	   belong		>0	not stripped
>22	   beshort		>0	- version %ld
# NeWS, not "news" as in "netnews"
0	string		StartFontMetrics	ASCII font metrics
0	string		StartFont	ASCII font bits
0	long		0x137A2944	NeWS bitmap font
0	long		0x137A2947	NeWS font family
# >>>>> OS/2 INF/HLP <<<<<  (source: Daniel Dissett ddissett@netcom.com)
# Carl Hauser (chauser.parc@xerox.com) and 
# Marcus Groeber (marcusg@ph-cip.uni-koeln.de)
# list the following header format in inf02a.doc:
#
#   int16 ID;           // ID magic word (5348h = "HS")
#  int8  unknown1;     // unknown purpose, could be third letter of ID
#  int8  flags;        // probably a flag word...
#                      //  bit 0: set if INF style file
#                      //  bit 4: set if HLP style file
#                      // patching this byte allows reading HLP files
#                      // using the VIEW command, while help files 
#                      // seem to work with INF settings here as well.
#  int16 hdrsize;      // total size of header
#  int16 unknown2;     // unknown purpose
# 
0   string  HSP\x01\x9b\x00 OS/2 INF
>107 string >0                      (%s)
0   string  HSP\x10\x9b\x00     OS/2 HLP
>107 string >0                      (%s)

# OS/2 INI (this is a guess)
0  string   \xff\xff\xff\xff\x14\0\0\0  OS/2 INI

#
# XXX - byte order?
#
0	short	0x2a17	"compact bitmap" format (Poskanzer)
#
# magic.pdp: PDP-11 executable/object and APL workspace
#
0	lelong		0101555		PDP-11 single precision APL workspace
0	lelong		0101554		PDP-11 double precision APL workspace

#
# PDP-11 a.out
#
0	leshort		0407		PDP-11 executable
>8	leshort		>0		not stripped

0	leshort		0401		PDP-11 UNIX/RT ldp
0	leshort		0405		PDP-11 old overlay

0	leshort		0410		PDP-11 pure executable
>8	leshort		>0		not stripped

0	leshort		0411		PDP-11 separate I&D executable
>8	leshort		>0		not stripped

0	leshort		0437		PDP-11 kernel overlay
#
# pgp (pretty good protection)
0       short           0x9900                  pgp key public ring
0       short           0x9501                  pgp key security ring
0       string          -----BEGIN\040PGP       pgp armored data
>15     string          PUBLIC\040KEY\040BLOCK- public key blocK
>15     string          MESSAGE-                message
>15     string          SIGNED\040MESSAGE-      signed message
>15     string          PGP\040SIGNATURE-       signature
#
# SysV R4 PKG Datastreams:
#
0       string          #\ PaCkAgE\ DaTaStReAm  pkg Datastream (SVR4)
#
#/etc/magic entries for Plus Five's UNIX MUMPS
#
# XXX - byte order?  Paging Hokey....
#
0	short		0x259		mumps avl global
>2	byte		>0		(V%d)
>6	byte		>0		with %d byte name
>7	byte		>0		and %d byte data cells
0	short		0x25a		mumps blt global
>2	byte		>0		(V%d)
>8	short		>0		- %d byte blocks
>15	byte		0x00		- P/D format
>15	byte		0x01		- P/K/D format
>15	byte		0x02		- K/D format
>15	byte		>0x02		- Bad Flags
#
# magic.postscript: Magic for postscript files
#
# XXX - should we match only versions 1.0 and 2.0, or should we wildcard
# it?
#
0	string		%!		PostScript text
>2	string	PS-Adobe-		conforming
>>11	string	1.0			at level %s
>>11	string	2.0			at level %s
#
# magic.ps: psdatabase magic
#
#0	byte	0126	ps database
#>1	string	>\0	- version %s
#>4	string	>\0	from kernel %s
#
# magic.pyramid: Magic for pyramids
#
# XXX - byte order?
#
0	long		0x50900107	Pyramid 90x family executable
0	long		0x50900108	Pyramid 90x family pure executable
>16	long		>0		not stripped
0	long		0x5090010b	Pyramid 90x family demand paged pure executable
>16	long		>0		not stripped
# for SC
38	string		Spreadsheet	sc file
# SCCS archive structure:
# \001h01207
# \001s 00276/00000/00000
# \001d D 1.1 87/09/23 08:09:20 ian 1 0
# \001c date and time created 87/09/23 08:09:20 by ian
# \001e
# \001u
# \001U
# ... etc.
# Now '\001h' happens to be the same as the 3B20's a.out magic number (0550).
# *Sigh*. And these both came from various parts of the USG.
# Maybe we should just switch everybody from SCCS to RCS!
# Further, you can't just say '\001h0', because the five-digit number
# is a checksum that could (presumably) have any leading digit,
# and we don't have regular expression matching yet. 
# Hence the following official kludge:
8	string		\001s\ 			SCCS archive.
#
# magic.sendmail:
#
# XXX - byte order?
#
0	byte	046	  Sendmail frozen configuration 
>16	string	>\0	  - version %s
0	short	0x271c	  Sendmail frozen configuration
>16	string	>\0	  - version %s
# Sequent information updated by Don Dwiggins <atsun!dwiggins>.
# For Sequent's multiprocessor systems (incomplete).
0       leshort   0x00ea        BALANCE NS32000 .o
0       leshort   0x10ea        BALANCE NS32000 executable (0 @ 0)
>16     lelong    >0            not stripped
0       leshort   0x20ea        BALANCE NS32000 executable (invalid @ 0)
>16     lelong    >0            not stripped
0       leshort   0x30ea        BALANCE NS32000 standalone executable
>16     lelong    >0            not stripped
# Also need info on Sequent "Symmetry" series...
# $Id: sgml,v 1.3 93/01/05 12:52:44 ian Exp $
# SGML goop, mostly from rph@sq.
0	string		\<!DOCTYPE	Exported SGML document
0	string		\<!doctype	Exported SGML document
0	string		\<!SUBDOC	Exported SGML subdocument
0	string		\<!subdoc	Exported SGML subdocument
# SoftQuad Publishing Software magic numbers
# $Id: softquad,v 1.8 93/02/19 14:36:43 ian Exp $
# Author/Editor and RulesBuilder
#
# XXX - byte order?
#
0	string		\<!SQ\ DTD>	Compiled SGML rules file
>9	string		>\0		 Type %s
0	string		\<!SQ\ A/E>	A/E SGML Document binary
>9	string		>\0		 Type %s
0	string		\<!SQ\ STS>	A/E SGML binary styles file
>9	string		>\0		 Type %s
0	short		0xc0de		Compiled PSI (v1) data
0	short		0xc0da		Compiled PSI (v2) data
>3	string		>\0		(%s)
# Binary sqtroff font/desc files...
0	short		0125252		SoftQuad DESC or font file binary
>2	short		>0		- version %d
# Bitmaps...
0	string		SQ\ BITMAP1	SoftQuad Raster Format text
#0	string		SQ\ BITMAP2	SoftQuad Raster Format data
# sqtroff intermediate language (replacement for ditroff int. lang.)
0	string		X\ 		SoftQuad troff Context intermediate
>2	string		495		for AT&T 495 laser printer
>2	string		hp		for Hewlett-Packard LaserJet
>2	string		impr		for IMAGEN imPRESS
>2	string		ps		for PostScript
#
# Values for big-endian Sun (MC680x0, SPARC) binaries on pre-5.x
# releases.
# (5.x uses ELF.)
#
0	belong&0777777	0600413		sparc demand paged
>0	byte		&0x80
>>20	belong		<4096		shared library
>>20	belong		=4096		dynamically linked executable
>>20	belong		>4096		dynamically linked executable
>0	byte		^0x80		executable
>16	belong		>0		not stripped
0	belong&0777777	0600410		sparc pure
>0	byte		&0x80		dynamically linked executable
>0	byte		^0x80		executable
>16	belong		>0		not stripped
0	belong&0777777	0600407		sparc
>0	byte		&0x80		dynamically linked executable
>0	byte		^0x80		executable
>16	belong		>0		not stripped

0	belong&0777777	0400413		mc68020 demand paged
>0	byte		&0x80
>>20	belong		<4096		shared library
>>20	belong		=4096		dynamically linked executable
>>20	belong		>4096		dynamically linked executable
>16	belong		>0		not stripped
0	belong&0777777	0400410		mc68020 pure
>0	byte		&0x80		dynamically linked executable
>0	byte		^0x80		executable
>16	belong		>0		not stripped
0	belong&0777777	0400407		mc68020
>0	byte		&0x80		dynamically linked executable
>0	byte		^0x80		executable
>16	belong		>0		not stripped

0	belong&0777777	0200413		mc68010 demand paged
>0	byte		&0x80
>>20	belong		<4096		shared library
>>20	belong		=4096		dynamically linked executable
>>20	belong		>4096		dynamically linked executable
>16	belong		>0		not stripped
0	belong&0777777	0200410		mc68010 pure
>0	byte		&0x80		dynamically linked executable
>0	byte		^0x80		executable
>16	belong		>0		not stripped
0	belong&0777777	0200407		mc68010
>0	byte		&0x80		dynamically linked executable
>0	byte		^0x80		executable
>16	belong		>0		not stripped

# reworked these to avoid anything beginning with zero becoming "old sun-2"
0	belong		0407		old sun-2 executable
>16	belong		>0		not stripped
0	belong		0410		old sun-2 pure executable
>16	belong		>0		not stripped
0	belong		0413		old sun-2 demand paged executable
>16	belong		>0		not stripped

#
# Core files.  "SPARC 4.x BCP" means "core file from a SunOS 4.x SPARC
# binary executed in compatibility mode under SunOS 5.x".
#
0	belong		0x080456	SunOS core file
>4	belong		432		(SPARC)
>>132	string		>\0		from '%s'
>4	belong		826		(68K)
>>128	string		>\0		from '%s'
>4	belong		456		(SPARC 4.x BCP)
>>152	string		>\0		from '%s'
#
# Sun rasterfiles
#
# XXX - byte order?  What about the 386i?
#
0	string	\x59\xa6\x6a\x95	rasterfile
>4	long	>0		%d
>8	long	>0		x %d
>12	long	>0		x %d
>20	long	0		old format
>20	long	2		compressed
>24	long	1		with color map
#
# Terminfo
#
# XXX - byte order for screen images?
#
0	string		\032\001	Compiled terminfo entry
0	short		0433		Curses screen image
0	short		0434		Curses screen image
#
# magic.tex: 
#
# XXX - needs byte-endian stuff (big-endian and little-endian DVI?)
#
#0  short   0173402 DVI File
0   string  \xf7\x02\x01\x83        DVI
>16 string  >\0             (%s)
# PK files and font lib entries from dvips
0  string   \xf7\x59             TeX PK
>3 string   >\0                  (%s)
# font lib has string length (short) preceding comment
0  string   FLIB\2\0             emTeX font lib
>12 short   >0
>>14 string >\0                  (%s)
0   short   0173531 Packed TeX Font
>4  string  >\0 (%s)
2   string  \000\022    Metafont Font Metric
>33 string  >\0 (%s)
# TeX vf entries from dvips: pre,id,len. String need not be asciiz.
0  string   \xf7\xca TeX vf
>3 string   >\0      (%s)
#
0  string   This\ is\ Info\ file  TeX Info text
>18 string   >\0                  (%s)
0  string   Info\ file            TeX Info text
>10 string   >\0                  (%s)
#
# magic.troff:
#
0	string		\100\357	very old (C/A/T) troff output data
0	string		'		[nt]roff, tbl, or eqn input text

# other typesetting magic
0	string		\100\357	very old (C/A/T) troff output data
0	string		Interpress/Xerox	Xerox InterPress data
>16	string		/			(version
>>17	string		>\0			%s)
#
# magic.unknown: Unknown machine magic
#
# XXX - this probably should be pruned, as it'll match PDP-11 and
# VAX image formats.
#
# 0x107 is 0407; 0x108 is 0410; both are PDP-11 (executable and pure,
# respectively).
#
# 0x109 is 0411; that's PDP-11 split I&D, but the PDP-11 version doesn't
# have the "version %ld", which may be a bogus COFFism (I don't think
# there ever was COFF for the PDP-11).
#
# 0x10B is 0413; that's VAX demand-paged, but this is a short, not a
# long, as it would be on a VAX.
#
# 0x10C is 0414, 0x10D is 0415, and 0x10E is 416; those *are* unknown.
#
0	short		0x107		unknown machine executable
>8	short		>0		not stripped
>15	byte		>0		- version %ld
0	short		0x108		unknown pure executable
>8	short		>0		not stripped
>15	byte		>0		- version %ld
0	short		0x109		PDP-11 separate I&D
>8	short		>0		not stripped
>15	byte		>0		- version %ld
0	short		0x10b		unknown pure executable
>8	short		>0		not stripped
>15	byte		>0		- version %ld
0	long		0x10c		unknown demand paged pure executable
>16	long		>0		not stripped
0	long		0x10d		unknown demand paged pure executable
>16	long		>0		not stripped
0	long		0x10e		unknown readable demand paged pure executable
0	string		begin 		uuencoded mail text
# Btoa(1) is an alternative to uuencode that requires less space.
0	string		xbtoa\ Begin	btoa'd text
# ship is used by INFO-Zip
0  string   $\015\012ship     ship mail text
>8 string   >\0               (%s)
0  string   $\012ship         ship mail text
>7 string   >\0               (%s)

#	Herewith many of the object file formats used by USG systems.
#	Most have been moved to files for a particular processor,
#	and deleted if they duplicate other entries.
#
0	short		0610		Perkin-Elmer executable
#
# magic.pdp: VAX executable/object and APL workspace
#
0	lelong		0101557		VAX single precision APL workspace
0	lelong		0101556		VAX double precision APL workspace

#
# VAX a.out (32V, BSD)
#
0	lelong		0407		VAX executable
>16	lelong		>0		not stripped

0	lelong		0410		VAX pure executable
>16	lelong		>0		not stripped

0	lelong		0413		VAX demand paged pure executable
>16	lelong		>0		not stripped

0	lelong		0420		VAX demand paged (first page unmapped) pure executable
>16	lelong		>0		not stripped

#
# VAX COFF
#
# The `versions' should be un-commented if they work for you.
# (Was the problem just one of endianness?)
#
0	leshort		0570		VAX COFF executable
>12	lelong		>0		not stripped
#>22	leshort		>0		- version %ld
0	leshort		0575		VAX COFF pure executable
>12	lelong		>0		not stripped
#>22	leshort		>0		- version %ld
#
# magic.visx: Visx format file
#
0	short		0x5555		VISX image file
>2	byte		0		(zero)
>2	byte		1		(unsigned char)
>2	byte		2		(short integer)
>2	byte		3		(float 32)
>2	byte		4		(float 64)
>2	byte		5		(signed char)
>2	byte		6		(bit-plane)
>2	byte		7		(classes)
>2	byte		8		(statistics)
>2	byte		10		(ascii text)
>2	byte		15		(image segments)
>2	byte		100		(image set)
>2	byte		101		(unsigned char vector)
>2	byte		102		(short integer vector)
>2	byte		103		(float 32 vector)
>2	byte		104		(float 64 vector)
>2	byte		105		(signed char vector)
>2	byte		106		(bit plane vector)
>2	byte		121		(feature vector)
>2	byte		122		(feature vector library)
>2	byte		124		(chain code)
>2	byte		126		(bit vector)
>2	byte		130		(graph)
>2	byte		131		(adjacency graph)
>2	byte		132		(adjacency graph library)
>2	string		.VISIX		(ascii text)
#
# Formats for Word and WordPerfect (source: Selke's filetype).
#
0	string	\x31\xBE		Microsoft Word
>2	string	\x00\x00		text
>2	string	\x01\x00    Textbaustein
>2 string	\x02\x00		printer description file
#
0	string	\xffWPC 		WordPerfect
>8	string	\x01\x01		macro file
>8	string	\x01\x02		WordPerfect help file
>8	string	\x01\x03		keyboard definition file
>8	string	\x01\x0A		document file
>8	string	\x01\x0B		dictionary file
>8	string	\x01\x0C		thesaurus file
>8	string	\x01\x0D		block
>8	string	\x01\x0E		rectangular block
>8	string	\x01\x0F		column block
>8	string	\x01\x10		printer resource file (PRS)
>8	string	\x01\x11		setup file
>8	string	\x01\x12		prefix information file
>8	string	\x01\x13		printer resource file (ALL)
>8	string	\x01\x14		display resource file (DRS)
>8	string	\x01\x15		overlay file (WP.FIL)
>8	string	\x01\x16		graphics file (WPG)
>8	string	\x01\x17		hyphenation code module
>8	string	\x01\x18		hyphenation data module
>8	string	\x01\x19		macro resource file (MRS)
>8	string	\x01\x1A		graphics driver (WPD)
>8	string	\x01\x1B		hyphenation lex module
#
0	string	{rtf			Microsoft Rich Text Format
0	string	{\ rtf		Microsoft Rich Text Format
#
# magic.x11
#
# I think this is byte-order-dependent; if so, it should become:
#
# 0	belong	00000004	X11 big-endian snf font
# 0	lelong	00000004	X11 little-endian snf font
#
0	long	00000004	X11 snf font
#
# Zilog Z8000.
#
# Was it big-endian or little-endian?  My Product Specification doesn't
# say.
#
0	long		0xe807		object file (z8000 a.out)
0	long		0xe808		pure object file (z8000 a.out)
0	long		0xe809		separate object file (z8000 a.out)
0	long		0xe805		overlay object file (z8000 a.out)

