Witam, mam duzy problem z obsluga unixowych katalogow w C. Bede bardzo wdzieczny jesli ktos zechce poswiecic mi pare minut.
Mam funkcje ktora dostaje dwa katalogi jako argumenty: dir1 i dir2. Jezeli dir1 zawiera plik ktorego nie zawiera dir2 to kopiuje plik z dir1 do dir2.
Napisalem funkcje do kopiowania plikow. copy(char *plik1, char *plik2) - kopiuje plik1 do plik2.
Mam funkcje
compare_dirs(char *sciezka_do_dir1, char *sciezka_do_dir2) ktora ma porownywac katalogi ktore dostaje jako argumenty.
Jak na razie, biore d_name z pierwszego katalogu i przelatuje po wszystkich z drugiego. Jezeli nie znajde takiego samego pliku w drugim to wywoluje
copy(plik1_kat1, plik1_kat2) zeby skopiowac plik.
W wersji optymistycznej, bo w praktyce program nie przechodzi po wszystkich plikach tylko staje na pliku "."
Nie wiem tez jak podac funkcji copy() ktora dostaje dwie nazwy plikow jako argumenty sciezke do katalogu ktory otworzylem...
Z plikami "." oraz ".." probowalem sobie poradzic dodajac dodatkowe warunki na taka nazwe pliku i opuszczajac przejscie petli "continue" ale nic to nie dalo.
void compare_dirs(char *path_dir1, char *path_dir2)
{
DIR *pDIR1 ;
DIR *pDIR2 ;
struct dirent *pDirent1 ;
struct dirent *pDirent2 ;
pDIR1 = opendir(path_dir1);
pDIR2 = opendir(path_dir2);
pDirent1 = readdir(pDIR1);
pDirent2 = readdir(pDIR2);
while (pDirent1 != NULL)
{
while (pDirent2 != NULL)
{
if (strcmp(pDirent1->d_name, pDirent2->d_name)!=0)
copy(dir1/plik_w_dir1, dir2/sciezka_plik_w_dir2) ; /// ???
pDirent2=readdir(pDIR2);
}
pDirent1 = readdir(pDIR1);
}
}
Pozdrawiam