DarkBears j'aime le miel put1 d'abeilles | Bonjour tous le monde,
Voilà je suis en train de faire un projet avec un pote : réalisation d'un moteur 2d en opengl (projet de fin d'étude).
J'ai bientôt fini le moteur opengl en C et mon pote lui a réalisé en Java un programme pour la création de cartes avec différent niveau (1 : sol, 2 : obstable, 3 : arbres, 4 : explosion et autre). A la fin, son programmme construit une archive simple (tar) avec le fichier de niveau et les textures à faire afficher par le moteur.
Nous avons donc voulu utiliser la libtar. Pour le moment j'extrait les fichiers sur le disque dur mais ce que nous voudrions faire c'est l'ouvrir en mémoire, savoir le nombre de fichiers qu'il y a dedans, leur nom et récupérer le contenu puis refermer l'archive sans avoir besoin de le extraire.
Je n'ai trouvé aucun tuto, ni code source et pourtant que recherché longtemps avec mon ami google , j'ai même ouvert le libtar.h de /usr/include mais rien. Alors si quelqu'un a déjà utilisé la lib ou a un code source je preneur.
D'avance merci.
Voici mon code source qui permet d'extraire les fichiers on sait jamais ça pourrai servir à quelqu'un :
Code :
- /* Compilation : gcc test_libtar.c -o test_libtar -ltar */
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <malloc.h>
- #include <string.h>
- #include <libtar.h>
- #include <libtar_listhash.h>
- #include <string.h>
- #include <fcntl.h>
- #include <unistd.h>
- #include <errno.h>
- int main (int argc, char * argv[])
- {
- TAR * arch = NULL; /* Structure qui va recevoir l'archive */
- int erreur = 1;
- char * nom = (char *) malloc (sizeof(char)); /* Nom fichier */
- /* char * buffer = (char *) malloc (sizeof(char)); */
- char * pArchive = NULL;
- char * rep = "test"; /* Nom repertoire */
- int len1;
- printf("Nom fichier : " );
- scanf("%s", nom);
- len1 = strlen (nom);
- pArchive = (char *) malloc ((len1 + 1) * sizeof(char));
- strcpy (pArchive, nom);
- pArchive[len1] = '\0';
- erreur = tar_open (&arch, pArchive, NULL, 0, 0, 0); /* Ouverture de l'archives */
- /* l'archive n'existe pas */
- if (erreur == -1)
- {
- printf("L'archive n'existe pas\n" );
- }
- /* si l'archive existe */
- if (erreur == 0)
- {
- printf("Ouverture de l'archive\n" );
- tar_extract_all(arch, rep); /* Extraction de l'archive */
- printf("Extraction dans une repertoire\n" );
- /* Avec cette fonction j'affiche le nom du premier fichier de mon archive mais aprés j'ai un magnifique segmentation fault */
- /*tar_block_read(arch, buffer);
- printf("%s\n", buffer);*/
- tar_close (arch); /* Fermeture de l'archive */
- printf("Fermeture de l'archive\n" );
- }
- return 0;
- }
|
Message édité par DarkBears le 18-03-2007 à 18:26:47 ---------------
Vive le FLSBB
|