xref: /freebsd/contrib/file/magic/Magdir/palm (revision f7c32ed617858bcd22f8d1b03199099d50125721)
1
2#------------------------------------------------------------------------------
3# $File: palm,v 1.14 2019/04/19 00:42:27 christos Exp $
4# palm:	 file(1) magic for PalmOS {.prc,.pdb}: applications, docfiles, and hacks
5#
6# Brian Lalor <blalor@hcirisc.cs.binghamton.edu>
7
8# These are weak, byte 59 is not guaranteed to be 0 and there are
9# 8 character identifiers at byte 60, one I found for appl is BIGb.
10# What are the possibilities and where is this documented?
11
12# The common header format for PalmOS .pdb/.prc files is
13# {
14#         char            name[ 32 ];
15#         Word            attributes;
16#         Word            version;
17#         DWord           creationDate;
18#         DWord           modificationDate;
19#         DWord           lastBackupDate;
20#         DWord           modificationNumber;
21#         DWord           appInfoID;
22#         DWord           sortInfoID;
23#         char            type[4];
24#         char            creator[4];
25#         DWord           uniqueIDSeed;
26#         RecordListType  recordList;
27# };
28#
29# Datestamps are unsigned seconds since the MacOS epoch (Jan 1, 1904),
30# or Unix/POSIX time + 2082844800.
31
320		name		aportisdoc
33# date is supposed to be big-endian seconds since 1 Jan 1904, but many
34# files contain the timestamp in little-endian or a completely
35# nonsensical value...
36#>36		bedate-2082844800	>0	\b, created %s
37# compression: 1=uncomp, 2=orig, 0x4448=HuffDic
38>(78.L)		beshort		=1		\b, uncompressed
39# compressed
40>(78.L)		beshort		>1
41>>(78.L+4)	belong		x		\b, %d bytes uncompressed
42
43# appl
44#60		string		appl		PalmOS application
45#>0		string		>\0		"%s"
46
47# HACK
48#60		string		HACK		HackMaster hack
49#>0		string		>\0		"%s"
50
51# iSiloX e-book
5260		string		SDocSilX	iSiloX E-book
53>0		string		>\0		"%s"
54
55# Mobipocket (www.mobipocket.com), donated by Carl Witty
56# expanded by Ralf Brown
5760		string	 	BOOKMOBI	Mobipocket E-book
58# MobiPocket stores a full title, pointed at by the belong at offset
59# 0x54 in its header at (78.L), with length given by the belong at
60# offset 0x58.
61# there's no guarantee that the title string is null-terminated, but
62# we currently can't specify a variable-length string where the length
63# field is not at the start of the string; in practice, the data
64# following the string always seems to start with a zero byte
65>(78.L)		belong		x
66>>&(&0x50.L-4)	string		>\0		"%s"
67>0		use		aportisdoc
68>>(78.L+0x68)	belong		>0		\b, version %d
69>>(78.L+0x1C)	belong		!0		\b, codepage %d
70>>(78.L+0x0C)	beshort	 	>0		\b, encrypted (type %d)
71
72# AportisDoc/PalmDOC
7360		string		TEXtREAd	AportisDoc/PalmDOC E-book
74>0		string		>\0		"%s"
75>0		use		aportisdoc
76
77# Variety of PalmOS document types
78# Michael-John Turner <mj@debian.org>
79# Thanks to Hasan Umit Ezerce <humit@tr-net.net.tr> for his DocType
8060	string			BVokBDIC	BDicty PalmOS document
81>0	string			>\0		"%s"
8260	string			DB99DBOS	DB PalmOS document
83>0	string			>\0		"%s"
8460	string			vIMGView	FireViewer/ImageViewer PalmOS document
85>0	string			>\0		"%s"
8660	string			PmDBPmDB	HanDBase PalmOS document
87>0	string			>\0		"%s"
8860	string			InfoINDB	InfoView PalmOS document
89>0	string			>\0		"%s"
9060	string			ToGoToGo	iSilo PalmOS document
91>0	string			>\0		"%s"
9260	string			JfDbJBas	JFile PalmOS document
93>0	string			>\0		"%s"
9460	string			JfDbJFil	JFile Pro PalmOS document
95>0	string			>\0		"%s"
9660	string			DATALSdb	List PalmOS document
97>0	string			>\0		"%s"
9860	string			Mdb1Mdb1	MobileDB PalmOS document
99>0	string			>\0		"%s"
10060	string			PNRdPPrs	PeanutPress PalmOS document
101>0	string			>\0		"%s"
10260	string			DataPlkr	Plucker PalmOS document
103>0	string			>\0		"%s"
10460	string			DataSprd	QuickSheet PalmOS document
105>0	string			>\0		"%s"
10660	string			SM01SMem	SuperMemo PalmOS document
107>0	string			>\0		"%s"
10860	string			TEXtTlDc	TealDoc PalmOS document
109>0	string			>\0		"%s"
11060	string			InfoTlIf	TealInfo PalmOS document
111>0	string			>\0		"%s"
11260	string			DataTlMl	TealMeal PalmOS document
113>0	string			>\0		"%s"
11460	string			DataTlPt	TealPaint PalmOS document
115>0	string			>\0		"%s"
11660	string			dataTDBP	ThinkDB PalmOS document
117>0	string			>\0		"%s"
11860	string			TdatTide	Tides PalmOS document
119>0	string			>\0		"%s"
12060	string			ToRaTRPW	TomeRaider PalmOS document
121>0	string			>\0		"%s"
122
123# A GutenPalm zTXT etext for use on Palm Pilots (http://gutenpalm.sf.net)
124# For version 1.xx zTXTs, outputs version and numbers of bookmarks and
125#   annotations.
126# For other versions, just outputs version.
127#
12860		string		zTXT		A GutenPalm zTXT e-book
129>0		string		>\0		"%s"
130>(0x4E.L)	byte		0
131>>(0x4E.L+1)	byte		x		(v0.%02d)
132>(0x4E.L)	byte		1
133>>(0x4E.L+1)	byte		x		(v1.%02d)
134>>>(0x4E.L+10)	beshort		>0
135>>>>(0x4E.L+10) beshort		<2		- 1 bookmark
136>>>>(0x4E.L+10) beshort		>1		- %d bookmarks
137>>>(0x4E.L+14)	beshort		>0
138>>>>(0x4E.L+14) beshort		<2		- 1 annotation
139>>>>(0x4E.L+14) beshort		>1		- %d annotations
140>(0x4E.L)	byte		>1		(v%d.
141>>(0x4E.L+1)	byte		x		%02d)
142
143# Palm OS .prc file types
14460		string		libr
145# flags, only bit 0 or bit 6
146# https://en.wikipedia.org/wiki/PRC_%28Palm_OS%29
147# https://web.mit.edu/tytso/www/pilot/prc-format.html
148>0x20		beshort&0xffbe	0
149>>0		string		>\0		Palm OS dynamic library data "%s"
15060		string		ptch		Palm OS operating system patch data
151>0		string		>\0		"%s"
152
153# Mobipocket (www.mobipocket.com), donated by Carl Witty
15460	string			BOOKMOBI	Mobipocket E-book
155>0	string			>\0		"%s"
156