PDB es un formato contenedor para bases de datos de registros en Palm OS , Garnet OS y Access Linux Platform . Su estructura es similar a la de las bases de datos de recursos de la República Popular China . [1] El formato de libro electrónico PalmDOC es una versión especial del formato PDB. [2]
Estructura del archivo PDB
Un archivo PDB contiene un encabezado PDB, encabezados de registro PDB y registros . [3] [4]
Encabezado PDB |
Encabezado de registro PDB |
Registros PDB |
Encabezado PDB
El encabezado de la PDB se encuentra al principio del archivo y contiene metainformación sobre el archivo: [3]
Compensar | Nombre | Tipo | Tamaño |
---|---|---|---|
0x00 | nombre | char ( ISO-8859-1 modificado ) | 32 bytes |
0x20 | atributos de archivo | entero | 2 bytes |
0x22 | versión | entero | 2 bytes |
0x24 | tiempo de creación | Entero de 32 bits - PDB Datetime | 4 bytes |
0x28 | tiempo de modificación | Entero de 32 bits - PDB Datetime | 4 bytes |
0x2c | tiempo de respaldo | Entero de 32 bits - PDB Datetime | 4 bytes |
0x30 | número de modificación | entero | 4 bytes |
0x34 | informacion de la applicacion | entero | 4 bytes |
0x38 | sort_info | entero | 4 bytes |
0x3c | tipo | entero | 4 bytes |
0x40 | creador | entero | 4 bytes |
0x44 | unique_id_seed | entero | 4 bytes |
0x48 | next_record_list | entero | 4 bytes |
0x4c | num_records | entero | 2 bytes |
Encabezado de registro PDB
Para cada registro, hay un encabezado de registro de ocho bytes, que contiene: [3]
nombre | tipo | Talla | notas |
---|---|---|---|
compensar | entero | 4 bytes | Número de bytes en el archivo PDB (contando desde cero), donde se encuentra el registro |
atributos | byte | 1 byte | Atributos del registro (borrar / sucio / ocupado / secreto / categoría) |
Identificación única | entero | 3 bytes | Siempre 0 |
Registros PDB
Ahora siguen los propios registros. El orden habitual es AppInfoArea, SortInfoArea y registros, secuencialmente. [4]
PDB Fecha y hora
Muchos archivos de formato PDB utilizan tiempos contando en segundos desde 1904-01-01T00: 00: 00. Este es el tiempo base utilizado por el Macintosh original (hasta Mac OS 9). Cabe señalar que hubo vínculos estrechos entre Palm OS y Mac OS durante el desarrollo inicial. Usando un entero de 32 bits sin signo y la época de 1904, el desbordamiento de enteros se producirá en algún momento de 2040.
Se puede observar que otros cuentan desde 1970-01-01T00: 00: 00 (el tiempo base de la época de Unix) y usan un entero de 32 bits con signo que se desbordará en algún momento de 2038.
Para cualquiera de los sistemas, el desbordamiento se producirá en unos 30 años.
Referencia de biblioteca y lenguaje del compilador Palm OS Protein C / C ++, Copyright 2004 Palm Source llama a las fechas calculadas a partir de 1904 "época antigua de Palm" ya las fechas calculadas a partir de 1970 "época UNIX". La proteína C también proporciona funciones (palm_seconds_to_time_t () y time_t_to_palm_seconds ()) para convertir entre los dos.
Algunas fuentes incluso sugieren que algunos archivos muy antiguos pueden usar tiempos contados desde 1900 (lo que sería consistente con la época de Excel).
Este conflicto entre la época antigua de Palm (Mac OS 9) y la época de UNIX es lamentable, la siguiente heurística puede ser útil al examinar un archivo copiado de un dispositivo Palm OS:
- Si la hora tiene el bit superior establecido, es un número de 32 bits sin firmar contando desde el 1 de enero de 1904
- Si el tiempo tiene el bit superior despejado, es un número de 32 bits firmado que cuenta desde el 1 de enero de 1970.
Esto se basa en la idea de que, de lo contrario, el tiempo sería antes de 1972 o antes de 1970 (según la interpretación) y el formato PDB no existía entonces.
La utilidad palmdump y otro software utilizan esta regla general al leer archivos.
Ver también
Referencias
- ^ N. Rhodes, J. McKeehan. Programación de Palm OS, segunda edición, O'Reilly, 2001, ISBN 1-56592-856-3
- ^ Wiki de MobileRead: especificación del formato PalmDOC
- ^ a b c Formato de archivo de Paul J. Lucas (1998) PDB (Base de datos piloto). Consultado el 20090308
- ^ a b Software de Microfirst. La base de datos Formato de grabación Piloto Archivado 2009-03-15 en la Wayback Machine Consultado el 20090308