View Issue Details

IDProjectCategoryView StatusLast Update
0000662Far ManagerPlugins API.Old API Wrapperpublic2008-12-19 06:25
Reportersamlyukov Assigned Toalexy  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Fixed in Version2.0 
Summary0000662: немного улучшил FarGetDirListA
Descriptionзаглушка теперь выдает хоть какой-то результат.
TagsNo tags attached.
Build665

Activities

2008-12-16 17:03

 

!work.diff (2,226 bytes)   
Index: plugapi.cpp
===================================================================
--- plugapi.cpp	(revision 2280)
+++ plugapi.cpp	(working copy)
@@ -1449,6 +1449,7 @@
         {
           if(ItemsList)
             xf_free(ItemsList);
+          *pItemsNumber=0;
           return FALSE;
         }
 
Index: wrap.cpp
===================================================================
--- wrap.cpp	(revision 2280)
+++ wrap.cpp	(working copy)
@@ -2382,6 +2382,33 @@
 
 int WINAPI FarGetDirListA(const char *Dir,struct oldfar::PluginPanelItem **pPanelItem,int *pItemsNumber)
 {
+	// BUGBUG!!! �������, �� ����� ��� �����-�� ��������!
+
+	wchar_t *DirW=AnsiToUnicode(Dir);
+	if (!DirW) return FALSE;
+
+	FAR_FIND_DATA *pItem;
+	int Number;
+	int ret=FarGetDirList(DirW, &pItem, &Number);
+	xf_free(DirW);
+	if (ret && Number)
+  {
+	  *pPanelItem=(oldfar::PluginPanelItem *)xf_malloc(Number*sizeof(oldfar::PluginPanelItem));
+	  memset(*pPanelItem,0,Number*sizeof(oldfar::PluginPanelItem));
+	  for (*pItemsNumber=Number,Number--; Number>=0; Number--)
+    {
+			(*pPanelItem)[Number].FindData.dwFileAttributes = pItem[Number].dwFileAttributes;
+			(*pPanelItem)[Number].FindData.ftCreationTime = pItem[Number].ftCreationTime;
+			(*pPanelItem)[Number].FindData.ftLastAccessTime = pItem[Number].ftLastAccessTime;
+			(*pPanelItem)[Number].FindData.ftLastWriteTime = pItem[Number].ftLastWriteTime;
+			(*pPanelItem)[Number].FindData.nFileSizeLow = (DWORD)pItem[Number].nFileSize;
+			(*pPanelItem)[Number].FindData.nFileSizeHigh = (DWORD)(pItem[Number].nFileSize>>32);
+			UnicodeToAnsi(pItem[Number].lpwszFileName,(*pPanelItem)[Number].FindData.cFileName,MAX_PATH);
+			UnicodeToAnsi(pItem[Number].lpwszAlternateFileName,(*pPanelItem)[Number].FindData.cAlternateFileName,14);
+      apiFreeFindData(&pItem[Number]);
+    }
+    return TRUE;
+  }
 	return FALSE;
 }
 
@@ -2392,6 +2419,8 @@
 
 void WINAPI FarFreeDirListA(const struct oldfar::PluginPanelItem *PanelItem)
 {
+  // BUGBUG!!! �������, �� ����� ��� �����-�� ��������!
+  if (PanelItem) xf_free((void*)PanelItem);
 }
 
 INT_PTR WINAPI FarAdvControlA(INT_PTR ModuleNumber,int Command,void *Param)
!work.diff (2,226 bytes)   

alexy

2008-12-18 19:33

administrator   bugnote:0002200

А почему
// BUGBUG!!! Заглушка, но выдает хоть какой-то результат!
?

Вроде как делает всё что надо.

samlyukov

2008-12-18 19:42

reporter   bugnote:0002201

очевидно потому что FAR_FIND_DATA это не всё PluginPanelItem :)

alexy

2008-12-18 20:25

administrator   bugnote:0002203

В 1.7x тоже нифига кроме FindData не заполняется так что всё ок, поэтому и переделали это в FAR_FIND_DATA чтоб попусту память не тратить.

samlyukov

2008-12-18 20:35

reporter   bugnote:0002204

ну, у меня нет исходников 1,7... ;)

alexy

2008-12-18 23:04

administrator   bugnote:0002207

Ты конечно не писатель, кредит не получаешь за это. 665.

samlyukov

2008-12-19 06:03

reporter   bugnote:0002208

Пошел писать продолжение романа Война и мир... может кредит получу...
;-)

Issue History

Date Modified Username Field Change
2008-12-16 17:03 samlyukov New Issue
2008-12-16 17:03 samlyukov Status new => assigned
2008-12-16 17:03 samlyukov Assigned To => alexy
2008-12-16 17:03 samlyukov File Added: !work.diff
2008-12-18 19:33 alexy Note Added: 0002200
2008-12-18 19:42 samlyukov Note Added: 0002201
2008-12-18 20:25 alexy Note Added: 0002203
2008-12-18 20:35 samlyukov Note Added: 0002204
2008-12-18 23:04 alexy Note Added: 0002207
2008-12-18 23:06 alexy Status assigned => feedback
2008-12-19 06:03 samlyukov Note Added: 0002208
2008-12-19 06:03 samlyukov Status feedback => resolved
2008-12-19 06:03 samlyukov Resolution open => fixed
2008-12-19 06:25 alexy Build => 665
2008-12-19 06:25 alexy Status resolved => closed
2008-12-19 06:25 alexy Fixed in Version => 2.0