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 las bases de datos de recursos PRC . [1] El formato de libro electrónico PalmDOC es una versión especial del formato PDB. [2]
Un archivo PDB contiene un encabezado PDB, encabezados de registro PDB y registros . [3] [4]
Encabezado PDB |
Encabezado de registro PDB |
Registros PDB |
El encabezado 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 | hora 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 | información de la aplicación | entero | 4 bytes |
0x38 | información de clasificación | entero | 4 bytes |
0x3c | tipo | entero | 4 bytes |
0x40 | creador | entero | 4 bytes |
0x44 | semilla de identificación única | entero | 4 bytes |
0x48 | siguiente lista de registros | entero | 4 bytes |
0x4c | num_registros | entero | 2 bytes |
Para cada registro, hay un encabezado de registro de ocho bytes, que contiene: [3]
nombre | tipo | tamaño | notas |
---|---|---|---|
compensar | entero | 4 bytes | Número de byte en el archivo PDB (contando desde cero), donde se encuentra el registro |
atributos | byte | 1 byte | Atributos del registro (eliminar/sucio/ocupado/secreto/categoría) |
Identificación única | entero | 3 bytes | Siempre 0 |
Ahora siguen los registros en sí. El orden habitual es AppInfoArea, SortInfoArea y registros, secuencialmente. [4]
Muchos archivos de formato PDB usaban tiempos contados en segundos desde 1904-01-01T00:00:00. Este es el tiempo base usado 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. Si se usa un entero sin signo de 32 bits y la época de 1904, se producirá un desbordamiento de entero en algún momento de 2040.
Se puede observar que otros cuentan desde 1970-01-01T00:00:00 (la base de tiempo de la época de Unix) y utilizan un entero con signo de 32 bits que se desbordará en algún momento de 2038.
Referencia de biblioteca y lenguaje de compilación de Protein C/C++ para Palm OS, Copyright 2004 Palm Source denomina "época antigua de Palm" a las fechas calculadas a partir de 1904 y "época UNIX" a las calculadas a partir de 1970. Protein C también proporciona funciones (palm_seconds_to_time_t() y time_t_to_palm_seconds() ) para realizar conversiones entre ambas.
Algunas fuentes incluso sugieren que algunos archivos muy antiguos pueden utilizar tiempos que cuentan desde 1900 (lo que sería consistente con la época de Excel).
Este conflicto entre la antigua época Palm (Mac OS 9) y la época UNIX es desafortunado, la siguiente heurística puede ser útil al examinar un archivo copiado desde un dispositivo Palm OS:
Esto se basa en la idea de que, de lo contrario, el tiempo sería anterior a 1972 o anterior a 1970 (dependiendo de la interpretación) y el formato PDB no existía en ese entonces.
La utilidad palmdump y otro software utilizan esta regla general al leer archivos.