View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000599 | Far Manager | File System | public | 2008-08-28 19:22 | 2008-08-29 23:51 |
Reporter | Snaar | Assigned To | DrKnS | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Fixed in Version | 1.80 alpha 1 | ||||
Summary | 0000599: Невозможно ходить по сетевым дискам подключенным через 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, т.к. такая фундаментальная вещь как хождение по диску поломана. | ||||
Tags | No tags attached. | ||||
Build | 551 | ||||
|
Как я вижу, это поломали, когда чинили баг 475. Для чинки 475, strDest.Upper там явно не к месту. И вообще, GetShortPathName не будет работать, когда в винде выключена генерация коротких имен (а это не так уж и редко, многие так делают), так что как починен 475 сейчас это хак. Вообщем тут три вещи: 1. Выкинуть ConvertNameToShort из PrepareDiskPath, как было раньше. 2. Баг 475 вообщем надо чинить через починку ConvertNameToLong, чтоб оно работало и выпрямляло длинные имена само не проходя через короткие. Гляну на выходных, как ConvertNameToLong заставить это делать. 3. В ConvertNameToShort, нужен ли strDest.Upper вообще? Мне кажется не нужен, но я плохо знаю как фар этим пользуется (и например плугины). |
|
Проверяем на 551. |
|
Да, замечательно. |
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 |