PDB (ОС Palm)
PDB — это формат контейнера для баз данных записей в Palm OS , Garnet OS и платформе Access Linux . Его структура аналогична базам данных ресурсов КНР . [1] PalmDOC Формат электронных книг — это специальная версия формата PDB. [2]
Структура файла PDB
[ редактировать ]Файл PDB содержит заголовок PDB, заголовки записей PDB и записи . [3] [4]
Заголовок PDB |
Заголовок записи PDB |
PDB-записи |
Заголовок PDB
[ редактировать ]Заголовок PDB расположен в начале файла и содержит метаинформацию о файле: [3]
Компенсировать | Имя | Тип | Размер |
---|---|---|---|
0x00 | имя | символ (Модифицированный ISO-8859-1 ) | 32 байта |
0x20 | атрибуты файла | целое число | 2 байта |
0x22 | версия | целое число | 2 байта |
0x24 | время создания | 32-битное целое число — дата-время PDB | 4 байта |
0x28 | время модификации | 32-битное целое число — дата-время PDB | 4 байта |
0x2c | резервное время | 32-битное целое число — дата-время PDB | 4 байта |
0x30 | номер модификации | целое число | 4 байта |
0x34 | app_info | целое число | 4 байта |
0x38 | sort_info | целое число | 4 байта |
0x3c | тип | целое число | 4 байта |
0x40 | создатель | целое число | 4 байта |
0x44 | unique_id_seed | целое число | 4 байта |
0x48 | следующий_список_записей | целое число | 4 байта |
0x4c | количество_записей | целое число | 2 байта |
Заголовок записи PDB
[ редактировать ]Для каждой записи существует восьмибайтовый заголовок записи, содержащий: [3]
имя | тип | размер | примечания |
---|---|---|---|
компенсировать | целое число | 4 байта | Номер байта в файле PDB (считая с нуля), в котором находится запись |
атрибуты | байт | 1 байт | Атрибуты записи (удалить/грязный/занят/секрет/категория) |
УникальныйID | целое число | 3 байта | Всегда 0 |
PDB-записи
[ редактировать ]Теперь следуют сами рекорды. Обычный порядок — AppInfoArea, SortInfoArea и записи последовательно. [4]
PDB
[ редактировать ]Во многих файлах формата 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 году.
Справочник по языку и библиотеке компилятора Palm OS Protein C/C++, Copyright 2004. Palm Source называет даты, рассчитанные с 1904 года, «старой эпохой Palm», а даты, рассчитанные с 1970 года, «эпохой UNIX». Protein C также предоставляет функции (palm_секунды_to_time_t() и time_t_to_palm_секунды()) для преобразования между ними.
Некоторые источники даже предполагают, что в некоторых очень старых файлах время отсчитывается с 1900 года (что соответствует эпохе Excel).
Этот конфликт между старой эпохой Palm (Mac OS 9) и эпохой UNIX вызывает сожаление. Следующая эвристика может быть полезна при проверке файла, скопированного с устройства Palm OS:
- Если у времени установлен верхний бит, это беззнаковое 32-битное число, отсчитываемое с 1 января 1904 года.
- Если у времени нет верхнего бита, это 32-битное число со знаком, отсчитываемое с 1 января 1970 года.
Это основано на идее, что в противном случае время было бы до 1972 или до 1970 года (в зависимости от интерпретации), а формата PDB тогда еще не было.
Утилита Palmdump и другое программное обеспечение используют это практическое правило при чтении файлов.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Н. Роудс, Дж. Маккиэн. Программирование для Palm OS, второе издание, O'Reilly, 2001 г., ISBN 1-56592-856-3
- ^ MobileRead Wiki: Спецификация формата PalmDOC
- ^ Перейти обратно: а б с Пол Дж. Лукас (1998) Формат файла PDB (пилотная база данных). Архивировано 23 февраля 2022 г. на Wayback Machine, доступ осуществлен в 20090308 г.
- ^ Перейти обратно: а б Программное обеспечение Microfirst. Формат базы данных пилотных записей. Архивировано 15 марта 2009 г. на Wayback Machine, доступ осуществлен в 20090308 г.