Documentos de Académico
Documentos de Profesional
Documentos de Cultura
93 -Información Técnica
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EL FORMATO DE ARCHIVO DESCRITO A CONTINUACION ES VÁLIDO SOLO PARA VERSIONES
POSTERIORES A LA 1.50
==========================================================================
Formato de los ficheros RAR
==========================================================================
Los ficheros están constituidos por bloques de longitud variable. El
orden de estos bloques puede variar, pero el primer bloque debe ser
siempre un bloque de identificación seguido de un bloque de cabecera de
archivo.
Cada bloque empieza con los siguientes campos:
HEAD_CRC 2 bytes CRC total o parcial del bloque
HEAD_TYPE 1 byte Tipo de bloque
HEAD_FLAGS 2 bytes Indicaciones del bloque
HEAD_SIZE 2 bytes Tamaño del bloque
ADD_SIZE 4 bytes Tamaño del campo adicional - tamaño añadido del bloque
El campo ADD_SIZE sólo está presente si (HEAD_FLAGS & 0x8000) != 0
El tamaño total del bloque es HEAD_SIZE si (HEAD_FLAGS & 0x8000) == 0
y HEAD_SIZE+ADD_SIZE si el campo ADD_SIZE está presente - cuando
(HEAD_FLAGS & 0x8000) != 0.
En cada bloque los siguientes bits en HEAD_FLAGS tienen el mismo
significado:
0x4000 - Si está activado, antiguas versiones de RAR ignorarán el
bloque y lo borrarán cuando el archivo sea actualizado.
Si está a cero, el bloque es copiado al nuevo archivo
cuando el archivo es actualizado.
0x8000 - Si estáactivado, el campo ADD_SIZE estápresente y el
tamaño total del bloque es HEAD_SIZE+ADD_SIZE.
Tipos válidos de bloques:
HEAD_TYPE=0x72 bloque de identificación
HEAD_TYPE=0x73 cabecera de archivo
HEAD_TYPE=0x74 cabecera de fichero
HEAD_TYPE=0x75 estilo antiguo cabecera de comentario
HEAD_TYPE=0x76 estilo antiguo información de autenticidad
HEAD_TYPE=0x77 estilo antiguo sub-bloque
HEAD_TYPE=0x78 estilo antiguo recuperación de registro
HEAD_TYPE=0x79 estilo antiguo información de autenticidad
HEAD_TYPE=0x7a sub-bloque
El bloque de comentario es usado actualmente sólo dentro de otros
bloques y no existe por separado.
El proceso del fichero se realiza de la siguiente forma:
1. Leer y comprobar bloque de identificación
2. Leer cabecera de archivo
3. Leer u omitir HEAD_SIZE- tamaño de(MAIN_HEAD) bytes
4. Si se llegó al final del archivo entonces acabar el proceso
del archivo, sino, leer 7 bytes en los campos HEAD_CRC,
HEAD_TYPE, HEAD_FLAGS, HEAD_SIZE.
5. Comprobar HEAD_TYPE.
si HEAD_TYPE==0x74
leer cabecera de fichero (los primeros 7 bytes ya han sido leídos)
leer u omitir HEAD_SIZE- tamaño de(FILE_HEAD) bytes
si (HEAD_FLAGS & 0x100)
leer u omitir HIGH_PACK_SIZE*0x100000000+PACK_SIZE bytes
sino
leer u omitir PACK_SIZE bytes
sino
leer el correspondiente bloque HEAD_TYPE:
leer HEAD_SIZE-7 bytes
si (HEAD_FLAGS & 0x8000)
leer ADD_SIZE bytes
6. ir al punto 4.
==========================================================================
Formato de los bloques
==========================================================================
Bloque de identificación ( MARK_HEAD )
RESERVED1 Reservado
2 bytes
RESERVED2 Reservado
4 bytes
==========================================================================
Notas para aplicaciones
==========================================================================