Skip to content

Commit

Permalink
1. 0003361: Запрашиваются админ. права для переименования файла
Browse files Browse the repository at this point in the history
   Суть не в запросе прав, а в поломанном копире. Часть 1, не факт, что поможет.

2. Если System.WipeSymbol установить в -1, то для вайпа будут использоваться случайные значения.

3. Рефакторинг.
  • Loading branch information
alabuzhev committed Dec 5, 2016
1 parent fcd7ec5 commit a33a248
Show file tree
Hide file tree
Showing 47 changed files with 421 additions and 359 deletions.
1 change: 1 addition & 0 deletions far/FarEng.hlf.m4
Expand Up @@ -5751,6 +5751,7 @@ $ #far:config Interface.ViewerTitleFormat, Interface.EditorTitleFormat#
$ #far:config System.WipeSymbol#
Параметр позволяет задать код символа-заполнителя для операции "~Уничтожить файл~@DeleteFile@" (Alt-Del).
Использует младший байт параметра.
If parameter is set to -1, random values will be used.

По умолчанию значение = 0.

Expand Down
2 changes: 2 additions & 0 deletions far/FarRus.hlf.m4
Expand Up @@ -5882,8 +5882,10 @@ $ #far:config Interface.ViewerTitleFormat, Interface.EditorTitleFormat#
$ #far:config System.WipeSymbol#
Параметр позволяет задать код символа-заполнителя для операции "~Уничтожить файл~@DeleteFile@" (Alt-Del).
Использует младший байт параметра.
Если параметр установлен в -1, будут использоваться случайные значения.

По умолчанию значение = 0.


Изменение этого параметра возможно через ~far:config~@FarConfig@

Expand Down
61 changes: 34 additions & 27 deletions far/PluginA.cpp
Expand Up @@ -57,6 +57,8 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#define OLDFAR_TO_FAR_MAP(x) { oldfar::x, x }

#define DECLARE_PLUGIN_FUNCTION(name, signature) DECLARE_GEN_PLUGIN_FUNCTION(name, false, signature)

