| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390 | 
							
- #------------------------------------------------------------------------------
 
- # $File: macintosh,v 1.22 2011/05/17 17:40:31 rrt Exp $
 
- # macintosh description
 
- #
 
- # BinHex is the Macintosh ASCII-encoded file format (see also "apple")
 
- # Daniel Quinlan, quinlan@yggdrasil.com
 
- 11	string	must\ be\ converted\ with\ BinHex	BinHex binary text
 
- !:mime	application/mac-binhex40
 
- >41	string	x					\b, version %.3s
 
- # Stuffit archives are the de facto standard of compression for Macintosh
 
- # files obtained from most archives. (franklsm@tuns.ca)
 
- 0	string		SIT!			StuffIt Archive (data)
 
- !:mime	application/x-stuffit
 
- !:apple	SIT!SIT!
 
- >2	string		x			: %s
 
- 0	string		SITD			StuffIt Deluxe (data)
 
- >2	string		x			: %s
 
- 0	string		Seg			StuffIt Deluxe Segment (data)
 
- >2	string		x			: %s
 
- # Newer StuffIt archives (grant@netbsd.org)
 
- 0	string		StuffIt			StuffIt Archive
 
- !:mime	application/x-stuffit
 
- !:apple	SIT!SIT!
 
- #>162	string		>0			: %s
 
- # Macintosh Applications and Installation binaries (franklsm@tuns.ca)
 
- # GRR: Too weak
 
- #0	string		APPL			Macintosh Application (data)
 
- #>2	string		x			\b: %s
 
- # Macintosh System files (franklsm@tuns.ca)
 
- # GRR: Too weak
 
- #0	string		zsys			Macintosh System File (data)
 
- #0	string		FNDR			Macintosh Finder (data)
 
- #0	string		libr			Macintosh Library (data)
 
- #>2	string		x			: %s
 
- #0	string		shlb			Macintosh Shared Library (data)
 
- #>2	string		x			: %s
 
- #0	string		cdev			Macintosh Control Panel (data)
 
- #>2	string		x			: %s
 
- #0	string		INIT			Macintosh Extension (data)
 
- #>2	string		x			: %s
 
- #0	string		FFIL			Macintosh Truetype Font (data)
 
- #>2	string		x			: %s
 
- #0	string		LWFN			Macintosh Postscript Font (data)
 
- #>2	string		x			: %s
 
- # Additional Macintosh Files (franklsm@tuns.ca)
 
- # GRR: Too weak
 
- #0	string		PACT			Macintosh Compact Pro Archive (data)
 
- #>2	string		x			: %s
 
- #0	string		ttro			Macintosh TeachText File (data)
 
- #>2	string		x			: %s
 
- #0	string		TEXT			Macintosh TeachText File (data)
 
- #>2	string		x			: %s
 
- #0	string		PDF			Macintosh PDF File (data)
 
- #>2	string		x			: %s
 
- # MacBinary format (Eric Fischer, enf@pobox.com)
 
- #
 
- # Unfortunately MacBinary doesn't really have a magic number prior
 
- # to the MacBinary III format.  The checksum is really the way to
 
- # do it, but the magic file format isn't up to the challenge.
 
- #
 
- # 0	byte		0
 
- # 1	byte				# filename length
 
- # 2	string				# filename
 
- # 65    string				# file type
 
- # 69	string				# file creator
 
- # 73	byte				# Finder flags
 
- # 74	byte		0
 
- # 75	beshort				# vertical posn in window
 
- # 77	beshort				# horiz posn in window
 
- # 79	beshort				# window or folder ID
 
- # 81    byte				# protected?
 
- # 82	byte		0
 
- # 83	belong				# length of data segment
 
- # 87	belong				# length of resource segment
 
- # 91	belong				# file creation date
 
- # 95	belong				# file modification date
 
- # 99	beshort				# length of comment after resource
 
- # 101	byte				# new Finder flags
 
- # 102	string		mBIN		# (only in MacBinary III)
 
- # 106	byte				# char. code of file name
 
- # 107	byte				# still more Finder flags
 
- # 116	belong				# total file length
 
- # 120	beshort				# length of add'l header
 
