Dame el contenido de un archivo tar sin usar comandos tar.
frozzen
-
[Dal] Mensajes publicados 6122 Fecha de registro Estado Colaborador Última intervención -
[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
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
-
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énman tar
Dal