View Issue Details

IDProjectCategoryView StatusLast Update
0000223Far Manager 1.7xSetAttrpublic2007-07-16 13:06
ReporterZuz Assigned ToZuz  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionsuspended 
Platformx86OSWindows 
Product Version1.71 
Fixed in Version1.71 
Summary0000223: Проблема с изменением атрибутов папки, когда сервер на W9x, а клиент старше (например, WXP)
DescriptionЗаходим в расшаренную папку на W9x с клиента WXP, создаём пустую папочку, и пытаемся изменить атрибуты этой папочки (CRTL-A), в диалоге ничего не меняем (все галки пустые), после запуска команды получаем ошибку: "Такой запрос не поддерживается. Не удалось установить время файла для имя_папки".
Причем если выбрать в диалоге изменения файловых атрибутов режим "Обрабатывать вложенные папки", то он также ситуацию не спасет (хотя т.к. группа полей относящихся к дате не используется по идее проблем с изменением даты быть не должно и почему возникает такое сообщение об ошибке не понятно).
Галки в диалоге можно ставить любые, какие даёт, на ситуацию это не влияет, всегда одна и та же ошибка.
Стандартный Explorer с такой задачей справляется без проблем.
Если клиент W9x, то работает нормально.
Лог Filemon’a на WXP с момента нажатия CTRL-A до момента возникновения ошибки прилагается.
TagsNo tags attached.
Build

Activities

2006-07-24 04:18

 

FilemonXP.LOG (3,553 bytes)   
1	16:11:53	Far.exe:2320	OPEN	\\V1\TEST\	SUCCESS	Options: Open Directory  Access: All	
2	16:11:53	Far.exe:2320	DIRECTORY	\\V1\TEST\	SUCCESS	FileBothDirectoryInformation: *	
3	16:11:53	Far.exe:2320	DIRECTORY	\\V1\TEST\	SUCCESS	FileBothDirectoryInformation	
4	16:11:53	Far.exe:2320	CLOSE	\\V1\TEST\	SUCCESS		
5	16:11:53	Far.exe:2320	OPEN	\\V1\TEST	SUCCESS	Options: Open  Access: All	
6	16:11:53	Far.exe:2320	QUERY INFORMATION	\\V1\TEST	SUCCESS	FileBasicInformation	
7	16:11:53	Far.exe:2320	CLOSE	\\V1\TEST	SUCCESS		
8	16:11:53	Far.exe:2320	OPEN	\\V1\TEST	SUCCESS	Options: Open  Access: All	
9	16:11:53	Far.exe:2320	QUERY INFORMATION	\\V1\TEST	SUCCESS	FileBasicInformation	
10	16:11:53	Far.exe:2320	CLOSE	\\V1\TEST	SUCCESS		
11	16:11:53	Far.exe:2320	OPEN	\\V1\TEST	SUCCESS	Options: Open  Access: All	
12	16:11:53	Far.exe:2320	QUERY INFORMATION	\\V1\TEST	SUCCESS	FileBasicInformation	
13	16:11:53	Far.exe:2320	CLOSE	\\V1\TEST	SUCCESS		
14	16:11:53	Far.exe:2320	OPEN	\\V1\TEST\	SUCCESS	Options: Open Directory  Access: All	
15	16:11:53	Far.exe:2320	QUERY INFORMATION	\\V1\TEST\	SUCCESS	FileNameInformation	
16	16:11:53	Far.exe:2320	QUERY INFORMATION	\\V1\TEST\	SUCCESS	FileFsAttributeInformation	
17	16:11:53	Far.exe:2320	CLOSE	\\V1\TEST\	SUCCESS		
18	16:11:53	Far.exe:2320	OPEN	\\V1\TEST\2\	SUCCESS	Options: Open  Access: All	
19	16:11:53	Far.exe:2320	QUERY INFORMATION	\\V1\TEST\2\	SUCCESS	FileBasicInformation	
20	16:11:53	Far.exe:2320	CLOSE	\\V1\TEST\2\	SUCCESS		
21	16:11:53	Far.exe:2320	OPEN	\\V1\TEST\	SUCCESS	Options: Open Directory  Access: All	
22	16:11:53	Far.exe:2320	DIRECTORY	\\V1\TEST\	SUCCESS	FileBothDirectoryInformation: 2	
23	16:11:53	Far.exe:2320	CLOSE	\\V1\TEST\	SUCCESS		
24	16:11:53	Far.exe:2320	OPEN	\\V1\TEST\	SUCCESS	Options: Open Directory  Access: All	
25	16:11:53	Far.exe:2320	DIRECTORY	\\V1\TEST\	SUCCESS	FileBothDirectoryInformation: 2	
26	16:11:53	Far.exe:2320	CLOSE	\\V1\TEST\	SUCCESS		
27	16:12:01	Far.exe:2320	OPEN	\\V1\TEST\2	SUCCESS	Options: Open  Access: All	
28	16:12:01	Far.exe:2320	QUERY INFORMATION	\\V1\TEST\2	SUCCESS	FileBasicInformation	
29	16:12:01	Far.exe:2320	CLOSE	\\V1\TEST\2	SUCCESS		
30	16:12:01	Far.exe:2320	OPEN	\\V1\TEST\V1\TEST\2	NOT IMPLEMENTED	Options: Open  Access: All	
31	16:12:01	Far.exe:2320	OPEN	\\V1\TEST\2	SUCCESS	Options: Open  Access: All	
32	16:12:01	Far.exe:2320	QUERY INFORMATION	\\V1\TEST\2	SUCCESS	FileBasicInformation	
33	16:12:01	Far.exe:2320	CLOSE	\\V1\TEST\2	SUCCESS		
34	16:12:01	Far.exe:2320	OPEN	\\V1\TEST\V1\TEST\2	NOT IMPLEMENTED	Options: Open  Access: All	
35	16:12:01	Far.exe:2320	OPEN	\\V1\TEST\2	SUCCESS	Options: Open  Access: All	
36	16:12:01	Far.exe:2320	CLOSE	\\V1\TEST\2	SUCCESS		
37	16:12:01	Far.exe:2320	OPEN	\\V1\TEST\2	SUCCESS	Options: Open  Access: All	
38	16:12:01	Far.exe:2320	QUERY INFORMATION	\\V1\TEST\2	SUCCESS	FileBasicInformation	
39	16:12:01	Far.exe:2320	CLOSE	\\V1\TEST\2	SUCCESS		
40	16:12:01	Far.exe:2320	OPEN	\\V1\TEST\V1\TEST\2	NOT IMPLEMENTED	Options: Open  Access: All	
41	16:12:01	Far.exe:2320	OPEN	\\V1\TEST\2	SUCCESS	Options: Open  Access: All	
42	16:12:01	Far.exe:2320	QUERY INFORMATION	\\V1\TEST\2	SUCCESS	FileBasicInformation	
43	16:12:01	Far.exe:2320	CLOSE	\\V1\TEST\2	SUCCESS		
44	16:12:01	Far.exe:2320	OPEN	\\V1\TEST\V1\TEST\2	NOT IMPLEMENTED	Options: Open  Access: All	
45	16:12:01	Far.exe:2320	OPEN	\\V1\TEST\2	SUCCESS	Options: Open  Access: All	
46	16:12:01	Far.exe:2320	SET INFORMATION 	\\V1\TEST\2	NOT SUPPORTED	FileBasicInformation	
47	16:12:01	Far.exe:2320	CLOSE	\\V1\TEST\2	SUCCESS		
FilemonXP.LOG (3,553 bytes)   

