История изменений
Исправление beastie, (текущая версия) :
Кстати, у меня тут маленький баг закрался: opendir нужен, конечно, только один раз.
Т.е. поменять объявление переменной на DIR *dirp;
По принципу действия:
- смотрим inode директория, где мы находимся
- если inode == 2 — возвращаем результат (hint: у root inode всегда равен 2)
- открываем выше-лежащий директорий и ищем там (while) имя директория с вышенайденным inode — это наше имя
- если нашли — добавляем в path и идём на уровень выше
- повторяем весь процесс рекурсивно, пока не дойдём до root
PS: там вполне ещё могут быть баги, т.к. делалось на коленке. В частности в самом root вернётся, скорей всего неправильный результат. Оставлю это как домашнее задание. ;)
Исправление beastie, :
Кстати, у меня тут маленький баг закрался: opendir нужен, конечно, только один раз.
Т.е. поменять объявление переменной на DIR *dirp;
По принципу действия:
- смотрим inode директория, где мы находимся
- если inode == 2 — возвращаем результат (hint: у root inode всегда равен 2)
- открываем выше-лежащий директорий и ищем там (while) имя директория с вышенайденным inode — это наше имя
- если нашли — добавляем в path и идём на уровень выше
- повторяем весь процесс рекурсивно, пока не дойдём до root
PS: там вполне ещё могут быть баги, т.к. делалось на коленке.
Исправление beastie, :
Кстати, у меня тут маленький баг закрался: opendir нужен, конечно, только один раз.
Т.е. поменять объявление переменной на DIR *dirp;
По принципу действия:
- смотрим inode директория, где мы находимся
- если inode == 2 — возвращаем результат (hint: у root inode всегда равен 2)
- открываем выше-лежащий директорий и ищем там (while) имя директория с вышенайденным inode — это наше имя
- если нашли — добавляем в path и идём на уровень выше
- повторяем весь процесс рекурсивно, пока не дойдём до root
Исправление beastie, :
Кстати, у меня тут маленький баг закрался: opendir нужен, конечно, только один раз.
Т.е. поменять объявление переменной на DIR *dirp;
По принципу действия:
- смотрим inode директория, где мы находимся
- если inode == 2 — возвращаем результат (hint: у root inode всегда равна 2)
- открываем выше-лежащий директорий и ищем там (while) имя директория с вышенайденным inode — это наше имя
- если нашли — добавляем в path и идём на уровень выше
- повторяем весь процесс рекурсивно, пока не дойдём до root
Исправление beastie, :
Кстати, у меня тут маленький баг закрался: opendir нужен, конечно, только один раз.
Т.е. поменять объявление переменной на DIR *dirp;
По принципу действия:
- смотрим inode директория, где мы находимся
- если inode == 2 — возвращаем результат (hint: у root inode всегда равна 2)
- открываем выше-лежащий директорий и ищем там (while) имя директория с вышенайденным inode — это наше имя
- если нашли — добавляем в path и идём на уровень выше
- повторяем весь процесс, пока не дойдём до root
Исходная версия beastie, :
Кстати, у меня тут маленький баг закрался: opendir нужен, конечно, только один раз.
Т.е. поменять объявление переменной на DIR *dirp;
По принципу действия:
- смотрим inode директория, где мы находимся
- если inode == 2 — возвращаем результат (hint: у root inode всегда равна 2)
- открываем выше-лежащий директорий и ищем там (while) имя директория с вышенайденным inode
- если нашли — добавляем в path и идём на уровень выше
- повторяем весь процесс, пока не дойдём до root