Skip to content

Commit 1305a51

Browse files
committed
dir.so: Update to current observer version
1 parent aecb2b7 commit 1305a51

File tree

5 files changed

+80
-36
lines changed

5 files changed

+80
-36
lines changed

Dir_b3/ModuleDef.h

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66
// Extract progress callbacks
77
typedef int (CALLBACK *ExtractProgressFunc)(HANDLE, __int64);
88

9+
#pragma pack(push, 1)
10+
911
struct ExtractProcessCallbacks
1012
{
1113
HANDLE signalContext;
1214
ExtractProgressFunc FileProgress;
1315
};
1416

15-
#define ACTUAL_API_VERSION 3
17+
#define ACTUAL_API_VERSION 6
1618
#define STORAGE_FORMAT_NAME_MAX_LEN 32
1719
#define STORAGE_PARAM_MAX_LEN 64
1820

@@ -26,45 +28,63 @@ struct StorageGeneralInfo
2628

2729
struct StorageOpenParams
2830
{
31+
size_t StructSize;
2932
const wchar_t* FilePath;
3033
const char* Password;
34+
const void* Data;
35+
size_t DataSize;
3136
};
3237

3338
struct StorageItemInfo
3439
{
35-
DWORD Attributes;
3640
__int64 Size;
41+
__int64 PackedSize;
42+
DWORD Attributes;
3743
FILETIME CreationTime;
3844
FILETIME ModificationTime;
45+
WORD NumHardlinks;
46+
wchar_t Owner[64];
3947
wchar_t Path[1024];
4048
};
4149

4250
struct ExtractOperationParams
4351
{
44-
int item;
45-
int flags;
46-
const wchar_t* destFilePath;
47-
ExtractProcessCallbacks callbacks;
52+
int ItemIndex;
53+
int Flags;
54+
const wchar_t* DestPath;
55+
const char* Password;
56+
ExtractProcessCallbacks Callbacks;
4857
};
4958

50-
typedef int (MODULE_EXPORT *OpenStorageFunc)(StorageOpenParams, HANDLE*, StorageGeneralInfo*);
51-
typedef void (MODULE_EXPORT *CloseStorageFunc)(HANDLE);
52-
typedef int (MODULE_EXPORT *GetItemFunc)(HANDLE, int, StorageItemInfo*);
53-
typedef int (MODULE_EXPORT *ExtractFunc)(HANDLE, ExtractOperationParams params);
59+
typedef int (MODULE_EXPORT *OpenStorageFunc)(StorageOpenParams params, HANDLE *storage, StorageGeneralInfo *info);
60+
typedef int (MODULE_EXPORT *PrepareFilesFunc)(HANDLE storage);
61+
typedef void (MODULE_EXPORT *CloseStorageFunc)(HANDLE storage);
62+
typedef int (MODULE_EXPORT *GetItemFunc)(HANDLE storage, int item_index, StorageItemInfo* item_info);
63+
typedef int (MODULE_EXPORT *ExtractFunc)(HANDLE storage, ExtractOperationParams params);
64+
65+
struct module_cbs
66+
{
67+
OpenStorageFunc OpenStorage;
68+
CloseStorageFunc CloseStorage;
69+
GetItemFunc GetItem;
70+
ExtractFunc ExtractItem;
71+
PrepareFilesFunc PrepareFiles;
72+
};
5473

5574
struct ModuleLoadParameters
5675
{
5776
//IN
77+
size_t StructSize;
5878
const wchar_t* Settings;
5979
//OUT
80+
GUID ModuleId;
6081
DWORD ModuleVersion;
6182
DWORD ApiVersion;
62-
OpenStorageFunc OpenStorage;
63-
CloseStorageFunc CloseStorage;
64-
GetItemFunc GetItem;
65-
ExtractFunc ExtractItem;
83+
module_cbs ApiFuncs;
6684
};
6785