- # 122	byte		129		# for MacBinary II
 
- # 122	byte		130		# for MacBinary III
 
- # 123	byte		129		# minimum version that can read fmt
 
- # 124	beshort				# checksum
 
- #
 
- # This attempts to use the version numbers as a magic number, requiring
 
- # that the first one be 0x80, 0x81, 0x82, or 0x83, and that the second
 
- # be 0x81.  This works for the files I have, but maybe not for everyone's.
 
- # Unfortunately, this magic is quite weak - MPi
 
- #122	beshort&0xFCFF	0x8081		Macintosh MacBinary data
 
- # MacBinary I doesn't have the version number field at all, but MacBinary II
 
- # has been in use since 1987 so I hope there aren't many really old files
 
- # floating around that this will miss.  The original spec calls for using
 
- # the nulls in 0, 74, and 82 as the magic number.
 
- #
 
- # Another possibility, that would also work for MacBinary I, is to use
 
- # the assumption that 65-72 will all be ASCII (0x20-0x7F), that 73 will
 
- # have bits 1 (changed), 2 (busy), 3 (bozo), and 6 (invisible) unset,
 
- # and that 74 will be 0.  So something like
 
- # 
 
- # 71 	belong&0x80804EFF 0x00000000 	Macintosh MacBinary data
 
- # 
 
- # >73	byte&0x01	0x01		\b, inited
 
- # >73	byte&0x02	0x02		\b, changed
 
- # >73	byte&0x04	0x04		\b, busy
 
- # >73	byte&0x08	0x08		\b, bozo
 
- # >73	byte&0x10	0x10		\b, system
 
- # >73	byte&0x10	0x20		\b, bundle
 
- # >73	byte&0x10	0x40		\b, invisible
 
- # >73	byte&0x10	0x80		\b, locked
 
- #>65	string		x		\b, type "%4.4s"
 
- #>65	string		8BIM		(PhotoShop)
 
- #>65	string		ALB3		(PageMaker 3)
 
- #>65	string		ALB4		(PageMaker 4)
 
- #>65	string		ALT3		(PageMaker 3)
 
- #>65	string		APPL		(application)
 
- #>65	string		AWWP		(AppleWorks word processor)
 
- #>65	string		CIRC		(simulated circuit)
 
- #>65	string		DRWG		(MacDraw)
 
- #>65	string		EPSF		(Encapsulated PostScript)
 
- #>65	string		FFIL		(font suitcase)
 
- #>65	string		FKEY		(function key)
 
- #>65	string		FNDR		(Macintosh Finder)
 
- #>65	string		GIFf		(GIF image)
 
- #>65	string		Gzip		(GNU gzip)
 
- #>65	string		INIT		(system extension)
 
- #>65	string		LIB\ 		(library)
 
- #>65	string		LWFN		(PostScript font)
 
- #>65	string		MSBC		(Microsoft BASIC)
 
- #>65	string		PACT		(Compact Pro archive)
 
- #>65	string		PDF\ 		(Portable Document Format)
 
- #>65	string		PICT		(picture)
 
- #>65	string		PNTG		(MacPaint picture)
 
- #>65	string		PREF		(preferences)
 
- #>65	string		PROJ		(Think C project)
 
- #>65	string		QPRJ		(Think Pascal project)
 
- #>65	string		SCFL		(Defender scores)
 
- #>65	string		SCRN		(startup screen)
 
- #>65	string		SITD		(StuffIt Deluxe)
 
- #>65	string		SPn3		(SuperPaint)
 
- #>65	string		STAK		(HyperCard stack)
 
- #>65	string		Seg\ 		(StuffIt segment)
 
- #>65	string		TARF		(Unix tar archive)
 
- #>65	string		TEXT		(ASCII)
 
- #>65	string		TIFF		(TIFF image)
 
- #>65	string		TOVF		(Eudora table of contents)
 
- #>65	string		WDBN		(Microsoft Word word processor)
 
- #>65	string		WORD		(MacWrite word processor)
 
- #>65	string		XLS\ 		(Microsoft Excel)
 
- #>65	string		ZIVM		(compress (.Z))
 
