Dame el contenido de un archivo tar sin usar comandos tar.

frozzen -  
[Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   -
Bonjour,
para un proyecto de C necesito programar un extractor de archivos tar, para empezar solo quiero listar los archivos de mi archivo y hay un fenómeno extraño: si el archivo solo contiene un único directorio en la raíz, mi programa muestra el nombre del directorio, pero si extraigo el archivo y lo recomprimo añadiendo un directorio en la fuente, entonces mi programa muestra el primer directorio de ese archivo y luego el primer subdirectorio de ese directorio, y así sucesivamente.

aquí está mi código:

int main(int argc, char* argv[]) {

/*APERTURA DEL ARCHIVO TAR EN SOLO LECTURA*/
int fd;
fd = open(argv[1],O_RDONLY,0);

if (fd < 3) {
printf("Imposible abrir el archivo\n");
exit(1);
} else {
printf("el archivo %s se ha abierto correctamente\n", argv[1]);
struct header_posix_ustar ma_struct;
int nb_bits_lus=0;

/*LECTURA DE LA CABECERA DEL PRIMER ARCHIVO (bloque de 512 bytes) */
nb_bits_lus=read(fd, &ma_struct, 512);
printf("nombre del primer archivo: %s\n", ma_struct.name);
printf("Número de bits leídos: %d\n", nb_bits_lus);
}

close(fd);
return 0;
}

hay que saber que si trato de volver atrás eliminando el directorio que he añadido y regreso al caso base con un directorio en la raíz, la anomalía persiste.

Atentamente,

Configuración: Linux / Chrome 53.0.2785.143

1 respuesta

  1. [Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   1 108
     
    Hola,

    no proporcionas suficiente información para entender cuál es exactamente tu problema, ni para reproducirlo.

    Dicho esto, si tu código espera un formato ustar y estás en Linux con GNU tar, deberías crear tu archivo tar con la opción
    --format=ustar
    de lo contrario, tu encabezado no estará en el formato GNU tar.

    tar --help
    al final te indica cómo fue compilada la versión de tar que estás utilizando.

    Consulta también
    man tar


    Dal
    0
    1. [Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   1 108
       
      "de lo contrario, tu encabezado estará en formato GNU tar."

      "el formato GNU tar, por ejemplo, permite archivar archivos con un nombre de longitud ilimitada, lo que no es el caso de UStar."
      0