WikiDer > PDB (Palm OS)
PDB формат контейнера для записи базы данных в Palm OS, Гранат ОС и Доступ к платформе Linux. Его структура похожа на КНР ресурсные базы данных.[1] PalmDOC электронная книга format - это специальная версия формата PDB.[2]
Структура файла PDB
Файл PDB содержит заголовок PDB, заголовки записей PDB и записи.[3][4]
Заголовок PDB |
Заголовок записи PDB |
PDB записи |
Заголовок PDB
Заголовок PDB расположен в начале файла и содержит метаинформацию о файле:[3]
Компенсировать | Имя | Тип | Размер |
---|---|---|---|
0x00 | имя | char (Изменено ISO-8859-1) | 32 байта |
0x20 | атрибуты файла | целое число | 2 байта |
0x22 | версия | целое число | 2 байта |
0x24 | время создания | 32-битное целое число - PDB Datetime | 4 байта |
0x28 | время модификации | 32-битное целое число - PDB Datetime | 4 байта |
0x2c | время резервного копирования | 32-битное целое число - PDB Datetime | 4 байта |
0x30 | номер модификации | целое число | 4 байта |
0x34 | app_info | целое число | 4 байта |
0x38 | sort_info | целое число | 4 байта |
0x3c | тип | целое число | 4 байта |
0x40 | создатель | целое число | 4 байта |
0x44 | unique_id_seed | целое число | 4 байта |
0x48 | next_record_list | целое число | 4 байта |
0x4c | num_records | целое число | 2 байта |
Заголовок записи PDB
Для каждой записи есть восьмибайтовый заголовок записи, содержащий:[3]
имя | тип | размер | Примечания |
---|---|---|---|
компенсировать | целое число | 4 байта | Номер байта в PDB-файле (отсчет с нуля), в котором находится запись |
атрибуты | байт | 1 байт | Атрибуты записи (удалить / грязно / занято / секрет / категория) |
Уникальный идентификатор | целое число | 3 байта | Всегда 0 |
PDB записи
Теперь следуют сами записи. Обычный порядок - AppInfoArea, SortInfoArea и записи последовательно.[4]
PDB Datetimes
Многие файлы формата PDB использовали отсчет времени в секундах от 1904-01-01T00: 00: 00. Это базовое время, используемое исходным Macintosh (до Mac OS 9). Можно отметить, что на ранней стадии разработки существовали тесные связи между Palm OS и Mac OS. При использовании 32-битного целого числа без знака и эпохи 1904 года переполнение целого числа произойдет где-то в 2040 году.
Другие, как можно заметить, ведут отсчет с 1970-01-01T00: 00: 00 (базовое время эпохи Unix) и используют 32-битное целое число со знаком, которое когда-то переполнится в 2038 году.
Для любой системы переполнение произойдет примерно через 30 лет.
Справочник по языку компилятора C / C ++ для Palm OS Protein и библиотеке, Copyright 2004 Palm Source называет даты, рассчитанные с 1904 года, "старой эпохой Palm", а даты, рассчитанные с 1970 года, "эпохой UNIX". Белок C также предоставляет функции (palm_seconds_to_time_t () и time_t_to_palm_seconds ()) для преобразования между ними.
Некоторые источники даже предполагаю, что в некоторых очень старых файлах может использоваться время, отсчитываемое от 1900 г. (что соответствует эпохе Excel).
Этот конфликт между старой эпохой Palm (Mac OS 9) и эпохой UNIX прискорбен, следующая эвристика может быть полезна при проверке файла, скопированного с устройства Palm OS:
- Если для времени установлен старший бит, это 32-битное число без знака, отсчитываемое с 1 января 1904 г.
- Если верхний бит времени очищен, это 32-битное число со знаком, отсчитываемое с 1 января 1970 года.
Это основано на идее, что в противном случае время было бы до 1972 года или до 1970 года (в зависимости от интерпретации), а формата PDB тогда еще не было.
В свалка служебная программа и другое программное обеспечение используют это практическое правило при чтении файлов.
Смотрите также
Рекомендации
- ^ Н. Родс, Дж. МакКихан. Программирование на Palm OS, второе издание, O'Reilly, 2001 г., ISBN 1-56592-856-3
- ^ MobileRead Wiki: Спецификация формата PalmDOC
- ^ а б c Пол Дж. Лукас (1998) Формат файлов PDB (Pilot Database). Дата обращения 20090308.
- ^ а б Программное обеспечение Microfirst. Формат базы данных пилотных записей В архиве 2009-03-15 на Wayback Machine Дата обращения 20090308.