Do spisu tresci tematu 6
6.9.1 Funkcja chdir()
Spis tresci
Wprowadzenie
Z powodu nieskomplikowania funkcji oraz ogolej znajomosci jej dzialania
wprowadzenie nie wydaje sie konieczne.
Opis dzialania
Funkcja chdir() sluzy do zmiany aktualnego katalogu na inny.
Jako parametr otrzymuje ona wskazniznik na lancuch, ktory ma byc nowa
sciezka biezaca. Jej dzialanie jest bardzo proste:
- Najpierw odszukiwany jest za pomoca funkcji namei() i-wezel
odpowiadajacy danej sciezce. Jezeli taki nie istnieje zwracany jest blad
otrzymany z funkcji namei().
- Jezeli dany i-wezel istnieje, sprawdzane jest za pomoca makra S_ISDIR()
czy odpowiada on katalogowi. Jesli nie (np. mamy plik albo dowiazanie),
zwalniany jest ten i-wezel oraz zwracany jest blad.
- Nastepnie za pomoca funkcji permission() sprawdzane jest,
czy dany uzytkownik ma prawo dostepu do danego katalogu. Jesli nie, zwalniany
jest i-wezel oraz zwracany jest blad.
- Jezeli wszystkie powyzsze testy zakoncza sie powodzeniem, zwalniany
jest i-wezel odpowiadajacy aktualnemu katalogowi, a na jego miejsce wpisywany
jest i-wezel sciezki, ktora byla parametrem (zmienna current->fs->pwd)
oraz funkcja konczy dzialanie z kodem odpowiadajacym sukcesowi (patrz dalej).
Deklaracja, argumenty oraz wartosci zwracane przez funkcje
Deklaracja funkcji:
int sys_chdir(const char* filename);
Argumenty:
filename jest wskaznikiem na lancuch zawierajacy nowa sciezke.
Wyniki:
W przypadku powodzenia funkcja zwraca 0, w przeciwnym wypadku wartosc
rozna od zera:
- Jezeli podany plik nie istnieje, jest to blad otrzymany od funkci namei().
- Jezeli podany plik nie jest katalogiem, zwracana jest wartosc -ENOTDIR.
- Jezeli uzytkownik nie ma praw dostepu do danego katalogu - blad otrzymany
od funkcji permission().
Zrodla informacji
- Zrodla jadra:
Pytania i odpowiedzi
Na razie brak jednych i drugich..
Autor: Lukasz
Masko