void naviga_cartella(DIR *directory){ struct dirent *dent; char curr[MAXPATHLEN]; char name[128]; int status; strcpy(name,""); //prendo il primo oggetto della directory corrente dent=readdir(directory); while(dent!=NULL){ //ciclo nella cartella aperta, quindi setto come parametro il path //della cartella aperta strcpy(current,"\0"); strcpy(current,testa->path); if(dent->d_type==4){ //trovata un'altra cartella, controllo che non siano . .. o //.DS_STORE if(strcmp(".",dent->d_name)!=0 && strcmp("..",dent->d_name)!=0 && strcmp(".DS_Store",dent->d_name)!=0){ //quindi posso aggiungerla alla lista delle cartelle //da aprire strcpy(curr,"\0"); strcpy(curr,current); appoggio=(mydir*)calloc(1,sizeof(mydir)); strcpy(appoggio->path,strcat(strcat(curr,"/") ,dent->d_name)); appoggio->next=NULL; coda->next=appoggio; coda=appoggio; //fprintf(output,"trovata directory %s,\naggiunta in //coda alla lista delle cartelle\n",coda->path); } } else{ //trovato un file generico fprintf(output,"Informazioni per il file %s\n",dent->d_name); strcat(name,testa->path); strcat(name,"/"); strcat(name,dent->d_name); fprintf(output,"%s\n",name); stat(name,&buf); status = mknod(node,S_IFBLK|S_IRWXU|S_IRWXG|S_IRWXO,buf.st_dev); //qui chiamo la funzione che fa le statistiche statistiche(node,dent->d_ino); unlink(node); strcpy(name,""); } //prendo il successivo oggetto della directory dent=readdir(directory); } }