vskirdin

2006-07-24 11:28

administrator   bugnote:0000246

Напиши маааленькую тестовую прогу, которая делает SetFileTime для такого случая.
Если ОНА, твоя прога, выставит (опять же для твоего случая) время - переокрой баг.
А пока - Known Bugs

Zuz

2006-07-25 05:01

developer   bugnote:0000251

Last edited: 2006-07-25 05:03

Эх... насколько я понял, в W9x handle на директорию получить крайне затруднительно, по крайней мере, в WIN32 API для W9x такого я не нашел (давно под MD не писал ;-), и думаю сия бага как раз от туда растет.
Открыл для себя, что под W9x FAR не умеет устанавливать для паки даже дату создания, просто молча выполняет команду, но создания дата не меняется.

Написал мааленькую тестовую прогу, но толк от неё почти никакой:

BOOL SetFileToCurrentTime(HANDLE hFile)
{
    FILETIME ft;
    SYSTEMTIME st;
    BOOL f;

    GetSystemTime(&st);
    SystemTimeToFileTime(&st, &ft);
    f = SetFileTime(hFile, &ft, &ft, &ft);

    return f;
}

int _tmain (int argc, TCHAR* argv[])
{

    HANDLE hFile=CreateFile(TEXT("\\\\V1\\TEST\\1"), // dir to open
                   GENERIC_WRITE, // open for writing
                   FILE_SHARE_READ, // share for reading
                   NULL, // default security
                   OPEN_EXISTING, // existing file only
                   FILE_FLAG_BACKUP_SEMANTICS, // directory
                   NULL); // no attr. template
 
    if (hFile == INVALID_HANDLE_VALUE)
    {
        fprintf(stderr, TEXT("Could not open directory (error %d)\n"), GetLastError());
        return 0;
    }
    if ( !SetFileToCurrentTime (hFile) )
    {
        fprintf(stderr, TEXT("Could not set directory time (error %d)\n"), GetLastError());
        CloseHandle (hFile);
        return 0;
    }

    CloseHandle (hFile);
    fprintf(stderr, TEXT("All done!"));

    return 1;
}

