View Issue Details

IDProjectCategoryView StatusLast Update
0001768Far ManagerMacropublic2011-05-20 13:53
ReporterRaistlin Assigned Tovskirdin  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP3
Product Version2.0 
Fixed in Version3.0 
Summary0001768: testfolder(): неверный код возврата для пустого каталога
DescriptionДля пустых каталогов сабж возвращает не 0, как сказано в Энциклопедии, а -1, так же как когда нет доступа.

Вообще надо сказать, что значения кодов подобраны неудачно. Был бы логичнее такой набор:
2 папка не пустая
1 папка пустая
0 папка не существует
-1 нет доступа
-2 ошибка (некорректный параметр или внутренние проблемы с выделением памяти)

Если > 0 - существует и доступна
Если = 0 - не существует, но можно попробовать создать
Если < 0 - ничего обнадеживающего функция не сообщает
TagsNo tags attached.
Build2040

Activities

vskirdin

2011-05-19 12:33

administrator   bugnote:0006929

dirmix.cpp#TestFolder()
заменить 2 строки

        if (lstError.Get() == ERROR_FILE_NOT_FOUND)
            return TSTFLD_EMPTY;

на вот такое
        if (lstError.Get() == ERROR_FILE_NOT_FOUND || lstError.Get() == ERROR_NO_MORE_FILES)
            return TSTFLD_EMPTY;

        if (lstError.Get() == ERROR_PATH_NOT_FOUND)
            return TSTFLD_NOTFOUND;

на счет изменить коды возврата у макрофункции - это, я думаю, нужно коллегиально решать: можешь на форуме тему поднять :-)

vskirdin

2011-05-19 14:10

administrator   bugnote:0006938

...хотя.
Изменены коды возвратов у testfolder.

build 2036

Raistlin

2011-05-19 14:11

reporter   bugnote:0006940

А я уже целое сочинение готовлю на форум. Мысль полетела - не удержать.
Тестовый билд выложишь?

vskirdin

2011-05-19 14:23

administrator   bugnote:0006941

http://skirda-file.googlecode.com/files/Far3b2036.7z

Raistlin

2011-05-19 15:01

reporter   bugnote:0006942

Last edited: 2011-05-19 15:02

На недоступной папке вылезает окно повышения полномочий. Для битого симлинка выдается 0. Для файла - -1.

И вот: http://forum.farmanager.com/viewtopic.php?f=15&t=6445

vskirdin

2011-05-19 16:48

administrator   bugnote:0006947

> На недоступной папке вылезает окно повышения полномочий.
Хмм... а поподробнее - какие права у тебя на тачке, какая ось?

> Для битого симлинка выдается 0.
Что не так?

> Для файла - -1.
Кто бы сомневался. Функция файлы не рассматривает...

Raistlin

2011-05-19 16:58

reporter   bugnote:0006948

x86 XP SP3, обычный пользователь.

> Что не так?
Ну как бы 0 - это папка не существует, а тут-то... На небитом симлинке ведь возвращается 1.

> Кто бы сомневался. Функция файлы не рассматривает...
Логичнее ничего не возвращать, ведь -1 - это "нет доступа".

vskirdin

2011-05-19 18:33

administrator   bugnote:0006954

симлинк битый - ну, все верно: оригинальной папки то нет, на что ссылаться то?

> ничего не возвращать
ничего - это "0", т.е. "папка не существует" :-)

Raistlin

2011-05-19 18:38

reporter   bugnote:0006955

В общем, как ни крути, все криво выходит.

vskirdin

2011-05-20 07:10

administrator   bugnote:0006959

build 2037
для файла пока возвращаем TSTFLD_ERROR

Raistlin

2011-05-20 07:13

reporter   bugnote:0006960

Билд дашь?

P. S. А нет ли где инструкции, как самому скомпилировать?

vskirdin

2011-05-20 07:21

administrator   bugnote:0006961

http://skirda-file.googlecode.com/files/Far3b2038.7z
сборка где-то на форуме описана

Raistlin

2011-05-20 08:13

reporter   bugnote:0006964

А что изменилось? По-прежнему выскакивает elevation на недоступной папке. Впрочем, я тестирую на System Volume Information, может, так оно и должно быть...

Raistlin

2011-05-20 10:17

reporter   bugnote:0006969

Впрочем, все же баг. На каталоге, на который нет прав на чтение, но есть права на чтение разрешений, тоже elevation спрашиваем. Мало того, если окно запроса закрываем по Esc, вылетает:
╔═══════════════════ Exception occurred ═══════════════════╗
║ Exception: Access violation (read from 0x006D0079) ║
║ Address: 0x004A6566 ║
║ Function: ║
║ Module: C:\Program Files\Far3\Far.exe ║
╟──────────────────────────────────────────────────────────╢
║ { Terminate FAR } [ Debug ] ║
╚══════════════════════════════════════════════════════════╝

vskirdin

2011-05-20 12:24

administrator   bugnote:0006972

едем дальше - http://skirda-file.googlecode.com/files/Far3b2038.2.7z

Raistlin

2011-05-20 12:37

reporter   bugnote:0006973

Да, теперь нормально.

Issue History

Date Modified Username Field Change
2011-05-15 21:46 Raistlin New Issue
2011-05-19 12:33 vskirdin Note Added: 0006929
2011-05-19 12:33 vskirdin Assigned To => vskirdin
2011-05-19 12:33 vskirdin Status new => assigned
2011-05-19 14:10 vskirdin Note Added: 0006938
2011-05-19 14:10 vskirdin Status assigned => feedback
2011-05-19 14:11 Raistlin Note Added: 0006940
2011-05-19 14:11 Raistlin Status feedback => assigned
2011-05-19 14:23 vskirdin Note Added: 0006941
2011-05-19 14:23 vskirdin Status assigned => feedback
2011-05-19 15:01 Raistlin Note Added: 0006942
2011-05-19 15:01 Raistlin Status feedback => assigned
2011-05-19 15:02 Raistlin Note Edited: 0006942
2011-05-19 16:48 vskirdin Note Added: 0006947
2011-05-19 16:58 Raistlin Note Added: 0006948
2011-05-19 18:33 vskirdin Note Added: 0006954
2011-05-19 18:38 Raistlin Note Added: 0006955
2011-05-20 07:10 vskirdin Note Added: 0006959
2011-05-20 07:10 vskirdin Status assigned => feedback
2011-05-20 07:13 Raistlin Note Added: 0006960
2011-05-20 07:13 Raistlin Status feedback => assigned
2011-05-20 07:21 vskirdin Note Added: 0006961
2011-05-20 07:21 vskirdin Status assigned => feedback
2011-05-20 08:13 Raistlin Note Added: 0006964
2011-05-20 08:13 Raistlin Status feedback => assigned
2011-05-20 10:17 Raistlin Note Added: 0006969
2011-05-20 12:24 vskirdin Note Added: 0006972
2011-05-20 12:24 vskirdin Status assigned => feedback
2011-05-20 12:37 Raistlin Note Added: 0006973
2011-05-20 12:37 Raistlin Status feedback => assigned
2011-05-20 12:37 Raistlin Status assigned => resolved
2011-05-20 13:53 vskirdin Build => 2040
2011-05-20 13:53 vskirdin Status resolved => closed
2011-05-20 13:53 vskirdin Resolution open => fixed
2011-05-20 13:53 vskirdin Fixed in Version => 3.0