salut!!
je ne comprends pas la fonction ne liste rien du tout.........
al'aide!!!!!!!!!!!!!!!!!
voici ma fonction:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<dirent.h>
#include<sys/stat.h>
#include<sys/types.h>
#define MAXPATHSIZE 255
#define ext_BUFR "*.BUFR"
#define ext_Picsmap "*.PXM"
void Scan_disk(char *CurrentDir,char *Liste,int n){
DIR *dir;
FILE *fichier_liste;
struct dirent *file;
struct stat state;
int temp_taille_chemin,taille_nom,taille_chemin;
char Chemin[MAXPATHSIZE];
strcpy(Chemin,CurrentDir);
if(n==0){ // à cause de la recurence
if((fichier_liste=fopen(Liste,"w+"))==NULL)
printf("Le fichier de listage n%cexiste pas\nFichier de listage cr%c%c....\n",'\'',232,232);
n=1;
}
/* 1 : ouvrir le répertoire */
if((dir=opendir(Chemin))==NULL){
fprintf(stderr,"impossible d%couvrir %s\n",'\'',Chemin);
}
else{
taille_chemin=strlen(Chemin);
temp_taille_chemin=taille_chemin; /* sauvegarde */
Chemin[taille_chemin++]='\\';
Chemin[taille_chemin]=0;
printf("ouverture de %s\n",CurrentDir);
/* 2 : y lire les entrées */
while((file=readdir(dir))!=NULL){ /* tant qu il y a des entrées */
/* filtrer "." et ".." */
if((strcmp(file->d_name,".")==0)&&(strcmp(file->d_name,"..")==0)){
/* ne rien faire */
puts("..................");
}
else{
/*concaténation*/
//déplacé avant le stat() pour pouvoir interroger n'importe quel fichier hors du répertoire courant
taille_nom=strlen(file->d_name);
taille_chemin=temp_taille_chemin+taille_nom+1;
if(taille_chemin>MAXPATHSIZE){
fprintf(stderr,"\n erreur : chemin trop long\n");
}
else{
memcpy(&Chemin[temp_taille_chemin+1],file->d_name,taille_nom+1);
if(lstat(Chemin,&state)==0){ /* déterminer le type de fichier */
if(S_ISREG(state.st_mode)){ /* fichier normal */
printf("%s (%ld)\n",Chemin,state.st_size);
fprintf(fichier_liste,"%s\n",Chemin);
}
else{
if(S_ISDIR(state.st_mode)){ /* répertoire */
Scan_disk(Chemin,Liste,n);
}
}
}
}
}
}
closedir(dir);
fclose(fichier_liste);
taille_chemin=temp_taille_chemin; // restaure
Chemin[taille_chemin]=0; // nettoie
printf("fermeture de %s\n",Chemin);
}
}
lors de la compile sa ouvre et ferme le repertoire mais de ne liste pas!!!!!!!!