PDB adalah format wadah untuk database rekaman di Palm OS, Garnet OS, dan Access Linux Platform. Strukturnya mirip dengan basis data sumber daya RRT. Format eBook PalmDOC adalah versi khusus dari format PDB.
Struktur file PDB
File PDB berisi header PDB, header catatan PDB, dan catatan.
PDB Header |
PDB Record Header |
PDB Records |
Judul PDB
Header PDB terletak di awal file dan berisi informasi meta pada file
Offset | Name | Type | Size |
---|---|---|---|
0x00 | name | char (Modified ISO-8859-1) | 32 Bytes |
0x20 | file attributes | integer | 2 Bytes |
0x22 | version | integer | 2 Bytes |
0x24 | creation time | 32bit integer – PDB Datetime | 4 Bytes |
0x28 | modification time | 32bit integer – PDB Datetime | 4 Bytes |
0x2c | backup time | 32bit integer – PDB Datetime | 4 Bytes |
0x30 | modification number | integer | 4 Bytes |
0x34 | app_info | integer | 4 Bytes |
0x38 | sort_info | integer | 4 Bytes |
0x3c | type | integer | 4 Bytes |
0x40 | creator | integer | 4 Bytes |
0x44 | unique_id_seed | integer | 4 Bytes |
0x48 | next_record_list | integer | 4 Bytes |
0x4c | num_records | integer | 2 Bytes |
Tajuk Rekam PDB
Untuk setiap catatan, ada header catatan delapan byte, yang berisi:
name | type | size | notes |
---|---|---|---|
offset | integer | 4 bytes | Byte number in the PDB file (counting from zero), where the record is located |
attributes | byte | 1 byte | Attributes of the record (delete/dirty/busy/secret/category) |
UniqueID | integer | 3 bytes | Always 0 |
Catatan PDB
Sekarang catatan itu sendiri mengikuti. Urutan yang biasa adalah AppInfoArea, SortInfoArea dan record, secara berurutan.
Waktu Tanggal PDB
Banyak file format PDB menggunakan penghitungan waktu dalam hitungan detik dari 1904-01-01T00:00:00. Ini adalah waktu dasar yang digunakan oleh Macintosh asli (hingga Mac OS 9). Dapat dicatat bahwa ada hubungan erat antara Palm OS dan Mac OS selama pengembangan awal. Menggunakan integer 32-bit yang tidak ditandatangani dan zaman 1904, integer overflow akan terjadi sekitar tahun 2040.
Orang lain dapat diamati menghitung dari 1970-01-01T00:00:00 (waktu dasar zaman Unix), dan menggunakan bilangan bulat 32-bit bertanda tangan yang akan meluap sekitar tahun 2038.
Palm OS Protein C/C++ Compiler Language & Library Reference, Hak Cipta 2004 Palm Source menyebut tanggal yang dihitung dari tahun 1904 sebagai “zaman Palm lama”, dan tanggal yang dihitung dari tahun 1970 “zaman UNIX”. Protein C juga menyediakan fungsi (palm_seconds_to_time_t(), dan time_t_to_palm_seconds() ) untuk mengonversi keduanya.
Beberapa sumber bahkan menyarankan beberapa file yang sangat lama mungkin menggunakan penghitungan waktu dari tahun 1900 (yang akan konsisten dengan zaman Excel).
Sayangnya, konflik antara era Palm (Mac OS 9) lama dan era UNIX ini, heuristik berikut mungkin berguna saat memeriksa file yang disalin dari perangkat Palm OS:
- Jika waktu telah menetapkan bit atas, itu adalah nomor 32-bit yang tidak ditandatangani yang dihitung dari 1 Januari 1904
- Jika waktunya jelas, itu adalah angka 32-bit bertanda yang dihitung dari 1 Januari 1970.
Ini didasarkan pada gagasan bahwa, jika tidak, waktunya akan sebelum tahun 1972 atau sebelum tahun 1970 (tergantung pada interpretasi) dan format PDB belum ada.
Utilitas palmdump dan perangkat lunak lain menggunakan aturan praktis ini saat membaca file.