View Issue Details

IDProjectCategoryView StatusLast Update
0000391Far ManagerPlugins API.Old API Wrapperpublic2007-12-01 07:07
ReporterSten Assigned Toalexy  
PrioritynormalSeverityfeatureReproducibilityalways
Status closedResolutionfixed 
Fixed in Version1.80 alpha 1 
Summary0000391: Реализация FarRecursiveSearchA для PluginA.cpp (нужна для MultiArc)
DescriptionПлагину MultiArc, скомпиленному в ANSI режиме для старта требуется функция FarRecursiveSearch. К несчастью, это одна из функций, которую PluginA.cpp пока не предоставляет.

В аттаче находится патч с реализацией FarRecursiveSearchA в виде враппера над юникодной FarRecursieSearch.

Теперь ANSI плагин нормально стартует, и худо-бедно даже работает.. местами.
TagsNo tags attached.
Build367

Activities

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;
patch.diff (2,549 bytes)   

alexy

2007-12-01 06:54

administrator   bugnote:0000891

Давай твоё имя и фамилию для файла CONTRIBUTORS

Sten

2007-12-01 07:01

reporter   bugnote:0000892

Last edited: 2007-12-01 07:01

Vinokurov Stanislav

Приятно познакомиться, так сказать. :)

alexy

2007-12-01 07:07

administrator   bugnote:0000894

367

Issue History

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