LINUX.ORG.RU

История изменений

Исправление 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