- #>65	string		ZSYS		(Pre-System 7 system file)
 
- #>65	string		acf3		(Aldus FreeHand)
 
- #>65	string		cdev		(control panel)
 
- #>65	string		dfil		(Desk Acessory suitcase)
 
- #>65	string		libr		(library)
 
- #>65	string		nX^d		(WriteNow word processor)
 
- #>65	string		nX^w		(WriteNow dictionary)
 
- #>65	string		rsrc		(resource)
 
- #>65	string		scbk		(Scrapbook)
 
- #>65	string		shlb		(shared library)
 
- #>65	string		ttro		(SimpleText read-only)
 
- #>65	string		zsys		(system file)
 
- #>69	string		x		\b, creator "%4.4s"
 
- # Somewhere, Apple has a repository of registered Creator IDs.  These are
 
- # just the ones that I happened to have files from and was able to identify.
 
- #>69	string		8BIM		(Adobe Photoshop)
 
- #>69	string		ALD3		(PageMaker 3)
 
- #>69	string		ALD4		(PageMaker 4)
 
- #>69	string		ALFA		(Alpha editor)
 
- #>69	string		APLS		(Apple Scanner)
 
- #>69	string		APSC		(Apple Scanner)
 
- #>69	string		BRKL		(Brickles)
 
- #>69	string		BTFT		(BitFont)
 
- #>69	string		CCL2 		(Common Lisp 2)
 
- #>69	string		CCL\ 		(Common Lisp)
 
- #>69	string		CDmo		(The Talking Moose)
 
- #>69	string		CPCT		(Compact Pro)
 
- #>69	string		CSOm		(Eudora)
 
- #>69	string		DMOV		(Font/DA Mover)
 
- #>69	string		DSIM		(DigSim)
 
- #>69	string		EDIT		(Macintosh Edit)
 
- #>69	string		ERIK		(Macintosh Finder)
 
- #>69	string		EXTR		(self-extracting archive)
 
- #>69	string		Gzip		(GNU gzip)
 
- #>69	string		KAHL		(Think C)
 
- #>69	string		LWFU		(LaserWriter Utility)
 
- #>69	string		LZIV		(compress)
 
- #>69	string		MACA		(MacWrite)
 
- #>69	string		MACS		(Macintosh operating system)
 
- #>69	string		MAcK		(MacKnowledge terminal emulator)
 
- #>69	string		MLND		(Defender)
 
- #>69	string		MPNT		(MacPaint)
 
- #>69	string		MSBB		(Microsoft BASIC (binary))
 
- #>69	string		MSWD		(Microsoft Word)
 
- #>69	string		NCSA		(NCSA Telnet)
 
- #>69	string		PJMM		(Think Pascal)
 
- #>69	string		PSAL		(Hunt the Wumpus)
 
- #>69	string		PSI2		(Apple File Exchange)
 
- #>69	string		R*ch		(BBEdit)
 
- #>69	string		RMKR		(Resource Maker)
 
- #>69	string		RSED		(Resource Editor)
 
- #>69	string		Rich		(BBEdit)
 
- #>69	string		SIT!		(StuffIt)
 
- #>69	string		SPNT		(SuperPaint)
 
- #>69	string		Unix		(NeXT Mac filesystem)
 
- #>69	string		VIM!		(Vim editor)
 
- #>69	string		WILD		(HyperCard)
 
- #>69	string		XCEL		(Microsoft Excel)
 
- #>69	string		aCa2		(Fontographer)
 
- #>69	string		aca3		(Aldus FreeHand)
 
- #>69	string		dosa		(Macintosh MS-DOS file system)
 
- #>69	string		movr		(Font/DA Mover)
 
- #>69	string		nX^n		(WriteNow)
 
- #>69	string		pdos		(Apple ProDOS file system)
 
- #>69	string		scbk		(Scrapbook)
 
- #>69	string		ttxt		(SimpleText)
 
- #>69	string		ufox		(Foreign File Access)
 
- # Just in case...
 
- 102	string		mBIN		MacBinary III data with surprising version number
 
- # sas magic from Bruce Foster (bef@nwu.edu)
 
- #
 
- #0	string		SAS		SAS
 
