View Issue Details

IDProjectCategoryView StatusLast Update
0003096Plugins_Commonpublic2015-10-24 16:55
Reportermichael.lukashovAssigned To 
PrioritynormalSeveritymajorReproducibilityhave not tried
Status newResolutionopen 
Product Version3.0 
Target Version3.0Fixed in Version 
Summary0003096: Case-Sensitive поиск файлов на панели NetBox
DescriptionNetBox поддерживает Case-Sensitive файловые системы, и это следует учитывать при поиске файлов на панели плагина. Возможна ситуация, когда каталог содержит несколько файлов, имена которых различаются только регистром. Тогда становится невозможным создать в каталоге новый файл с таким же именем, но в другом регистре.
Приложенный патч устраняет проблему.
Steps To ReproduceОткрыть SFTP сессию, перейти в каталог, содержащий файлы
test.txt
TEST.txt
Попытаться создать (Shift-F4) новый файл с именем Test.txt
Ожидается, что будет создан новый файл Test.txt, вместо этого в редакторе открывается уже существующий файл test.txt
TagsNo tags attached.

Activities

michael.lukashov

2015-10-04 13:38

developer  

case-insensitive-findfile-for-netbox.patch (3,732 bytes)
Index: filelist.cpp
===================================================================
--- filelist.cpp	(revision 13432)
+++ filelist.cpp	(working copy)
@@ -1712,7 +1712,15 @@
 
 					if (LocalKey==KEY_SHIFTF4)
 					{
-						int Pos=FindFile(strFileName);
+						int Pos=-1;
+						if (m_hPlugin->pPlugin->GetGUID() == Global->Opt->KnownIDs.Netbox.Id)
+						{
+							Pos=FindFile(strFileName,FALSE,TRUE);
+						}
+						else
+						{
+							Pos=FindFile(strFileName);
+						}
 
 						if (Pos!=-1)
 							CurPtr = &m_ListData[Pos];
@@ -3352,7 +3360,7 @@
 }
 
 
-long FileList::FindFile(const string& Name,BOOL OnlyPartName)
+long FileList::FindFile(const string& Name,BOOL OnlyPartName,BOOL CaseSensitive)
 {
 	long II = -1;
 	for (long I=0; I < static_cast<int>(m_ListData.size()); I++)
@@ -3362,7 +3370,7 @@
 		if (Name == CurPtrName)
 			return I;
 
-		if (II < 0 && !StrCmpI(Name.data(),CurPtrName))
+		if (II < 0 && !CaseSensitive && !StrCmpI(Name.data(),CurPtrName))
 			II = I;
 	}
 
Index: filelist.hpp
===================================================================
--- filelist.hpp	(revision 13432)
+++ filelist.hpp	(working copy)
@@ -284,7 +284,7 @@
 	virtual bool GetPlainString(string& Dest, int ListPos) const override;
 	virtual int GoToFile(long idxItem) override;
 	virtual int GoToFile(const string& Name,BOOL OnlyPartName=FALSE) override;
-	virtual long FindFile(const string& Name,BOOL OnlyPartName=FALSE) override;
+	virtual long FindFile(const string& Name,BOOL OnlyPartName=FALSE,BOOL CaseSensitive=FALSE) override;
 	virtual int IsSelected(const string& Name) override;
 	virtual int IsSelected(size_t idxItem) override;
 	virtual long FindFirst(const string& Name) override;
Index: panel.hpp
===================================================================
--- panel.hpp	(revision 13432)
+++ panel.hpp	(working copy)
@@ -279,7 +279,7 @@
 	virtual bool GetPlainString(string& Dest, int ListPos) const { return false; }
 	virtual int GoToFile(long idxItem) {return TRUE;}
 	virtual int GoToFile(const string& Name,BOOL OnlyPartName=FALSE) {return TRUE;}
-	virtual long FindFile(const string& Name,BOOL OnlyPartName=FALSE) {return -1;}
+	virtual long FindFile(const string& Name,BOOL OnlyPartName=FALSE,BOOL CaseSensitive=FALSE) {return -1;}
 	virtual int IsSelected(const string& Name) {return FALSE;}
 	virtual int IsSelected(size_t indItem) {return FALSE;}
 	virtual long FindFirst(const string& Name) {return -1;}
Index: treelist.cpp
===================================================================
--- treelist.cpp	(revision 13432)
+++ treelist.cpp	(working copy)
@@ -2074,7 +2074,7 @@
 	return GoToFile(FindFile(Name,OnlyPartName));
 }
 
-long TreeList::FindFile(const string& Name,BOOL OnlyPartName)
+long TreeList::FindFile(const string& Name,BOOL OnlyPartName,BOOL CaseSensitive)
 {
 	for (size_t i=0; i < m_ListData.size(); ++i)
 	{
Index: treelist.hpp
===================================================================
--- treelist.hpp	(revision 13432)
+++ treelist.hpp	(working copy)
@@ -112,7 +112,7 @@
 	virtual void MoveToMouse(const MOUSE_EVENT_RECORD *MouseEvent) override;
 	virtual bool GetPlainString(string& Dest, int ListPos) const override;
 	virtual int GoToFile(long idxItem) override;
-	virtual long FindFile(const string& Name, BOOL OnlyPartName = FALSE) override;
+	virtual long FindFile(const string& Name, BOOL OnlyPartName = FALSE,BOOL CaseSensitive = FALSE) override;
 	virtual long FindFirst(const string& Name) override;
 	virtual long FindNext(int StartPos, const string& Name) override;
 	virtual size_t GetFileCount() const override { return m_ListData.size(); }

michael.lukashov

2015-10-24 16:55

developer   bugnote:0014014

Так будет какой-нибудь отклик?

Issue History

Date Modified Username Field Change
2015-10-04 13:38 michael.lukashov New Issue
2015-10-04 13:38 michael.lukashov File Added: case-insensitive-findfile-for-netbox.patch
2015-10-24 16:55 michael.lukashov Note Added: 0014014