Zadanie 14
Zadanie 14, alg. namei()
6.6.3.5. Zadanie
Zadanie polega na dorobieniu nowych możliwości przy podawaniu nazwy ścieżkowej.
Szczególne znaczenie mają "..." i "....". Pierwszy z nich daje
możliwość odwołania się do katalogu o dwa wyżej, drugi o trzy poziomy wyżej. W celu
zaimplementowania tej zmiany należy zmodyfikować funkcję lookup() zwracającą i-węzeł
rozpatrywanej pozycji w konkretnym katalogu (opis powyżej) - tu: "..." i
"....". Dla tych pozycji należy uważać na punkt zamontowania systemu plików i
kilkakrotnie (dwa lub trzy razy) wołać funkcję lookup() dla konkretnego systemu plików
(z parametrem name="..").
Innym pomysłem na zmianę w jądrze jest wstępne rozpatrywanie nazwy ścieżkowej przez
funkcję dir_namei(). Można by zoptymalizować ją ponieważ pozycje ".." (oraz
dodatkowe "..." i "....") mają sens jedynie na początku nazwy ścieżkowej.
W związku z tym proponuję najpierw przeanalizować nazwę ścieżkową i wyodrębnić w niej początkowe
pozycje z kropkami, pozycje z kropkami umieszczone wewnątrz nazwy ścieżkowej (tzn. po innych
pozycjach) powinny się znosić z tymi pozycjami.
Przykład: "../../../ala/kot/../pies/xxx" odnosi się do tego samego pliku co wpis
"../../../ala/pies/xxx" - wewnętrzne dwie kropki zniosły się z "kot". Dopiero
tak zmodyfikowana nazwa ścieżkowa powinna być poddawana działaniu algorytmu dir_namei(), albo w
wypadku występowania wewnętrznych wpisów ".." można zwracać błąd.
Dodatkowo można przenieść sprawdzanie przekraczania punktu zamontowania z lookup() do dir_namei()
i dokonywać tego tylko dla początkowych wpisów równych "..". Gdy skończą się pozycje tej
postaci, można już nie sprawdzać punktu zamontowania, bo nie poruszamy się w górę drzewa.
Autor: Paweł Mielańczuk
Wyszukiwarka
Podobne podstrony:
ZADANIE (13)ZADANIE (13)ZADANIE (13)ZADANIE (13)ZADANIE (13)ZADANIE (13)zadanie 13 New Text Documentang 3 etap gim 13 zadaniazadania od 13 do 16zadania logiczne (13)(1)Zadania Problemowe 21 05 13więcej podobnych podstron