- #>8	string		x		%s
 
- 0	string		SAS		SAS
 
- >24	string		DATA		data file
 
- >24	string		CATALOG		catalog
 
- >24	string		INDEX		data file index
 
- >24	string		VIEW		data view
 
- # sas 7+ magic from Reinhold Koch (reinhold.koch@roche.com)
 
- #
 
- 0x54    string          SAS             SAS 7+
 
- >0x9C   string          DATA            data file
 
- >0x9C   string          CATALOG         catalog
 
- >0x9C   string          INDEX           data file index
 
- >0x9C   string          VIEW            data view
 
- # spss magic for SPSS system and portable files, 
 
- #	 from Bruce Foster (bef@nwu.edu).
 
- 0	long		0xc1e2c3c9	SPSS Portable File
 
- >40	string 		x		%s
 
- 0	string		$FL2		SPSS System File
 
- >24	string		x		%s
 
- # Macintosh filesystem data
 
- # From "Tom N Harris" <telliamed@mac.com>
 
- # Fixed HFS+ and Partition map magic: Ethan Benson <erbenson@alaska.net>
 
- # The MacOS epoch begins on 1 Jan 1904 instead of 1 Jan 1970, so these
 
- # entries depend on the data arithmetic added after v.35
 
- # There's also some Pascal strings in here, ditto...
 
- # The boot block signature, according to IM:Files, is 
 
- # "for HFS volumes, this field always contains the value 0x4C4B."
 
- # But if this is true for MFS or HFS+ volumes, I don't know.
 
- # Alternatively, the boot block is supposed to be zeroed if it's
 
- # unused, so a simply >0 should suffice.
 
- 0x400	beshort			0xD2D7		Macintosh MFS data
 
- >0	beshort			0x4C4B		(bootable)
 
- >0x40a	beshort			&0x8000		(locked)
 
- >0x402	beldate-0x7C25B080	x		created: %s,
 
- >0x406	beldate-0x7C25B080	>0		last backup: %s,
 
- >0x414	belong			x		block size: %d,
 
- >0x412	beshort			x		number of blocks: %d,
 
- >0x424	pstring			x		volume name: %s
 
- # "BD" gives many false positives
 
- #0x400	beshort			0x4244		Macintosh HFS data
 
- #>0	beshort			0x4C4B		(bootable)
 
- #>0x40a	beshort			&0x8000		(locked)
 
- #>0x40a	beshort			^0x0100		(mounted)
 
- #>0x40a	beshort			&0x0200		(spared blocks)
 
- #>0x40a	beshort			&0x0800		(unclean)
 
- #>0x47C	beshort			0x482B		(Embedded HFS+ Volume)
 
- #>0x402	beldate-0x7C25B080	x		created: %s,
 
- #>0x406	beldate-0x7C25B080	x		last modified: %s,
 
- #>0x440	beldate-0x7C25B080	>0		last backup: %s,
 
- #>0x414	belong			x		block size: %d,
 
- #>0x412	beshort			x		number of blocks: %d,
 
- #>0x424	pstring			x		volume name: %s
 
- 0x400	beshort			0x482B		Macintosh HFS Extended
 
- >&0	beshort			x		version %d data
 
- >0	beshort			0x4C4B		(bootable)
 
- >0x404	belong			^0x00000100	(mounted)
 
- >&2	belong			&0x00000200	(spared blocks)
 
- >&2	belong			&0x00000800	(unclean)
 
- >&2	belong			&0x00008000	(locked)
 
- >&6	string			x		last mounted by: '%.4s',
 
- # really, that should be treated as a belong and we print a string
 
- # based on the value. TN1150 only mentions '8.10' for "MacOS 8.1"
 
- >&14	beldate-0x7C25B080	x		created: %s,
 
- # only the creation date is local time, all other timestamps in HFS+ are UTC.
 
- >&18	bedate-0x7C25B080	x		last modified: %s,
 
- >&22	bedate-0x7C25B080	>0		last backup: %s,
 
- >&26	bedate-0x7C25B080	>0		last checked: %s,
 
- >&38	belong			x		block size: %d,
 
- >&42	belong			x		number of blocks: %d,
 
