Ok pod
1: unistd.h se nalazi /usr/include ali kako je to default include direktorijum ubacujes ga samo sa #include <unistd.h> a okruzenje je UNIX :o) Ne znam kako radi cygwin gnu C compiler za win
2. Pa prolazi ovo kroz sve direktorijume samo satvi za dir da bude root (/) i on ce sve direktorijume i poddirektorijum da izlista...
A sacu da pojasnim ovaj kod :o) (nadam se da si to trazio):
posto je kod sa chdir("..") i chdir(dir) mnogo lepsi njega cu da objasnim...to je ovaj drugi kod :
int yes_dir(const char *path){ //funny name yes_dir :o))))
Ova funkcija se pozva kad god se naidje na neki dir !!!!
Code:
struct DIR *tmp;
struct dirent *tmp_dir;
/* Opening our dir path */
tmp=(struct DIR *)opendir(path);
if ( tmp==NULL )
return 1;
Ako otvaranje tog direktorijuma ne uspe iz bilo kog razloga izlazi se iz funkcije...Mada ne vidim razlog zasto ne bi uspelo (jedino zbog dozvola)
/* Nwo chdir() to that dir */
chdir(path);
Ovde ulazimo u taj dir i pocinjemo sa njegovim listanjem...za svaki entry proveravamo da li je dir...ako je dir poziva se opet ova funkcija i ulazi se u taj dir to je ovaj sledeci kod
Code:
[b]
/* Show may begin */
while ((tmp_dir=readdir((DIR *)tmp))!=NULL){
/* Now chceck if file is dir */
if (!is_dir(tmp_dir->d_name)){
/* If it isn't call cleanlog() */
cleanlog(tmp_dir->d_name);
}else{
/* if dir is '.' or '..' ignore it *
* I got SIGSEGV with this :o) */
if (strcmp(tmp_dir->d_name,".")!=0 && strcmp(tmp_dir->d_name,"..")!=0){
/* Call again this function */
yes_dir(tmp_dir->d_name);
}
}
}
[/b]
Kada se zavrsi listanje direktorijuma moramo se vratiti tamo odakle smo krenuli...drugim recima kad se izlista ceo dir i nenadje se nista vraca se na dir odakle je sve pocelo
Code:
/* When we clean our subdir we must go one dir up */
closedir((DIR *)tmp);
chdir("..");
return 0;
}
Drugim recima kako to radi recimo imas direktorijum sa 2 dira :
pocinje listanje tog direktorijuma i naidje se na prvi dir ulazi se u njega i on se lista po istom principu...kad se zavrsi svo listanje (kad nema vise nista u prvom diru) vraca se na paren i nastavlja njega da lista dalje dok ne nadije na sledeci dir...2gi dir cita isto tako...
Uopste glavna fora ovde je rekurzija...da nije nje namucio bih se gadno :o)
Oni ostali, ja se raspao...
četničke pesme
get out of ma way you bi***...
Ne čitam pp, ako nekom trebam ima mail : chetnik(na)atlas(tačka)cz