View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000391 | Far Manager | Plugins API.Old API Wrapper | public | 2007-11-30 16:00 | 2007-12-01 07:07 |
Reporter | Sten | Assigned To | alexy | ||
Priority | normal | Severity | feature | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Fixed in Version | 1.80 alpha 1 | ||||
Summary | 0000391: Реализация FarRecursiveSearchA для PluginA.cpp (нужна для MultiArc) | ||||
Description | Плагину MultiArc, скомпиленному в ANSI режиме для старта требуется функция FarRecursiveSearch. К несчастью, это одна из функций, которую PluginA.cpp пока не предоставляет. В аттаче находится патч с реализацией FarRecursiveSearchA в виде враппера над юникодной FarRecursieSearch. Теперь ANSI плагин нормально стартует, и худо-бедно даже работает.. местами. | ||||
Tags | No tags attached. | ||||
Build | 367 | ||||
2007-11-30 16:00
|
patch.diff (2,549 bytes)
Index: wrap.cpp =================================================================== --- wrap.cpp (revision 1335) +++ wrap.cpp (working copy) @@ -519,6 +519,45 @@ return GetNumberOfLinks(n); } +typedef struct _FAR_SEARCH_A_CALLBACK_PARAM +{ + oldfar::FRSUSERFUNC Func; + void *Param; +}FAR_SEARCH_A_CALLBACK_PARAM, *PFAR_SEARCH_A_CALLBACK_PARAM; + +static int WINAPI FarRecursiveSearchA_Callback(const FAR_FIND_DATA *FData,const wchar_t *FullName,void *param) +{ + PFAR_SEARCH_A_CALLBACK_PARAM pCallbackParam = static_cast<PFAR_SEARCH_A_CALLBACK_PARAM>(param); + + WIN32_FIND_DATA FindData; + memset(&FindData,0,sizeof(FindData)); + FindData.dwFileAttributes = FData->dwFileAttributes; + FindData.ftCreationTime = FData->ftCreationTime; + FindData.ftLastAccessTime = FData->ftLastAccessTime; + FindData.ftLastWriteTime = FData->ftLastWriteTime; + FindData.nFileSizeLow = (DWORD)FData->nFileSize; + FindData.nFileSizeHigh = (DWORD)(FData->nFileSize>>32); + UnicodeToAnsi(FData->lpwszFileName,FindData.cFileName,sizeof(FindData.cFileName)); + UnicodeToAnsi(FData->lpwszAlternateFileName,FindData.cAlternateFileName,sizeof(FindData.cAlternateFileName)); + + char FullNameA[NM]; + UnicodeToAnsi(FullName,FullNameA,sizeof(FullNameA)-1); + + return pCallbackParam->Func(&FindData,FullNameA,pCallbackParam->Param); +} + +void WINAPI FarRecursiveSearchA(const char *InitDir,const char *Mask,oldfar::FRSUSERFUNC Func,DWORD Flags,void *Param) +{ + string strInitDir(InitDir); + string strMask(Mask); + + FAR_SEARCH_A_CALLBACK_PARAM CallbackParam; + CallbackParam.Func = Func; + CallbackParam.Param = Param; + + FarRecursiveSearch(static_cast<const wchar_t *>(strInitDir),static_cast<const wchar_t *>(strMask),FarRecursiveSearchA_Callback,Flags,static_cast<void *>(&CallbackParam)); +} + DWORD WINAPI ExpandEnvironmentStrA(const char *src, char *dest, size_t size) { string strS(src), strD; Index: PluginA.cpp =================================================================== --- PluginA.cpp (revision 1335) +++ PluginA.cpp (working copy) @@ -482,7 +482,7 @@ //StandardFunctions.XLat=XlatA; //StandardFunctions.GetFileOwner=GetFileOwner; //BUGBUG StandardFunctions.GetNumberOfLinks=GetNumberOfLinksA; - //StandardFunctions.FarRecursiveSearch=FarRecursiveSearch; + StandardFunctions.FarRecursiveSearch=FarRecursiveSearchA; StandardFunctions.MkTemp=FarMkTempA; StandardFunctions.DeleteBuffer=DeleteBufferA; StandardFunctions.ProcessName=ProcessNameA; |
|
Давай твоё имя и фамилию для файла CONTRIBUTORS |
|
Vinokurov Stanislav Приятно познакомиться, так сказать. :) |
|
367 |
Date Modified | Username | Field | Change |
---|---|---|---|
2007-11-30 16:00 | Sten | New Issue | |
2007-11-30 16:00 | Sten | Status | new => assigned |
2007-11-30 16:00 | Sten | Assigned To | => alexy |
2007-11-30 16:00 | Sten | File Added: patch.diff | |
2007-12-01 06:54 | alexy | Note Added: 0000891 | |
2007-12-01 07:01 | Sten | Note Added: 0000892 | |
2007-12-01 07:01 | Sten | Note Edited: 0000892 | |
2007-12-01 07:07 | alexy | Build | => 367 |
2007-12-01 07:07 | alexy | Status | assigned => closed |
2007-12-01 07:07 | alexy | Note Added: 0000894 | |
2007-12-01 07:07 | alexy | Resolution | open => fixed |
2007-12-01 07:07 | alexy | Fixed in Version | => 1.80 alpha 1 |