Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Странное поведение FsRenMovFile

 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Maximus



Joined: 07 Apr 2005
Posts: 927
Location: Украина, Кировоградская обл., г. Знаменка

Post (Separately) Posted: Sun Mar 23, 2008 19:16    Post subject: Странное поведение FsRenMovFile Reply with quote

Есть вот такая функция:
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
View user's profile Send private message
VadiMGP



Joined: 21 Mar 2007
Posts: 1625

Post (Separately) Posted: Sun Mar 23, 2008 21:28    Post subject: Reply with quote

Да, я тоже натыкался на это. Логика ТС тут такая - раз плагин сам не поддерживает перенос файлов - будем работать через копирование и удаление.
Maximus wrote:
Приятно конечно, что работы меньше,...
Программисту - да. Но если юзер нажмет F6 когда обе панели на твоем плагине, то ТС будет копировать файлы через хард.
Back to top
View user's profile Send private message
Maximus



Joined: 07 Apr 2005
Posts: 927
Location: Украина, Кировоградская обл., г. Знаменка

Post (Separately) Posted: Sun Mar 23, 2008 21:49    Post subject: Reply with quote

VadiMGP wrote:
Да, я тоже натыкался на это. Логика ТС тут такая - раз плагин сам не поддерживает перенос файлов - будем работать через копирование и удаление.

Мне показалось, что тут без вариантов - он всегда работает через копирование и удаление.
По крайней мере при переносе, что бы я ни возвращал, ТС всегда работает через переименование и удаление.
Я не вижу возможности надавать ТС по рукам и сделать все самому...
_________________
tcPhonebook|AppLoader|Українізація TC|Ultimate Calendar
Back to top
View user's profile Send private message
Maximus



Joined: 07 Apr 2005
Posts: 927
Location: Украина, Кировоградская обл., г. Знаменка

Post (Separately) Posted: Sun Mar 23, 2008 23:26    Post subject: Reply with quote

И как же в таком случае побороться с копированием переносом в себя? Если ТС все равно продолжает копирование после того, как сказать ему, что не надо больше...
Помогает только FS_FILE_USERABORT... и то одну папку все равно создает.
Почему нет функции FsRenMovDir? И как же теперь жить? :)
_________________
tcPhonebook|AppLoader|Українізація TC|Ultimate Calendar
Back to top
View user's profile Send private message
VadiMGP



Joined: 21 Mar 2007
Posts: 1625

Post (Separately) Posted: Mon Mar 24, 2008 01:33    Post subject: Reply with quote

Maximus wrote:
И как же в таком случае побороться с копированием переносом в себя?
A почему с этим надо бороться? Ну создал юзер в твоем плагине две директории, а потом хочет содержимое одной перенести в другую. Почему он не должен иметь возможности это сделать?
Back to top
View user's profile Send private message
Maximus



Joined: 07 Apr 2005
Posts: 927
Location: Украина, Кировоградская обл., г. Знаменка

Post (Separately) Posted: Mon Mar 24, 2008 09:27    Post subject: Reply with quote

VadiMGP wrote:
A почему с этим надо бороться? Ну создал юзер в твоем плагине две директории, а потом хочет содержимое одной перенести в другую. Почему он не должен иметь возможности это сделать?

Я имел в виду копирование директории саму в себя. Попробуй сделать это в ТС и увидишь, что он тебе скажет:
Quote:
---------------------------
Total Commander
---------------------------
Нельзя копировать/перемещать каталог и создавать ярлык для него
[здесь: E:\anb],
если адресатом указан его же подкаталог:
[E:\anb\anb]

---------------------------
ОК
---------------------------

А потом попробуй сделать такое же в плагине. И будет копировать не до бесконечности конечно... но он не должен делать этого...
_________________
tcPhonebook|AppLoader|Українізація TC|Ultimate Calendar
Back to top
View user's profile Send private message
VadiMGP



Joined: 21 Mar 2007
Posts: 1625

Post (Separately) Posted: Mon Mar 24, 2008 11:08    Post subject: Reply with quote

Я знаю только один способ.
В FsStatusInfo взводить флаг и запоминать откуда идет перенос. А в MkDir проверять создается ли директория в процессе переноса и не в дочерней ли директории. Если да - бить юзеру по рукам.
Back to top
View user's profile Send private message
Maximus



Joined: 07 Apr 2005
Posts: 927
Location: Украина, Кировоградская обл., г. Знаменка

Post (Separately) Posted: Mon Mar 24, 2008 14:18    Post subject: Reply with quote

Т.е. через одно место :)
Это должно быть предусмотрено в интерфейсе WFX-плагинов. И не только это...
_________________
tcPhonebook|AppLoader|Українізація TC|Ultimate Calendar
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group