DECLARE_PLUGIN_FUNCTION(iClosePanel, void (WINAPI*)(HANDLE hPlugin))
DECLARE_PLUGIN_FUNCTION(iCompare, int (WINAPI*)(HANDLE hPlugin, const oldfar::PluginPanelItem *Item1, const oldfar::PluginPanelItem *Item2, unsigned int Mode))
DECLARE_PLUGIN_FUNCTION(iConfigure, int (WINAPI*)(int ItemNumber))
Expand Down Expand Up @@ -85,6 +87,8 @@ DECLARE_PLUGIN_FUNCTION(iSetStartupInfo, void (WINAPI*)(const oldfar::Plu
DECLARE_PLUGIN_FUNCTION(iProcessViewerEvent, int (WINAPI*)(int Event, void *Param))
DECLARE_PLUGIN_FUNCTION(iProcessDialogEvent, int (WINAPI*)(int Event, void *Param))

#undef DECLARE_PLUGIN_FUNCTION

static auto UnicodeToOEM(const wchar_t* src, char* dst, size_t lendst)
{
return static_cast<int>(encoding::oem::get_bytes(src, wcslen(src) + 1, dst, lendst));
Expand Down Expand Up @@ -5108,7 +5112,7 @@ class PluginA: public Plugin

virtual bool SetStartupInfo(PluginStartupInfo*) override
{
ExecuteStruct<iSetStartupInfo> es;
AnsiExecuteStruct<iSetStartupInfo> es;
if (has(es) && !Global->ProcessException)
{
static constexpr oldfar::FarStandardFunctions StandardFunctions =
Expand Down Expand Up @@ -5228,7 +5232,7 @@ class PluginA: public Plugin

CheckScreenLock();

ExecuteStruct<iOpen> es;
AnsiExecuteStruct<iOpen> es;

if (Load() && has(es) && !Global->ProcessException)
{
Expand Down Expand Up @@ -5316,7 +5320,7 @@ class PluginA: public Plugin

virtual void ClosePanel(ClosePanelInfo* Info) override
{
ExecuteStruct<iClosePanel> es;
AnsiExecuteStruct<iClosePanel> es;
if (has(es) && !Global->ProcessException)
{
ExecuteFunction(es, Info->hPanel);
Expand All @@ -5328,7 +5332,7 @@ class PluginA: public Plugin
{
*pi = {};

ExecuteStruct<iGetPluginInfo> es;
AnsiExecuteStruct<iGetPluginInfo> es;
if (has(es) && !Global->ProcessException)
{
oldfar::PluginInfo InfoA = { sizeof(InfoA) };
Expand All @@ -5348,7 +5352,7 @@ class PluginA: public Plugin
{
Info->StructSize = sizeof(OpenPanelInfo);

ExecuteStruct<iGetOpenPanelInfo> es;
AnsiExecuteStruct<iGetOpenPanelInfo> es;
if (has(es) && !Global->ProcessException)
{
oldfar::OpenPanelInfo InfoA = {};
Expand All @@ -5359,7 +5363,7 @@ class PluginA: public Plugin

virtual int GetFindData(GetFindDataInfo* Info) override
{
ExecuteStruct<iGetFindData> es;
AnsiExecuteStruct<iGetFindData> es;
if (has(es) && !Global->ProcessException)
{
pFDPanelItemA = nullptr;
Expand All @@ -5383,7 +5387,7 @@ class PluginA: public Plugin
{
FreeUnicodePanelItem(Info->PanelItem, Info->ItemsNumber);

ExecuteStruct<iFreeFindData> es;
AnsiExecuteStruct<iFreeFindData> es;
if (has(es) && !Global->ProcessException && pFDPanelItemA)
{
ExecuteFunction(es, Info->hPanel, pFDPanelItemA, static_cast<int>(Info->ItemsNumber));
Expand All @@ -5393,7 +5397,7 @@ class PluginA: public Plugin

virtual int GetVirtualFindData(GetVirtualFindDataInfo* Info) override
{
ExecuteStruct<iGetVirtualFindData> es;
AnsiExecuteStruct<iGetVirtualFindData> es;
if (has(es) && !Global->ProcessException)
{
pVFDPanelItemA = nullptr;
Expand All @@ -5417,7 +5421,7 @@ class PluginA: public Plugin
{
FreeUnicodePanelItem(Info->PanelItem, Info->ItemsNumber);

ExecuteStruct<iFreeVirtualFindData> es;
AnsiExecuteStruct<iFreeVirtualFindData> es;
if (has(es) && !Global->ProcessException && pVFDPanelItemA)
{
ExecuteFunction(es, Info->hPanel, pVFDPanelItemA, static_cast<int>(Info->ItemsNumber));
Expand All @@ -5427,7 +5431,7 @@ class PluginA: public Plugin

virtual int SetDirectory(SetDirectoryInfo* Info) override
{
ExecuteStruct<iSetDirectory> es;
AnsiExecuteStruct<iSetDirectory> es;
if (has(es) && !Global->ProcessException)
{
std::unique_ptr<char[]> DirA(UnicodeToAnsi(Info->Dir));
Expand All @@ -5440,7 +5444,7 @@ class PluginA: public Plugin

virtual int GetFiles(GetFilesInfo* Info) override
{
ExecuteStruct<iGetFiles> es(-1);
AnsiExecuteStruct<iGetFiles> es(-1);
if (has(es) && !Global->ProcessException)
{
const auto PanelItemA = ConvertPanelItemsArrayToAnsi(Info->PanelItem, Info->ItemsNumber);
Expand All @@ -5459,7 +5463,7 @@ class PluginA: public Plugin

virtual int PutFiles(PutFilesInfo* Info) override
{
ExecuteStruct<iPutFiles> es(-1);
AnsiExecuteStruct<iPutFiles> es(-1);
if (has(es) && !Global->ProcessException)
{
const auto PanelItemA = ConvertPanelItemsArrayToAnsi(Info->PanelItem, Info->ItemsNumber);
Expand All @@ -5473,7 +5477,7 @@ class PluginA: public Plugin

virtual int DeleteFiles(DeleteFilesInfo* Info) override
{
ExecuteStruct<iDeleteFiles> es;
AnsiExecuteStruct<iDeleteFiles> es;
if (has(es) && !Global->ProcessException)
{
const auto PanelItemA = ConvertPanelItemsArrayToAnsi(Info->PanelItem, Info->ItemsNumber);
Expand All @@ -5487,7 +5491,7 @@ class PluginA: public Plugin

virtual int MakeDirectory(MakeDirectoryInfo* Info) override
{
ExecuteStruct<iMakeDirectory> es(-1);
AnsiExecuteStruct<iMakeDirectory> es(-1);
if (has(es) && !Global->ProcessException)
{
char NameA[oldfar::NM];
Expand All @@ -5504,7 +5508,7 @@ class PluginA: public Plugin

virtual int ProcessHostFile(ProcessHostFileInfo* Info) override
{
ExecuteStruct<iProcessHostFile> es;
AnsiExecuteStruct<iProcessHostFile> es;
if (has(es) && !Global->ProcessException)
{
const auto PanelItemA = ConvertPanelItemsArrayToAnsi(Info->PanelItem, Info->ItemsNumber);
Expand All @@ -5518,7 +5522,7 @@ class PluginA: public Plugin

virtual int SetFindList(SetFindListInfo* Info) override
{
ExecuteStruct<iSetFindList> es;
AnsiExecuteStruct<iSetFindList> es;
if (has(es) && !Global->ProcessException)
{
const auto PanelItemA = ConvertPanelItemsArrayToAnsi(Info->PanelItem, Info->ItemsNumber);
Expand All @@ -5530,7 +5534,7 @@ class PluginA: public Plugin

virtual int Configure(ConfigureInfo* Info) override
{
ExecuteStruct<iConfigure> es;
AnsiExecuteStruct<iConfigure> es;
if (Load() && has(es) && !Global->ProcessException)
{
ExecuteFunction(es, Info->Guid->Data1);
Expand All @@ -5540,7 +5544,7 @@ class PluginA: public Plugin

virtual void ExitFAR(ExitInfo*) override
{
ExecuteStruct<iExitFAR> es;
AnsiExecuteStruct<iExitFAR> es;
if (has(es) && !Global->ProcessException)
{
// ExitInfo ignored for ansi plugins
Expand All @@ -5550,7 +5554,7 @@ class PluginA: public Plugin

virtual int ProcessPanelInput(ProcessPanelInputInfo* Info) override
{
ExecuteStruct<iProcessPanelInput> es;
AnsiExecuteStruct<iProcessPanelInput> es;
if (has(es) && !Global->ProcessException)
{
int VirtKey;
Expand All @@ -5573,7 +5577,7 @@ class PluginA: public Plugin

virtual int ProcessPanelEvent(ProcessPanelEventInfo* Info) override
{
ExecuteStruct<iProcessPanelEvent> es;
AnsiExecuteStruct<iProcessPanelEvent> es;
if (has(es) && !Global->ProcessException)
{
auto Param = Info->Param;
Expand All @@ -5592,7 +5596,7 @@ class PluginA: public Plugin

virtual int ProcessEditorEvent(ProcessEditorEventInfo* Info) override
{
ExecuteStruct<iProcessEditorEvent> es;
AnsiExecuteStruct<iProcessEditorEvent> es;
if (Load() && has(es) && !Global->ProcessException)
{
switch (Info->Event)
Expand All @@ -5613,7 +5617,7 @@ class PluginA: public Plugin

virtual int Compare(CompareInfo* Info) override
{
ExecuteStruct<iCompare> es(-2);
AnsiExecuteStruct<iCompare> es(-2);
if (has(es) && !Global->ProcessException)
{
const auto Item1A = ConvertPanelItemsArrayToAnsi(Info->Item1, 1);
Expand All @@ -5627,7 +5631,7 @@ class PluginA: public Plugin

virtual int ProcessEditorInput(ProcessEditorInputInfo* Info) override
{
ExecuteStruct<iProcessEditorInput> es;
AnsiExecuteStruct<iProcessEditorInput> es;
if (Load() && has(es) && !Global->ProcessException)
{
const INPUT_RECORD *Ptr = &Info->Rec;
Expand All @@ -5645,7 +5649,7 @@ class PluginA: public Plugin

virtual int ProcessViewerEvent(ProcessViewerEventInfo* Info) override
{
ExecuteStruct<iProcessViewerEvent> es;
AnsiExecuteStruct<iProcessViewerEvent> es;
if (Load() && has(es) && !Global->ProcessException)
{
switch (Info->Event)
Expand All @@ -5664,7 +5668,7 @@ class PluginA: public Plugin

virtual int ProcessDialogEvent(ProcessDialogEventInfo* Info) override
{
ExecuteStruct<iProcessDialogEvent> es;
AnsiExecuteStruct<iProcessDialogEvent> es;
if (Load() && has(es) && !Global->ProcessException)
{
ExecuteFunction(es, Info->Event, Info->Param);
Expand Down Expand Up @@ -5707,7 +5711,7 @@ class PluginA: public Plugin

virtual void* OpenFilePlugin(const wchar_t *Name, const unsigned char *Data, size_t DataSize, int) override
{
ExecuteStruct<iOpenFilePlugin> es;
AnsiExecuteStruct<iOpenFilePlugin> es;
if (Load() && has(es) && !Global->ProcessException)
{
std::unique_ptr<char[]> NameA(UnicodeToAnsi(Name));
Expand All @@ -5718,7 +5722,7 @@ class PluginA: public Plugin

virtual bool CheckMinFarVersion() override
{
ExecuteStruct<iGetMinFarVersion> es;
AnsiExecuteStruct<iGetMinFarVersion> es;
if (has(es) && !Global->ProcessException)
{
ExecuteFunction(es);
Expand Down Expand Up @@ -5984,6 +5988,9 @@ class PluginA: public Plugin
std::vector<std::string> m_AnsiMessages;
};

template<EXPORTS_ENUM ExportId>
using AnsiExecuteStruct = ExecuteStruct<ExportId, false>;

PluginInfo PI;
OpenPanelInfo OPI;

Expand Down
9 changes: 9 additions & 0 deletions far/changelog
@@ -1,3 +1,12 @@
drkns 06.12.2016 00:43:52 +0200 - build 4866

1. 0003361: Запрашиваются админ. права для переименования файла
Суть не в запросе прав, а в поломанном копире. Часть 1, не факт, что поможет.

2. Если System.WipeSymbol установить в -1, то для вайпа будут использоваться случайные значения.

3. Рефакторинг.

svs 02.12.2016 12:10:47 +0300 - build 4865

1. SQLite 3.15.2
Expand Down
17 changes: 9 additions & 8 deletions far/colormix.cpp
Expand Up @@ -73,10 +73,10 @@ WORD FarColorToConsoleColor(const FarColor& Color)

enum console_mask
{
BlueMask = 1,
GreenMask = 2,
RedMask = 4,
IntensityMask = 8,
BlueMask = bit(0),
GreenMask = bit(1),
RedMask = bit(2),
IntensityMask = bit(3),
};

for (auto& i: data)
Expand All @@ -103,7 +103,7 @@ WORD FarColorToConsoleColor(const FarColor& Color)
{
int* p[] = { &R, &G, &B };
size_t IntenseCount = 0;
std::for_each(RANGE(p, component)
for (auto& component : p)
{
if(InRange(0, *component, 63))
{
Expand All @@ -118,17 +118,18 @@ WORD FarColorToConsoleColor(const FarColor& Color)
*component = 255;
++IntenseCount;
}
});
}

// eliminate mixed intensity
if(IntenseCount > 0 && IntenseCount < 3)
{
std::for_each(RANGE(p, component)
for(auto& component: p)
{
if(*component == 128)
{
*component = IntenseCount==1? 0 : 255;
}
});
}
}

const auto& ToMask = [](size_t component, console_mask mask) { return component ? mask : 0; };
Expand Down

0 comments on commit a33a248

Please sign in to comment.