Next: Uzupełnienia, uwagi, wnioski
Up: fs/namei.c
Previous: fs/namei.c
  Spis rzeczy
Nagłówek: int path_walk(const char * name, struct nameidata *nd)
Funkcja jest wywoływana przez lookup_dentry()
, jest główną
funkcją szukającą numeru i-węzła, która idąc po kolejnych i-węzłach znajduje
ten odpowiadający szukanemu plikowi, wynik zapisując w obiekcie struktury
nameidata
. Dzieje się to w sposób następujący:
- jeśli nazwa zaczyna się od / to ustawia bieżący i-węzeł na
korzeń systemu plików, wpp na i-węzeł bieżącego katalogu
- dopóki nie został odcięty ostatni kawałek ścieżki powtarzaj:
- jeśli bieżący i-węzeł nie jest katalogiem lub nie mamy do niego
odpowiednich praw to błąd
- odcinamy kolejny człon ścieżki (do znaku /) i szukamy
odpowiedniego i-węzła w bieżącym katalogu, jeśli takowy nie istnieje to
błąd; jeśli istnieje to zmieniamy bieżący i-węzeł na ten znaleziony
- jeśli bieżący i-węzeł jest punktem w którym został zamontowany jakiś
sytem plików to zmieniamy bieżący i-węzeł na i-węzeł korzenia zamontowanego
systemu plików
- jeśli bieżący i-węzeł jest dowiązaniem symbolicznym to decyzja o
przejściu przez ten link jest podejmowana przez poniższy algorytm:
- jeśli jest on w środku ścieżki to zawsze przechodzimy
- jeśli jest ostatnim komponentem przy usuwaniu, zmienianiu nazwy itp.
to nigdy nie przechodzimy
- jeśli flaga LOOKUP_FOLLOW przekazywana do funkcji w strukturze
nameidata
jest ustawiona to przechodzimy
- jeśli na końcu ścieżki są ukośniki to przechodzimy
- wpp nie przechodzimy
Next: Uzupełnienia, uwagi, wnioski
Up: fs/namei.c
Previous: fs/namei.c
  Spis rzeczy
2001-12-19