View Issue Details

IDProjectCategoryView StatusLast Update
0000599Far ManagerFile Systempublic2008-08-29 23:51
ReporterSnaar Assigned ToDrKnS  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Fixed in Version1.80 alpha 1 
Summary0000599: Невозможно ходить по сетевым дискам подключенным через WebDAV
DescriptionЕсли в системе есть сетевой диск подключенный через WebDAV, то виден только корень, в поддиректории фар зайти по нормальному не может. Это делает невозможным пользоваться диском который JungleDisk делает (он через WebDAV к себе подключает).

Допустим у нас есть диск J: и на нем есть директория zzz с файлами. Т.е. имеем J:\zzz\. Заходим в нее фаром. Фар показывает, что находится в пустом J:\ZZZ\ (не zzz!), хотя в zzz есть файлы и их видно эксплорером.

У WebDAV под виндой есть похоже особенность, что он чувствителен к регистру букв, не как все остальное. Вообщем что происходит внутри фара:

1. -вызывается FarChDir c J:\zzz
2. --вызывается PrepareDiskPath с J:\zzz\
3. ---вызывается ConvertNameToShort с J:\zzz\
4. ----вызывается strDest.Upper (); и выходит J:\ZZZ\
5. ---вызывается ConvertNameToLong с J:\ZZZ\ и тут теперь:
6. ----int nSize = GetLongPathNameW (strCopy, NULL, 0); и nSize возвращает 0, так как ZZZ и zzz для этой фигни разные вещи, так что GetLongPathName ничего не находит и соотвественно ConvertNameToLong не срабатывает.

Ну и потом фар считает, что J:\ZZZ\ это и есть имя и пытается им пользоваться и ничего хорошего не происходит. У себя я "вылечил" закоментировав вызов strDest.Upper (); в ConvertNameToShort. Нужен ли он вообще? Вроде все замечательно работает.

В фаре 1.7х кстати работало замечательно, было бы интересно узнать разницу в коде.

Еще как вариант, можно в ConvertNameToShort проверять, если один и тот же файл возвращается через имя с Upper и без. Если не совпадают (или не находится с Upper вообще), то возвращать вариант без Upper. Это всяко лучше чем вообще ломаться как сейчас.

Поставил severity - major, т.к. такая фундаментальная вещь как хождение по диску поломана.
TagsNo tags attached.
Build551

Activities

Snaar

2008-08-29 08:57

reporter   bugnote:0001771

Как я вижу, это поломали, когда чинили баг 475. Для чинки 475, strDest.Upper там явно не к месту. И вообще, GetShortPathName не будет работать, когда в винде выключена генерация коротких имен (а это не так уж и редко, многие так делают), так что как починен 475 сейчас это хак. Вообщем тут три вещи:

1. Выкинуть ConvertNameToShort из PrepareDiskPath, как было раньше.

2. Баг 475 вообщем надо чинить через починку ConvertNameToLong, чтоб оно работало и выпрямляло длинные имена само не проходя через короткие. Гляну на выходных, как ConvertNameToLong заставить это делать.

3. В ConvertNameToShort, нужен ли strDest.Upper вообще? Мне кажется не нужен, но я плохо знаю как фар этим пользуется (и например плугины).

DrKnS

2008-08-29 14:12

administrator   bugnote:0001774

Проверяем на 551.

Snaar

2008-08-29 17:23

reporter   bugnote:0001775

Да, замечательно.

Issue History

Date Modified Username Field Change
2008-08-28 19:22 Snaar New Issue
2008-08-29 08:57 Snaar Note Added: 0001771
2008-08-29 14:12 DrKnS Note Added: 0001774
2008-08-29 14:12 DrKnS Assigned To => DrKnS
2008-08-29 14:12 DrKnS Status new => feedback
2008-08-29 17:23 Snaar Status feedback => resolved
2008-08-29 17:23 Snaar Resolution open => fixed
2008-08-29 17:23 Snaar Note Added: 0001775
2008-08-29 23:51 DrKnS Build => 551
2008-08-29 23:51 DrKnS Status resolved => closed
2008-08-29 23:51 DrKnS Fixed in Version => 1.80 alpha 1