View previous topic :: View next topic |
Author |
Message |
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
(Separately) Posted: Sun Mar 23, 2008 19:16 Post subject: Странное поведение FsRenMovFile |
|
|
Есть вот такая функция:
Code: | extern "C" __declspec(dllexport) int __stdcall FsRenMovFile(char* OldName,char* NewName,bool Move,bool OverWrite,RemoteInfoStruct* ri)
{
if(!strcmp(OldName,NewName)) return FS_FILE_OK;
if(Move)
{
if(!OverWrite)
{
return RenameItem(OldName,NewName);//моя функция
}
}
return FS_FILE_NOTSUPPORTED;
} |
Реализовано только перемещение без замены.
В остальных случаях возвращаю FS_FILE_NOTSUPPORTED.
Очень удивило, когда при вызове копирования, ТС с удовольствием положил на возвращенный ему FS_FILE_NOTSUPPORTED и скопировал директорию со всеми поддиректориями.
При этом в файле справки нигде не сказано, что ТС вызывает функцию FsMkDir во время копирования...
Приятно конечно, что работы меньше, но предупреждать же надо :) _________________ tcPhonebook|AppLoader|Українізація TC|Ultimate Calendar |
|
Back to top |
|
|
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Sun Mar 23, 2008 21:28 Post subject: |
|
|
Да, я тоже натыкался на это. Логика ТС тут такая - раз плагин сам не поддерживает перенос файлов - будем работать через копирование и удаление.
Maximus wrote: | Приятно конечно, что работы меньше,... | Программисту - да. Но если юзер нажмет F6 когда обе панели на твоем плагине, то ТС будет копировать файлы через хард. |
|
Back to top |
|
|
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
(Separately) Posted: Sun Mar 23, 2008 21:49 Post subject: |
|
|
VadiMGP wrote: | Да, я тоже натыкался на это. Логика ТС тут такая - раз плагин сам не поддерживает перенос файлов - будем работать через копирование и удаление. |
Мне показалось, что тут без вариантов - он всегда работает через копирование и удаление.
По крайней мере при переносе, что бы я ни возвращал, ТС всегда работает через переименование и удаление.
Я не вижу возможности надавать ТС по рукам и сделать все самому... _________________ tcPhonebook|AppLoader|Українізація TC|Ultimate Calendar |
|
Back to top |
|
|
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
(Separately) Posted: Sun Mar 23, 2008 23:26 Post subject: |
|
|
И как же в таком случае побороться с копированием переносом в себя? Если ТС все равно продолжает копирование после того, как сказать ему, что не надо больше...
Помогает только FS_FILE_USERABORT... и то одну папку все равно создает.
Почему нет функции FsRenMovDir? И как же теперь жить? :) _________________ tcPhonebook|AppLoader|Українізація TC|Ultimate Calendar |
|
Back to top |
|
|
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Mon Mar 24, 2008 01:33 Post subject: |
|
|
Maximus wrote: | И как же в таком случае побороться с копированием переносом в себя? | A почему с этим надо бороться? Ну создал юзер в твоем плагине две директории, а потом хочет содержимое одной перенести в другую. Почему он не должен иметь возможности это сделать? |
|
Back to top |
|
|
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
(Separately) Posted: Mon Mar 24, 2008 09:27 Post subject: |
|
|
VadiMGP wrote: | A почему с этим надо бороться? Ну создал юзер в твоем плагине две директории, а потом хочет содержимое одной перенести в другую. Почему он не должен иметь возможности это сделать? |
Я имел в виду копирование директории саму в себя. Попробуй сделать это в ТС и увидишь, что он тебе скажет:
Quote: | ---------------------------
Total Commander
---------------------------
Нельзя копировать/перемещать каталог и создавать ярлык для него
[здесь: E:\anb],
если адресатом указан его же подкаталог:
[E:\anb\anb]
---------------------------
ОК
--------------------------- |
А потом попробуй сделать такое же в плагине. И будет копировать не до бесконечности конечно... но он не должен делать этого... _________________ tcPhonebook|AppLoader|Українізація TC|Ultimate Calendar |
|
Back to top |
|
|
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Mon Mar 24, 2008 11:08 Post subject: |
|
|
Я знаю только один способ.
В FsStatusInfo взводить флаг и запоминать откуда идет перенос. А в MkDir проверять создается ли директория в процессе переноса и не в дочерней ли директории. Если да - бить юзеру по рукам. |
|
Back to top |
|
|
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
|
Back to top |
|
|
|