86+
#pragma pack(pop)
87+
6888
// Function that should be exported from modules
6989
typedef int (MODULE_EXPORT *LoadSubModuleFunc)(ModuleLoadParameters*);
7090
typedef void (MODULE_EXPORT *UnloadSubModuleFunc)(void);
@@ -88,13 +108,6 @@ typedef void (MODULE_EXPORT *UnloadSubModuleFunc)(void);
88108
#define SER_ERROR_READ 2
89109
#define SER_ERROR_SYSTEM 3
90110
#define SER_USERABORT 4
91-
92-
// Extract error reactions
93-
#define EEN_ABORT 1
94-
#define EEN_RETRY 2
95-
#define EEN_SKIP 3
96-
#define EEN_SKIPALL 4
97-
#define EEN_CONTINUE 5
98-
#define EEN_CONTINUESILENT 6
111+
#define SER_PASSWORD_REQUIRED 5
99112

100113
#endif

Dir_b3/_Dir.sln

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dir_b3", "dir_b3.vcxproj",
77
EndProject
88
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dir_fmt_exe", "dir_fmt_exe.vcxproj", "{2C08961C-89C1-4263-AA60-820B4C82B4E3}"
99
EndProject
10+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dir_so", "dir_so.vcxproj", "{54892E57-F71A-4E2D-8132-B717B3FD7649}"
11+
EndProject
1012
Global
1113
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1214
Debug|Win32 = Debug|Win32
@@ -29,6 +31,14 @@ Global
2931
{2C08961C-89C1-4263-AA60-820B4C82B4E3}.Release|Win32.ActiveCfg = Release|Win32
3032
{2C08961C-89C1-4263-AA60-820B4C82B4E3}.Release|Win32.Build.0 = Release|Win32
3133
{2C08961C-89C1-4263-AA60-820B4C82B4E3}.Release|x64.ActiveCfg = Release|Win32
34+
{54892E57-F71A-4E2D-8132-B717B3FD7649}.Debug|Win32.ActiveCfg = Debug|Win32
35+
{54892E57-F71A-4E2D-8132-B717B3FD7649}.Debug|Win32.Build.0 = Debug|Win32
36+
{54892E57-F71A-4E2D-8132-B717B3FD7649}.Debug|x64.ActiveCfg = Debug|x64
37+
{54892E57-F71A-4E2D-8132-B717B3FD7649}.Debug|x64.Build.0 = Debug|x64
38+
{54892E57-F71A-4E2D-8132-B717B3FD7649}.Release|Win32.ActiveCfg = Release|Win32
39+
{54892E57-F71A-4E2D-8132-B717B3FD7649}.Release|Win32.Build.0 = Release|Win32
40+
{54892E57-F71A-4E2D-8132-B717B3FD7649}.Release|x64.ActiveCfg = Release|x64
41+
{54892E57-F71A-4E2D-8132-B717B3FD7649}.Release|x64.Build.0 = Release|x64
3242
EndGlobalSection
3343
GlobalSection(SolutionProperties) = preSolution
3444
HideSolutionNode = FALSE

Dir_b3/dir.cpp

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
2) MultiArc module (*.fmt)
66
* ************************** */
77

8+
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
9+
#include <stdlib.h>
810
#include "plugin.hpp"
911
#include "fmt.hpp"
1012
#include <crtdbg.h>
@@ -117,7 +119,7 @@ struct DirInfo
117119
return Ret;
118120
};
119121