- >&46	belong			x		free blocks: %d
 
- # I don't think this is really necessary since it doesn't do much and 
 
- # anything with a valid driver descriptor will also have a valid
 
- # partition map
 
- #0		beshort		0x4552		Apple Device Driver data
 
- #>&24		beshort		=1		\b, MacOS
 
- # Is that the partition type a cstring or a pstring? Well, IM says "strings 
 
- # shorter than 32 bytes must be terminated with NULL" so I'll treat it as a 
 
- # cstring. Of course, partitions can contain more than four entries, but 
 
- # what're you gonna do?
 
- # GRR: This magic is too weak, it is just "PM"
 
- #0x200		beshort		0x504D		Apple Partition data
 
- #>0x2		beshort		x		(block size: %d):
 
- #>0x230		string		x		first type: %s,
 
- #>0x210		string		x		name: %s,
 
- #>0x254		belong		x		number of blocks: %d,
 
- #>0x400		beshort		0x504D		
 
- #>>0x430		string		x		second type: %s,
 
- #>>0x410		string		x		name: %s,
 
- #>>0x454		belong		x		number of blocks: %d,
 
- #>>0x600		beshort		0x504D
 
- #>>>0x630	string		x		third type: %s,
 
- #>>>0x610	string		x		name: %s,
 
- #>>>0x654	belong		x		number of blocks: %d,
 
- #>>0x800		beshort		0x504D		
 
- #>>>0x830	string		x		fourth type: %s,
 
- #>>>0x810	string		x		name: %s,
 
- #>>>0x854	belong		x		number of blocks: %d,
 
- #>>>0xa00	beshort		0x504D		
 
- #>>>>0xa30	string		x		fifth type: %s,
 
- #>>>>0xa10	string		x		name: %s,
 
- #>>>>0xa54	belong		x		number of blocks: %d
 
- #>>>0xc00	beshort		0x504D
 
- #>>>>0xc30	string		x		sixth type: %s,
 
- #>>>>0xc10	string		x		name: %s,
 
- #>>>>0xc54	belong		x		number of blocks: %d
 
- ## AFAIK, only the signature is different
 
- #0x200		beshort		0x5453		Apple Old Partition data
 
- #>0x2		beshort		x		block size: %d,
 
- #>0x230		string		x		first type: %s,
 
- #>0x210		string		x		name: %s,
 
- #>0x254		belong		x		number of blocks: %d,
 
- #>0x400		beshort		0x504D		
 
- #>>0x430		string		x		second type: %s,
 
- #>>0x410		string		x		name: %s,
 
- #>>0x454		belong		x		number of blocks: %d,
 
- #>>0x800		beshort		0x504D		
 
- #>>>0x830	string		x		third type: %s,
 
- #>>>0x810	string		x		name: %s,
 
- #>>>0x854	belong		x		number of blocks: %d,
 
- #>>>0xa00	beshort		0x504D		
 
- #>>>>0xa30	string		x		fourth type: %s,
 
- #>>>>0xa10	string		x		name: %s,
 
- #>>>>0xa54	belong		x		number of blocks: %d
 
- # From: Remi Mommsen <mommsen@slac.stanford.edu>
 
- 0		string		BOMStore	Mac OS X bill of materials (BOM) file
 
- # From: Adam Buchbinder <adam.buchbinder@gmail.com>
 
- # URL: http://en.wikipedia.org/wiki/Datafork_TrueType
 
- # Derived from the 'fondu' and 'ufond' source code (fondu.sf.net). 'sfnt' is
 
- # TrueType; 'POST' is PostScript. 'FONT' and 'NFNT' sometimes appear, but I
 
- # don't know what they mean.
 
- 0	belong	0x100
 
- >(0x4.L+24)	beshort	x
 
- >>&4	belong	0x73666e74	Mac OSX datafork font, TrueType
 
- >>&4	belong	0x464f4e54	Mac OSX datafork font, 'FONT'
 
- >>&4	belong	0x4e464e54	Mac OSX datafork font, 'NFNT'
 
- >>&4	belong	0x504f5354	Mac OSX datafork font, PostScript
 
 
  |