Page 1 of 1

Reparse points

Posted: Wed 26 Aug, 2009 19:11
by Zadira
Zaranee izvinyajus' za translit, russkaya raskladka otsutstuet v printsipe: corporate environment.
Problema v sledujuschem: esli v dereve katalogov suschestvuet ssilka na katalog predka (ili na sebya) (a na Vista nekotorije pol'zovatel'skiye katalogi po umolcha imejut takiye linki) tree viewer vpadaet v dlitel'niy (poka max internal length reached?) tsikl razbora puteshestvuja po ssilkam. Bilo bi neploho vstavit' kusok obnarugeniya tsiklicheskih ssilok, chtobi tree view po nim ne hodil.

vosproizvoditsya elementarno
c:
cd \
mkdir tmp
mkdir tmp\tmp2
cd tmp\tmp2
junction tmp3 c:\tmp

Cheers.

Re: Reparse points

Posted: Wed 26 Aug, 2009 19:57
by Dark_Diver
И по F3 размер содержимого каталогов тоже долго и неправильно считается, ходя по циклическим ссылкам. Действительно было бы хорошо что-нибудь с этим сделать.

Re: Reparse points

Posted: Wed 26 Aug, 2009 20:00
by DrKnS
System settings - [ ] Scan symbolic links.
Bilo bi neploho vstavit' kusok obnarugeniya tsiklicheskih ssilok
Было бы неплохо, ага.
Давайте кусок, вставим.

Re: Reparse points

Posted: Wed 26 Aug, 2009 20:27
by Zadira
DrKnS wrote:System settings - [ ] Scan symbolic links.
Bilo bi neploho vstavit' kusok obnarugeniya tsiklicheskih ssilok
Было бы неплохо, ага.
Давайте кусок, вставим.
Priyatno, kogda tsitirujut.
Kstati, ya zaranee za translit izvinilsya...

Po suschestvu ge, pri neblagopriyatnih obstoyatel'stvah mogno poluchit' eksponetsial'nuju bombu, yesli v dochernih katalogah mnogo podkatalogov, kak naprimer hash tables v kakom-nibud' ie temporary. U menaya far zavis na neskol'ko minut i ot'el okolo 200 MB pamyati.

Re: Reparse points

Posted: Wed 26 Aug, 2009 20:38
by DrKnS
Если вдруг непонятно - прочтите ещё раз, к вашему транслиту никаких претензий нет.

Эта рекурсия нам тоже не нравится.
Если дадите этот самый "кусок обнаружения циклических ссылок" - с удовольствием его применим.

Re: Reparse points

Posted: Sat 12 Sep, 2009 13:51
by gerser
А разве это такой сложный алгоритм?
Если путь назначения в ссылке совпадает с началом пути, где эта ссылка находится, то это значит цикл. Разве не так?

хотя нужно добавить массив для проверок путей, на случай если:
C:\temp\1 -> C:\other\1
C:\other\1\2 -> C:\temp

Получается, проверять нужно каждый каталог, "где мы уже были".

Re: Reparse points

Posted: Sat 12 Sep, 2009 14:16
by DrKnS
А разве это такой сложный алгоритм?
Если путь назначения в ссылке совпадает с началом пути, где эта ссылка находится, то это значит цикл. Разве не так?
Проверять строковое представление, как вы предлагаете - это охрененно сложный алгоритм, серьёзно.
Для рекурсии ссылка не обязательно должна указывать на "начало пути". Она может указывать на другую папку, в которой есть ещё подпапка, на которую смонтирован раздел, на котором есть ссылка, указывающая на диск, который на самом деле subst, указывающий ещё на одну ссылку, которая указывает на шару на удаленной машине, в которой есть ещё одна ссылка, указывающая на исходную папку. И да, прибавьте сюда ещё и относительные ссылки.
Несложно догадаться, что обойти и проверить всё это хозяйство - долго, ресурсоёмко и чревато ошибками.


Re: Reparse points

Posted: Sat 12 Sep, 2009 14:31
by gerser
ну вот, добрались до ссылки, указывающей на исходную папку. Значит, цикл. А относительные пути легко преобразовываются в абсолютные.

А какое ещё представление можно проверять, кроме строкового?

Re: Reparse points

Posted: Sat 12 Sep, 2009 21:27
by chupakabra
gerser
Нажми кнопочку Spoiler в пред. посте.