[ Pobierz całość w formacie PDF ]
.Zadanie 14Zadanie 14, alg.namei()6.6.3.5.ZadanieZadanie polega na dorobieniu nowych mo¿liwo¶ci przy podawaniu nazwy ¶cie¿kowej.Szczególne znaczenie maj± "." i ".".Pierwszy z nich dajemo¿liwo¶æ odwo³ania siê do katalogu o dwa wy¿ej, drugi o trzy poziomy wy¿ej.W celuzaimplementowania 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 ikilkakrotnie (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 przezfunkcjê dir_namei().Mo¿na by zoptymalizowaæ j± poniewa¿ pozycje "." (orazdodatkowe "." 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±tkowepozycje z kropkami, pozycje z kropkami umieszczone wewn±trz nazwy ¶cie¿kowej (tzn.po innychpozycjach) 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".Dopierotak zmodyfikowana nazwa ¶cie¿kowa powinna byæ poddawana dzia³aniu algorytmu dir_namei(), albo wwypadku 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 tejpostaci, mo¿na ju¿ nie sprawdzaæ punktu zamontowania, bo nie poruszamy siê w górê drzewa.Autor: Pawe³ Mielañczuk
[ Pobierz całość w formacie PDF ]