PRC (Palm OS)


PRC is a container format for code databases in Palm OS, Garnet OS and Access Linux Platform. Its structure is similar to PDB databases. Usually, a PRC file is a flat representation of a Palm OS application that is stored as forked database on the PDA.
PRC files are also used by the Mobipocket e-book-reader. The AZW format of Amazon's Kindle reading device is in turn a DRM-restricted form of the Mobipocket format.
On Palm OS, PRC files are used for applications, localized resources and shared libraries.

Structure of PRC file

In its essence, a PRC file is similar to a classic Mac OS application. It contains a PRC header, PRC resource headers and PRC resources.

PRC Header

The PRC header is located at the beginning of the file and contains meta-information on the file:
OffsetNameTypeSize
0x00namechar32 Bytes
0x20flagsinteger2 Bytes
0x22versioninteger2 Bytes
0x24creation time32bit integer - PDB Datetime4 Bytes
0x28modification time32bit integer - PDB Datetime4 Bytes
0x2cbackup time32bit integer - PDB Datetime4 Bytes
0x30mod_numinteger4 Bytes
0x34app_infointeger4 Bytes
0x38sort_infointeger4 Bytes
0x3ctypeinteger4 Bytes
0x40creatorinteger4 Bytes
0x44unique_id_seedinteger4 Bytes
0x48next_record_listinteger4 Bytes
0x4cnum_recordsinteger2 Bytes

PRC Resource Header

For every resource, there is a resource header containing:
nametypenotessize
namecharName of the resource4 bytes
IDintegerID number of the resource2 bytes
offsetintegerPointer to resource data4 bytes

PRC Resources

Every application contains al least a Code #0 resource with size information and jump tables, a Code #1 resource with executable code and data resources containing pre-initialized values of global variables in compressed form. Other resources that may be contained are forms, form objects, alerts and multimedia data, e. g. images and sounds.