120-
bool Compare(char *Str, char *Mask, bool NonEng = false, int Len=-1)
122+
bool Compare(const char *Str, const char *Mask, bool NonEng = false, int Len=-1)
121123
{
122124
int nCmp = (Len==-1) ? lstrlenA(Mask) : Len;
123125

@@ -218,10 +220,10 @@ struct DirInfo
218220

219221
int getArcItem(struct PluginPanelItem *Item, struct ArcItemInfo *Info)
220222
{
221-
static char *LabelHeader[]={ " Òîì", " Volume in" };
222-
static char *SerialHeader[]={ " Ñåðèéíûé", " Volume Serial" };
223-
static char *DirHeader[]={ " Ñîäåðæèìîå ïàïêè", " Directory of" };
224-
static char *DirEndHeader[]={ " Âñåãî ôàéëîâ:", " Total Files" };
223+
static const char *LabelHeader[]={ " Òîì", " Volume in" };
224+
static const char *SerialHeader[]={ " Ñåðèéíûé", " Volume Serial" };
225+
static const char *DirHeader[]={ " Ñîäåðæèìîå ïàïêè", " Directory of" };
226+
static const char *DirEndHeader[]={ " Âñåãî ôàéëîâ:", " Total Files" };
225227
static char DirID[]="<DIR>";
226228
static char JunID[]="<JUNCTION>";
227229
//char* Buf = (char*)malloc(4096);
@@ -412,7 +414,7 @@ struct DirInfo
412414
BOOL WINAPI _export IsArchive(char *Name, const unsigned char *Data, int DataSize)
413415
{
414416
_ASSERTE(gpCur!=NULL);
415-
static char *ID[]={ " Òîì â óñòðîéñòâå ", " Volume in drive ", "Queued to drive " };
417+
static const char *ID[]={ " Òîì â óñòðîéñòâå ", " Volume in drive ", "Queued to drive " };
416418
BOOL lbRc =
417419
gpCur->Compare((char *)Data, ID[0], true, min(lstrlen(ID[0]), DataSize)) ||
418420
gpCur->Compare((char *)Data, ID[1], false, min(lstrlen(ID[1]), DataSize)) ||
@@ -543,18 +545,29 @@ int MODULE_EXPORT ExtractItem(HANDLE storage, ExtractOperationParams params)
543545
return SER_ERROR_SYSTEM;
544546
}
545547

548+
int MODULE_EXPORT PrepareFiles(HANDLE storage)
549+
{
550+
return SER_ERROR_SYSTEM;
551+
}
552+
546553
//////////////////////////////////////////////////////////////////////////
547554
// Exported Functions
548555
//////////////////////////////////////////////////////////////////////////
549556

557+
// {C0651C24-3DCA-441C-8A42-C73664F942CF}
558+
static const GUID MODULE_GUID = { 0xc0651c24, 0x3dca, 0x441c, { 0x8a, 0x42, 0xc7, 0x36, 0x64, 0xf9, 0x42, 0xcf } };;
559+
550560
int MODULE_EXPORT LoadSubModule(ModuleLoadParameters* LoadParams)
551561
{
562+
LoadParams->ModuleId = MODULE_GUID;
552563
LoadParams->ModuleVersion = MAKEMODULEVERSION(1, 0);
553564
LoadParams->ApiVersion = ACTUAL_API_VERSION;
554-
LoadParams->OpenStorage = OpenStorage;
555-
LoadParams->CloseStorage = CloseStorage;
556-
LoadParams->GetItem = GetStorageItem;
557-
LoadParams->ExtractItem = ExtractItem;
565+
566+
LoadParams->ApiFuncs.OpenStorage = OpenStorage;
567+
LoadParams->ApiFuncs.CloseStorage = CloseStorage;
568+
LoadParams->ApiFuncs.GetItem = GetStorageItem;
569+
LoadParams->ApiFuncs.ExtractItem = ExtractItem;
570+
LoadParams->ApiFuncs.PrepareFiles = PrepareFiles;
558571

559572
return TRUE;
560573
}

Dir_b3/dir_b3.rc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ END
4949
//
5050

5151
VS_VERSION_INFO VERSIONINFO
52-
FILEVERSION 3,0,0,5
52+
FILEVERSION 3,0,0,6
5353
PRODUCTVERSION 1,71,0,0
5454
FILEFLAGSMASK 0x0L
5555
#ifdef _DEBUG
@@ -67,7 +67,7 @@ BEGIN
6767
BEGIN
6868
VALUE "Comments", "Current developer: [email protected]"
6969
VALUE "FileDescription", "DIR XP/2003/Vista/7 parse for FAR Manager"
70-
VALUE "FileVersion", "3.0 build 5"
70+
VALUE "FileVersion", "3.0 build 6"
7171
VALUE "InternalName", "Dir"
7272
VALUE "LegalCopyright", "� Alexander Arefiev 2001, � Maximus5 2012"
7373
VALUE "OriginalFilename", "dir.so"

Dir_b3/dir_so.vcxproj

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<Keyword>Win32Proj</Keyword>
4242
<ProjectGuid>{54892e57-f71a-4e2d-8132-b717b3fd7649}</ProjectGuid>
4343
<RootNamespace>dirso</RootNamespace>
44-
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
44+
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
4545
</PropertyGroup>
4646
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
4747
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -53,7 +53,7 @@
5353
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
5454
<ConfigurationType>DynamicLibrary</ConfigurationType>
5555
<UseDebugLibraries>false</UseDebugLibraries>
56-
<PlatformToolset>v142</PlatformToolset>
56+
<PlatformToolset>v141_xp</PlatformToolset>
5757
<WholeProgramOptimization>true</WholeProgramOptimization>
5858
<CharacterSet>MultiByte</CharacterSet>
5959
</PropertyGroup>
@@ -93,24 +93,28 @@
9393
<OutDir>$(Configuration)\</OutDir>
9494
<TargetName>dir</TargetName>
9595
<IntDir>obj\$(Platform)\$(Configuration)\</IntDir>
96+
<TargetExt>.so</TargetExt>
9697
</PropertyGroup>
9798
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
9899
<LinkIncremental>false</LinkIncremental>
99100
<OutDir>$(Configuration)\</OutDir>
100101
<TargetName>dir</TargetName>
101102
<IntDir>obj\$(Platform)\$(Configuration)\</IntDir>
103+
<TargetExt>.so</TargetExt>
102104
</PropertyGroup>
103105
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
104106
<LinkIncremental>true</LinkIncremental>
105107
<TargetName>dir64</TargetName>
106108
<OutDir>$(Configuration)\</OutDir>
107109
<IntDir>obj\$(Platform)\$(Configuration)\</IntDir>
110+
<TargetExt>.so</TargetExt>
108111
</PropertyGroup>
109112
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
110113
<LinkIncremental>false</LinkIncremental>
111114
<TargetName>dir64</TargetName>
112115
<OutDir>$(Configuration)\</OutDir>
113116
<IntDir>obj\$(Platform)\$(Configuration)\</IntDir>
117+
<TargetExt>.so</TargetExt>
114118
</PropertyGroup>
115119
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
116120
<ClCompile>
@@ -128,6 +132,7 @@
128132
<SubSystem>Windows</SubSystem>
129133
<GenerateDebugInformation>true</GenerateDebugInformation>
130134
<EnableUAC>false</EnableUAC>
135+
<ModuleDefinitionFile>dir_b3.def</ModuleDefinitionFile>
131136
</Link>
132137
</ItemDefinitionGroup>
133138
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -150,6 +155,7 @@
150155
<OptimizeReferences>true</OptimizeReferences>
151156
<GenerateDebugInformation>true</GenerateDebugInformation>
152157
<EnableUAC>false</EnableUAC>
158+
<ModuleDefinitionFile>dir_b3.def</ModuleDefinitionFile>
153159
</Link>
154160
</ItemDefinitionGroup>
155161
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -168,6 +174,7 @@
168174
<SubSystem>Windows</SubSystem>
169175
<GenerateDebugInformation>true</GenerateDebugInformation>
170176
<EnableUAC>false</EnableUAC>
177+
<ModuleDefinitionFile>dir_b3.def</ModuleDefinitionFile>
171178
</Link>
172179
</ItemDefinitionGroup>
173180
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -190,6 +197,7 @@
190197
<OptimizeReferences>true</OptimizeReferences>
191198
<GenerateDebugInformation>true</GenerateDebugInformation>
192199
<EnableUAC>false</EnableUAC>
200+
<ModuleDefinitionFile>dir_b3.def</ModuleDefinitionFile>
193201
</Link>
194202
</ItemDefinitionGroup>
195203
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

0 commit comments

Comments
 (0)