Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pavlov <ipavlov@users.sourceforge.net>2007-08-27 04:00:00 +0400
committerKornel LesiƄski <kornel@geekhood.net>2016-05-28 02:15:54 +0300
commit051769bbc577aeede90558b6ab5c9be187940ca0 (patch)
treee6330cb80f2d4a526d8aa27812528e053b0cda90 /CPP/7zip/UI/Far
parent33ccab7e728a996800e166d849fe1e92a17e1afe (diff)
4.53 beta
Diffstat (limited to 'CPP/7zip/UI/Far')
-rwxr-xr-xCPP/7zip/UI/Far/ExtractEngine.cpp2
-rwxr-xr-xCPP/7zip/UI/Far/ExtractEngine.h2
-rwxr-xr-xCPP/7zip/UI/Far/Far.dsp8
-rwxr-xr-xCPP/7zip/UI/Far/FarPlugin.h5
-rwxr-xr-xCPP/7zip/UI/Far/Messages.h9
-rwxr-xr-xCPP/7zip/UI/Far/Plugin.cpp196
-rwxr-xr-xCPP/7zip/UI/Far/Plugin.h4
-rwxr-xr-xCPP/7zip/UI/Far/UpdateCallback100.cpp5
-rwxr-xr-xCPP/7zip/UI/Far/UpdateCallback100.h1
-rwxr-xr-xCPP/7zip/UI/Far/makefile1
10 files changed, 131 insertions, 102 deletions
diff --git a/CPP/7zip/UI/Far/ExtractEngine.cpp b/CPP/7zip/UI/Far/ExtractEngine.cpp
index d9499a04..c6583aae 100755
--- a/CPP/7zip/UI/Far/ExtractEngine.cpp
+++ b/CPP/7zip/UI/Far/ExtractEngine.cpp
@@ -106,7 +106,7 @@ STDMETHODIMP CExtractCallBackImp::AskOverwrite(
return S_OK;
}
-STDMETHODIMP CExtractCallBackImp::PrepareOperation(const wchar_t *name, INT32 /* askExtractMode */, const UINT64 * /* position */)
+STDMETHODIMP CExtractCallBackImp::PrepareOperation(const wchar_t *name, bool /* isFolder */, INT32 /* askExtractMode */, const UINT64 * /* position */)
{
m_CurrentFilePath = name;
return S_OK;
diff --git a/CPP/7zip/UI/Far/ExtractEngine.h b/CPP/7zip/UI/Far/ExtractEngine.h
index ee17ff55..5cccf6ef 100755
--- a/CPP/7zip/UI/Far/ExtractEngine.h
+++ b/CPP/7zip/UI/Far/ExtractEngine.h
@@ -28,7 +28,7 @@ public:
const wchar_t *existName, const FILETIME *existTime, const UINT64 *existSize,
const wchar_t *newName, const FILETIME *newTime, const UINT64 *newSize,
INT32 *result);
- STDMETHOD (PrepareOperation)(const wchar_t *name, INT32 askExtractMode, const UINT64 *position);
+ STDMETHOD (PrepareOperation)(const wchar_t *name, bool isFolder, INT32 askExtractMode, const UINT64 *position);
STDMETHOD(MessageError)(const wchar_t *message);
STDMETHOD(SetOperationResult)(INT32 resultEOperationResult, bool encrypted);
diff --git a/CPP/7zip/UI/Far/Far.dsp b/CPP/7zip/UI/Far/Far.dsp
index 2cddd717..9856f41f 100755
--- a/CPP/7zip/UI/Far/Far.dsp
+++ b/CPP/7zip/UI/Far/Far.dsp
@@ -410,6 +410,14 @@ SOURCE=..\Common\OpenArchive.h
# End Source File
# Begin Source File
+SOURCE=..\..\Common\ProgressUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\Common\ProgressUtils.h
+# End Source File
+# Begin Source File
+
SOURCE=..\Common\PropIDUtils.cpp
# End Source File
# Begin Source File
diff --git a/CPP/7zip/UI/Far/FarPlugin.h b/CPP/7zip/UI/Far/FarPlugin.h
index f61bbcb4..a1c9715b 100755
--- a/CPP/7zip/UI/Far/FarPlugin.h
+++ b/CPP/7zip/UI/Far/FarPlugin.h
@@ -456,11 +456,12 @@ struct PluginInfo
char *CommandPrefix;
};
+const int kInfoPanelLineSize = 80;
struct InfoPanelLine
{
- char Text[80];
- char Data[80];
+ char Text[kInfoPanelLineSize];
+ char Data[kInfoPanelLineSize];
int Separator;
};
diff --git a/CPP/7zip/UI/Far/Messages.h b/CPP/7zip/UI/Far/Messages.h
index 7a36ab30..9d3060a1 100755
--- a/CPP/7zip/UI/Far/Messages.h
+++ b/CPP/7zip/UI/Far/Messages.h
@@ -46,6 +46,15 @@ enum EEnum
kBlock,
kComment,
kPosition,
+ kNumSubFolders,
+ kNumSubFiles,
+ kUnpackVer,
+ kVolume,
+ kIsVolume,
+ kOffset,
+ kLinks,
+ kNumBlocks,
+ kNumVolumes,
kGetPasswordTitle,
kEnterPasswordForFile,
diff --git a/CPP/7zip/UI/Far/Plugin.cpp b/CPP/7zip/UI/Far/Plugin.cpp
index fde53756..d0957a40 100755
--- a/CPP/7zip/UI/Far/Plugin.cpp
+++ b/CPP/7zip/UI/Far/Plugin.cpp
@@ -50,7 +50,7 @@ CPlugin::~CPlugin()
{
}
-static void MyGetFileTime(IFolderFolder *anArchiveFolder, UINT32 itemIndex,
+static void MyGetFileTime(IFolderFolder *anArchiveFolder, UInt32 itemIndex,
PROPID propID, FILETIME &fileTime)
{
NCOM::CPropVariant propVariant;
@@ -69,7 +69,7 @@ static void MyGetFileTime(IFolderFolder *anArchiveFolder, UINT32 itemIndex,
}
}
-void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UINT32 itemIndex)
+void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UInt32 itemIndex)
{
NCOM::CPropVariant propVariant;
if (_folder->GetProperty(itemIndex, kpidName, &propVariant) != S_OK)
@@ -103,13 +103,13 @@ void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UINT32 itemIndex)
if (_folder->GetProperty(itemIndex, kpidSize, &propVariant) != S_OK)
throw 271932;
- UINT64 length;
+ UInt64 length;
if (propVariant.vt == VT_EMPTY)
length = 0;
else
length = ::ConvertPropVariantToUInt64(propVariant);
- panelItem.FindData.nFileSizeLow = UINT32(length);
- panelItem.FindData.nFileSizeHigh = UINT32(length >> 32);
+ panelItem.FindData.nFileSizeLow = (UInt32)length;
+ panelItem.FindData.nFileSizeHigh = (UInt32)(length >> 32);
MyGetFileTime(_folder, itemIndex, kpidCreationTime, panelItem.FindData.ftCreationTime);
MyGetFileTime(_folder, itemIndex, kpidLastAccessTime, panelItem.FindData.ftLastAccessTime);
@@ -125,8 +125,8 @@ void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UINT32 itemIndex)
length = 0;
else
length = ::ConvertPropVariantToUInt64(propVariant);
- panelItem.PackSize = UINT32(length);
- panelItem.PackSizeHigh = UINT32(length >> 32);
+ panelItem.PackSize = UInt32(length);
+ panelItem.PackSizeHigh = UInt32(length >> 32);
panelItem.Flags = 0;
panelItem.NumberOfLinks = 0;
@@ -139,8 +139,6 @@ void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UINT32 itemIndex)
panelItem.Reserved[0] = 0;
panelItem.Reserved[1] = 0;
panelItem.Reserved[2] = 0;
-
-
}
int CPlugin::GetFindData(PluginPanelItem **panelItems,
@@ -151,22 +149,22 @@ int CPlugin::GetFindData(PluginPanelItem **panelItems,
{
/*
screenRestorer.Save();
- const char *aMsgItems[]=
+ const char *msgItems[]=
{
g_StartupInfo.GetMsgString(NMessageID::kWaitTitle),
g_StartupInfo.GetMsgString(NMessageID::kReadingList)
};
- g_StartupInfo.ShowMessage(0, NULL, aMsgItems,
- sizeof(aMsgItems) / sizeof(aMsgItems[0]), 0);
+ g_StartupInfo.ShowMessage(0, NULL, msgItems,
+ sizeof(msgItems) / sizeof(msgItems[0]), 0);
*/
}
- UINT32 numItems;
+ UInt32 numItems;
_folder->GetNumberOfItems(&numItems);
*panelItems = new PluginPanelItem[numItems];
try
{
- for(UINT32 i = 0; i < numItems; i++)
+ for (UInt32 i = 0; i < numItems; i++)
{
PluginPanelItem &panelItem = (*panelItems)[i];
ReadPluginPanelItem(panelItem, i);
@@ -185,8 +183,8 @@ int CPlugin::GetFindData(PluginPanelItem **panelItems,
void CPlugin::FreeFindData(struct PluginPanelItem *panelItems,
int itemsNumber)
{
- for(int i = 0; i < itemsNumber; i++)
- if(panelItems[i].Description != NULL)
+ for (int i = 0; i < itemsNumber; i++)
+ if (panelItems[i].Description != NULL)
delete []panelItems[i].Description;
delete []panelItems;
}
@@ -196,7 +194,7 @@ void CPlugin::EnterToDirectory(const UString &aDirName)
{
CMyComPtr<IFolderFolder> newFolder;
_folder->BindToFolder(aDirName, &newFolder);
- if(newFolder == NULL)
+ if (newFolder == NULL)
if (aDirName.IsEmpty())
return;
else
@@ -232,7 +230,7 @@ int CPlugin::SetDirectory(const char *aszDir, int /* opMode */)
}
UStringVector pathParts;
SplitPathToParts(path, pathParts);
- for(int i = 0; i < pathParts.Size(); i++)
+ for (int i = 0; i < pathParts.Size(); i++)
EnterToDirectory(pathParts[i]);
}
GetCurrentDir();
@@ -249,9 +247,10 @@ void CPlugin::GetPathParts(UStringVector &pathParts)
folderItem->BindToParentFolder(&newFolder);
if (newFolder == NULL)
break;
- CMyComBSTR name;
- folderItem->GetName(&name);
- pathParts.Insert(0, (const wchar_t *)name);
+ NCOM::CPropVariant prop;
+ if (folderItem->GetFolderProperty(kpidName, &prop) == S_OK)
+ if (prop.vt == VT_BSTR)
+ pathParts.Insert(0, (const wchar_t *)prop.bstrVal);
folderItem = newFolder;
}
}
@@ -304,16 +303,24 @@ static CPROPIDToName kPROPIDToName[] =
{ kpidGroup, NMessageID::kGroup },
{ kpidBlock, NMessageID::kBlock },
{ kpidComment, NMessageID::kComment },
- { kpidPosition, NMessageID::kPosition }
-
+ { kpidPosition, NMessageID::kPosition },
+ { kpidNumSubFolders, NMessageID::kNumSubFolders },
+ { kpidNumSubFiles, NMessageID::kNumSubFiles },
+ { kpidUnpackVer, NMessageID::kUnpackVer },
+ { kpidVolume, NMessageID::kVolume },
+ { kpidIsVolume, NMessageID::kIsVolume },
+ { kpidOffset, NMessageID::kOffset },
+ { kpidLinks, NMessageID::kLinks },
+ { kpidNumBlocks, NMessageID::kNumBlocks },
+ { kpidNumVolumes, NMessageID::kNumVolumes }
};
static const int kNumPROPIDToName = sizeof(kPROPIDToName) / sizeof(kPROPIDToName[0]);
static int FindPropertyToName(PROPID propID)
{
- for(int i = 0; i < kNumPROPIDToName; i++)
- if(kPROPIDToName[i].PropID == propID)
+ for (int i = 0; i < kNumPROPIDToName; i++)
+ if (kPROPIDToName[i].PropID == propID)
return i;
return -1;
}
@@ -353,8 +360,8 @@ static const int kNumPropertyIDInfos = sizeof(kPropertyIDInfos) /
static int FindPropertyInfo(PROPID propID)
{
- for(int i = 0; i < kNumPropertyIDInfos; i++)
- if(kPropertyIDInfos[i].PropID == propID)
+ for (int i = 0; i < kNumPropertyIDInfos; i++)
+ if (kPropertyIDInfos[i].PropID == propID)
return i;
return -1;
}
@@ -376,7 +383,7 @@ void CPlugin::AddColumn(PROPID propID)
int index = FindPropertyInfo(propID);
if (index >= 0)
{
- for(int i = 0; i < m_ProxyHandler->m_InternalProperties.Size(); i++)
+ for (int i = 0; i < m_ProxyHandler->m_InternalProperties.Size(); i++)
{
const CArchiveItemProperty &aHandlerProperty = m_ProxyHandler->m_InternalProperties[i];
if (aHandlerProperty.ID == propID)
@@ -385,11 +392,11 @@ void CPlugin::AddColumn(PROPID propID)
if (i == m_ProxyHandler->m_InternalProperties.Size())
return;
- const CPropertyIDInfo &aPropertyIDInfo = kPropertyIDInfos[index];
- SmartAddToString(PanelModeColumnTypes, aPropertyIDInfo.FarID);
- char aTmp[32];
- itoa(aPropertyIDInfo.Width, aTmp, 10);
- SmartAddToString(PanelModeColumnWidths, aTmp);
+ const CPropertyIDInfo &propertyIDInfo = kPropertyIDInfos[index];
+ SmartAddToString(PanelModeColumnTypes, propertyIDInfo.FarID);
+ char tmp[32];
+ itoa(propertyIDInfo.Width, tmp, 10);
+ SmartAddToString(PanelModeColumnWidths, tmp);
return;
}
}
@@ -425,7 +432,7 @@ void CPlugin::GetOpenPluginInfo(struct OpenPluginInfo *info)
UString(L':') +
name +
UString(L' ');
- if(!m_CurrentDir.IsEmpty())
+ if (!m_CurrentDir.IsEmpty())
{
// m_PannelTitle += '\\';
m_PannelTitle += m_CurrentDir;
@@ -434,44 +441,56 @@ void CPlugin::GetOpenPluginInfo(struct OpenPluginInfo *info)
MyStringCopy(m_PannelTitleBuffer, (const char *)UnicodeStringToMultiByte(m_PannelTitle, CP_OEMCP));
info->PanelTitle = m_PannelTitleBuffer;
- memset(m_InfoLines,0,sizeof(m_InfoLines));
- MyStringCopy(m_InfoLines[0].Text,"");
+ memset(m_InfoLines, 0, sizeof(m_InfoLines));
+ MyStringCopy(m_InfoLines[0].Text, "");
m_InfoLines[0].Separator = TRUE;
MyStringCopy(m_InfoLines[1].Text, g_StartupInfo.GetMsgString(NMessageID::kArchiveType));
MyStringCopy(m_InfoLines[1].Data, (const char *)UnicodeStringToMultiByte(_archiveTypeName, CP_OEMCP));
int numItems = 2;
- UINT32 numProps;
- if (m_ArchiveHandler->GetNumberOfArchiveProperties(&numProps) == S_OK)
+
+ CMyComPtr<IFolderProperties> folderProperties;
+ _folder.QueryInterface(IID_IFolderProperties, &folderProperties);
+ if (folderProperties)
{
- for (UINT32 i = 0; i < numProps && numItems < 30; i++)
+ UInt32 numProps;
+ if (folderProperties->GetNumberOfFolderProperties(&numProps) == S_OK)
{
- CMyComBSTR name;
- PROPID propID;
- VARTYPE vt;
- if (m_ArchiveHandler->GetArchivePropertyInfo(i, &name, &propID, &vt) != S_OK)
- continue;
-
- InfoPanelLine &item = m_InfoLines[numItems];
- int index = FindPropertyToName(propID);
- if (index < 0)
+ for (UInt32 i = 0; i < numProps && numItems < kNumInfoLinesMax; i++)
{
- if (name != 0)
- MyStringCopy(item.Text, (const char *)UnicodeStringToMultiByte(
- (const wchar_t *)name, CP_OEMCP));
+ CMyComBSTR name;
+ PROPID propID;
+ VARTYPE vt;
+ if (folderProperties->GetFolderPropertyInfo(i, &name, &propID, &vt) != S_OK)
+ continue;
+
+ InfoPanelLine &item = m_InfoLines[numItems];
+ int index = FindPropertyToName(propID);
+ AString s;
+ if (index < 0)
+ {
+ if (name != 0)
+ s = (const char *)UnicodeStringToMultiByte((const wchar_t *)name, CP_OEMCP);
+ }
else
- MyStringCopy(item.Text, "");
+ s = g_StartupInfo.GetMsgString(kPROPIDToName[index].PluginID);
+
+ if (s.Length() > (kInfoPanelLineSize - 1))
+ s = s.Left(kInfoPanelLineSize - 1);
+ MyStringCopy(item.Text, (const char *)s);
+
+ NCOM::CPropVariant propVariant;
+ if (_folder->GetFolderProperty(propID, &propVariant) != S_OK)
+ continue;
+ s = ConvertPropertyToString2(propVariant, propID);
+ s.Replace((char)0xA, ' ');
+ s.Replace((char)0xD, ' ');
+ if (s.Length() > (kInfoPanelLineSize - 1))
+ s = s.Left(kInfoPanelLineSize - 1);
+ MyStringCopy(item.Data, (const char *)s);
+ numItems++;
}
- else
- MyStringCopy(item.Text, g_StartupInfo.GetMsgString(kPROPIDToName[index].PluginID));
-
- NCOM::CPropVariant propVariant;
- if (m_ArchiveHandler->GetArchiveProperty(propID, &propVariant) != S_OK)
- continue;
- CSysString s = ConvertPropertyToString2(propVariant, propID);
- MyStringCopy(item.Data, (const char *)s);
- numItems++;
}
}
@@ -539,15 +558,15 @@ HRESULT CPlugin::ShowAttributesWindow()
int itemIndex = pluginPanelItem.UserData;
CObjectVector<CArchiveItemProperty> properties;
- UINT32 numProps;
- RINOK(m_ArchiveHandler->GetNumberOfProperties(&numProps));
+ UInt32 numProps;
+ RINOK(_folder->GetNumberOfProperties(&numProps));
int i;
for (i = 0; i < (int)numProps; i++)
{
CMyComBSTR name;
PROPID propID;
VARTYPE vt;
- RINOK(m_ArchiveHandler->GetPropertyInfo(i, &name, &propID, &vt));
+ RINOK(_folder->GetPropertyInfo(i, &name, &propID, &vt));
CArchiveItemProperty destProperty;
destProperty.Type = vt;
destProperty.ID = propID;
@@ -556,29 +575,13 @@ HRESULT CPlugin::ShowAttributesWindow()
AString propName;
{
if (name != NULL)
- destProperty.Name = UnicodeStringToMultiByte(
- (const wchar_t *)name, CP_OEMCP);
+ destProperty.Name = UnicodeStringToMultiByte((const wchar_t *)name, CP_OEMCP);
else
- destProperty.Name = "Error";
+ destProperty.Name = "?";
}
properties.Add(destProperty);
}
- /*
- LPCITEMIDLIST aProperties;
- if (index < m_FolderItem->m_DirSubItems.Size())
- {
- const CArchiveFolderItem &anItem = m_FolderItem->m_DirSubItems[index];
- aProperties = anItem.m_Properties;
- }
- else
- {
- const CArchiveFolderFileItem &anItem =
- m_FolderItem->m_FileSubItems[index - m_FolderItem->m_DirSubItems.Size()];
- aProperties = anItem.m_Properties;
- }
- */
-
int size = 2;
CRecordVector<CInitDialogItem> initDialogItems;
@@ -586,7 +589,7 @@ HRESULT CPlugin::ShowAttributesWindow()
CInitDialogItem initDialogItem =
{ DI_DOUBLEBOX, 3, 1, xSize - 4, size - 2, false, false, 0, false, NMessageID::kProperties, NULL, NULL };
initDialogItems.Add(initDialogItem);
- AStringVector aValues;
+ AStringVector values;
for (i = 0; i < properties.Size(); i++)
{
@@ -605,10 +608,9 @@ HRESULT CPlugin::ShowAttributesWindow()
initDialogItems.Add(initDialogItem);
NCOM::CPropVariant propVariant;
- RINOK(_folder->GetProperty(itemIndex,
- property.ID, &propVariant));
- CSysString aString = ConvertPropertyToString2(propVariant, property.ID);
- aValues.Add(aString);
+ RINOK(_folder->GetProperty(itemIndex, property.ID, &propVariant));
+ CSysString s = ConvertPropertyToString2(propVariant, property.ID);
+ values.Add(s);
{
CInitDialogItem initDialogItem =
@@ -617,18 +619,18 @@ HRESULT CPlugin::ShowAttributesWindow()
}
}
- int numLines = aValues.Size();
- for(i = 0; i < numLines; i++)
+ int numLines = values.Size();
+ for (i = 0; i < numLines; i++)
{
CInitDialogItem &initDialogItem = initDialogItems[1 + i * 2 + 1];
- initDialogItem.DataString = aValues[i];
+ initDialogItem.DataString = values[i];
}
int numDialogItems = initDialogItems.Size();
CRecordVector<FarDialogItem> dialogItems;
dialogItems.Reserve(numDialogItems);
- for(i = 0; i < numDialogItems; i++)
+ for (i = 0; i < numDialogItems; i++)
dialogItems.Add(FarDialogItem());
g_StartupInfo.InitDialogItems(&initDialogItems.Front(),
&dialogItems.Front(), numDialogItems);
@@ -653,17 +655,17 @@ HRESULT CPlugin::ShowAttributesWindow()
}
size = numLines + 6;
xSize = maxLen + kSpace + maxLen2 + 5;
- FarDialogItem &aFirstDialogItem = dialogItems.Front();
- aFirstDialogItem.Y2 = size - 2;
- aFirstDialogItem.X2 = xSize - 4;
+ FarDialogItem &firstDialogItem = dialogItems.Front();
+ firstDialogItem.Y2 = size - 2;
+ firstDialogItem.X2 = xSize - 4;
/* int askCode = */ g_StartupInfo.ShowDialog(xSize, size, NULL, &dialogItems.Front(), numDialogItems);
return S_OK;
}
-int CPlugin::ProcessKey(int aKey, unsigned int controlState)
+int CPlugin::ProcessKey(int key, unsigned int controlState)
{
- if (controlState == PKF_CONTROL && aKey == 'A')
+ if (controlState == PKF_CONTROL && key == 'A')
{
HRESULT result = ShowAttributesWindow();
if (result == S_OK)
@@ -672,7 +674,7 @@ int CPlugin::ProcessKey(int aKey, unsigned int controlState)
return FALSE;
throw "Error";
}
- if ((controlState & PKF_ALT) != 0 && aKey == VK_F6)
+ if ((controlState & PKF_ALT) != 0 && key == VK_F6)
{
UString folderPath;
if (!NFile::NDirectory::GetOnlyDirPrefix(m_FileName, folderPath))
diff --git a/CPP/7zip/UI/Far/Plugin.h b/CPP/7zip/UI/Far/Plugin.h
index 736fc7d0..d9b99fa9 100755
--- a/CPP/7zip/UI/Far/Plugin.h
+++ b/CPP/7zip/UI/Far/Plugin.h
@@ -13,6 +13,8 @@
#include "FarUtils.h"
+const UInt32 kNumInfoLinesMax = 30; // Change it;
+
class CPlugin
{
NWindows::NCOM::CComInitializer m_ComInitializer;
@@ -20,7 +22,7 @@ class CPlugin
UString m_PannelTitle;
- InfoPanelLine m_InfoLines[30]; // Change it;
+ InfoPanelLine m_InfoLines[kNumInfoLinesMax];
char m_FileNameBuffer[1024];
char m_CurrentDirBuffer[1024];
diff --git a/CPP/7zip/UI/Far/UpdateCallback100.cpp b/CPP/7zip/UI/Far/UpdateCallback100.cpp
index 96699174..ce4fa05e 100755
--- a/CPP/7zip/UI/Far/UpdateCallback100.cpp
+++ b/CPP/7zip/UI/Far/UpdateCallback100.cpp
@@ -10,6 +10,11 @@
using namespace NFar;
+STDMETHODIMP CUpdateCallback100Imp::SetNumFiles(UInt64 /* numFiles */)
+{
+ return S_OK;
+}
+
STDMETHODIMP CUpdateCallback100Imp::SetTotal(UINT64 aSize)
{
if (m_ProgressBox != 0)
diff --git a/CPP/7zip/UI/Far/UpdateCallback100.h b/CPP/7zip/UI/Far/UpdateCallback100.h
index 87c55dc3..f12193e9 100755
--- a/CPP/7zip/UI/Far/UpdateCallback100.h
+++ b/CPP/7zip/UI/Far/UpdateCallback100.h
@@ -26,6 +26,7 @@ public:
STDMETHOD(DeleteOperation)(const wchar_t *aName);
STDMETHOD(OperationResult)(INT32 aOperationResult);
STDMETHOD(UpdateErrorMessage)(const wchar_t *message);
+ STDMETHOD(SetNumFiles)(UInt64 numFiles);
private:
CMyComPtr<IInFolderArchive> m_ArchiveHandler;
diff --git a/CPP/7zip/UI/Far/makefile b/CPP/7zip/UI/Far/makefile
index 2e22d862..1210e961 100755
--- a/CPP/7zip/UI/Far/makefile
+++ b/CPP/7zip/UI/Far/makefile
@@ -43,6 +43,7 @@ WIN_OBJS = \
7ZIP_COMMON_OBJS = \
$O\FilePathAutoRename.obj \
$O\FileStreams.obj \
+ $O\ProgressUtils.obj \
$O\StreamUtils.obj \
UI_COMMON_OBJS = \