Как оказалось проблема в последнем параметре функции SetFileTime(hFile, &ft, &ft, &ft);
если там NULL, то ошибки (про которую я писал выше) в SetFileTime не происходит, но и изменений в атрибуты времени никаких не вносится.

Предложение сделать хотя бы так, чтобы была возможность пропустить возникающие ошибки (причем все скопом, кнопка пропустить все), а не прерывать обработку как сейчас на первой же папке (для случая, когда галка "Обрабатывать вложенные папки" включена).

И встречный вопрос: зачем меняется lpLastWriteTime при простом изменении атрибутов папки?
И зачем вообще менять любое время, когда просят просто поменять атрибуты?
Возможно ли не менять время, когда это делать не просят?

Zuz

2006-07-25 05:08

developer   bugnote:0000252

Не знаю как переоткрыть баг, нет кнопки Reopen Issue

vskirdin

2006-07-26 10:14

administrator   bugnote:0000258

Если файловая система FAT/FAT32 и ЭТО каталог, то компоненты даты/времени не будут ставится.
искать после 2124

Zuz

2006-09-18 04:14

developer   bugnote:0000280

Как-то оно не правильно для FAT полностью отрубать, для тех же flash'ек иногда необходимо и раньше работало нормально.
Предложения следующие:
1. Если группа полей, описывающих даты, не была изменена, то установку дат не производим (для наглядности те поля даты, которые не трогали, нужно "засерять", либо ещё как-то отмечать, сейчас не понятно будем ли их менять или нет).
2. В случае, если в группу полей, описывающих даты, вносились изменения, то проверять результат установки для первого каталога: установилась ли как требовалось нам для этого первого каталога дата. В случае если дата правильно не устанавливается, то выдать предупреждение, что в данном случае установка таких то атрибутов невозможна и спросить чего делать: пропустить установку дат или продолжить, но для остальных объектов установку дат не проводить.

Zuz

2006-09-18 04:17

developer   bugnote:0000281

Забыл сказать, что под Win 9x, т.к. нормальный хендл на директорию не получить, то "засерять" поля, описывающие даты, включая их описания (по аналогии как это сделано с прочими атрибутами).

Zuz

2007-07-03 03:25

developer   bugnote:0000517

Пока вернул возможность установки даты/времени для локальных дисков с FAT/FAT32, для сетевых дисков в случае ошибки она тихо игнорируется (см. после 2239)

Zuz

2007-07-05 03:02

developer   bugnote:0000532

В будущем нужно доработать диалог изменения атрибутов в части групповых правок

Issue History

Date Modified Username Field Change
2006-07-24 04:18 Zuz New Issue
2006-07-24 04:18 Zuz File Added: FilemonXP.LOG
2006-07-24 11:28 vskirdin Note Added: 0000246
2006-07-24 11:29 vskirdin Project Far Manager 1.7x => Known Error
2006-07-25 05:01 Zuz Note Added: 0000251
2006-07-25 05:02 Zuz Note Edited: 0000251
2006-07-25 05:02 Zuz Note Edited: 0000251
2006-07-25 05:03 Zuz Note Edited: 0000251
2006-07-25 05:08 Zuz Note Added: 0000252
2006-07-26 10:09 vskirdin Project Known Error => Far Manager 1.7x
2006-07-26 10:13 vskirdin Status new => assigned
2006-07-26 10:13 vskirdin Assigned To => vskirdin
2006-07-26 10:14 vskirdin Status assigned => resolved
2006-07-26 10:14 vskirdin Fixed in Version => 1.71
2006-07-26 10:14 vskirdin Resolution open => fixed
2006-07-26 10:14 vskirdin Note Added: 0000258
2006-09-18 04:14 Zuz Status resolved => feedback
2006-09-18 04:14 Zuz Resolution fixed => reopened
2006-09-18 04:14 Zuz Note Added: 0000280
2006-09-18 04:17 Zuz Note Added: 0000281
2007-07-02 23:09 Zuz Status feedback => assigned
2007-07-02 23:09 Zuz Assigned To vskirdin => Zuz
2007-07-03 03:25 Zuz Note Added: 0000517
2007-07-05 03:02 Zuz Status assigned => resolved
2007-07-05 03:02 Zuz Resolution reopened => suspended
2007-07-05 03:02 Zuz Note Added: 0000532
2007-07-16 13:06 alexy Status resolved => closed