Source code
Revision control
Copy as Markdown
Other Tools
// Update.h↩
↩
#ifndef __COMMON_UPDATE_H↩
#define __COMMON_UPDATE_H↩
↩
#include "../../../Common/Wildcard.h"↩
↩
#include "ArchiveOpenCallback.h"↩
#include "LoadCodecs.h"↩
#include "OpenArchive.h"↩
#include "Property.h"↩
#include "UpdateAction.h"↩
#include "UpdateCallback.h"↩
↩
#include "DirItem.h"↩
↩
enum EArcNameMode↩
{↩
k_ArcNameMode_Smart,↩
k_ArcNameMode_Exact,↩
k_ArcNameMode_Add,↩
};↩
↩
struct CArchivePath↩
{↩
UString OriginalPath;↩
↩
UString Prefix; // path(folder) prefix including slash↩
UString Name; // base name↩
UString BaseExtension; // archive type extension or "exe" extension↩
UString VolExtension; // archive type extension for volumes↩
↩
bool Temp;↩
FString TempPrefix; // path(folder) for temp location↩
FString TempPostfix;↩
↩
CArchivePath(): Temp(false) {};↩
↩
void ParseFromPath(const UString &path, EArcNameMode mode);↩
UString GetPathWithoutExt() const { return Prefix + Name; }↩
UString GetFinalPath() const;↩
UString GetFinalVolPath() const;↩
FString GetTempPath() const;↩
};↩
↩
struct CUpdateArchiveCommand↩
{↩
UString UserArchivePath;↩
CArchivePath ArchivePath;↩
NUpdateArchive::CActionSet ActionSet;↩
};↩
↩
struct CCompressionMethodMode↩
{↩
bool Type_Defined;↩
COpenType Type;↩
CObjectVector<CProperty> Properties;↩
↩
CCompressionMethodMode(): Type_Defined(false) {}↩
};↩
↩
namespace NRecursedType { enum EEnum↩
{↩
kRecursed,↩
kWildcardOnlyRecursed,↩
kNonRecursed↩
};}↩
↩
struct CRenamePair↩
{↩
UString OldName;↩
UString NewName;↩
bool WildcardParsing;↩
NRecursedType::EEnum RecursedType;↩
↩
CRenamePair(): WildcardParsing(true), RecursedType(NRecursedType::kNonRecursed) {}↩
↩
bool Prepare();↩
bool GetNewPath(bool isFolder, const UString &src, UString &dest) const;↩
};↩
↩
struct CUpdateOptions↩
{↩
CCompressionMethodMode MethodMode;↩
↩
CObjectVector<CUpdateArchiveCommand> Commands;↩
bool UpdateArchiveItself;↩
CArchivePath ArchivePath;↩
EArcNameMode ArcNameMode;↩
↩
bool SfxMode;↩
FString SfxModule;↩
↩
bool OpenShareForWrite;↩
bool StopAfterOpenError;↩
↩
bool StdInMode;↩
UString StdInFileName;↩
bool StdOutMode;↩
↩
bool EMailMode;↩
bool EMailRemoveAfter;↩
UString EMailAddress;↩
↩
FString WorkingDir;↩
NWildcard::ECensorPathMode PathMode;↩
UString AddPathPrefix;↩
↩
CBoolPair NtSecurity;↩
CBoolPair AltStreams;↩
CBoolPair HardLinks;↩
CBoolPair SymLinks;↩
↩
bool DeleteAfterCompressing;↩
↩
bool SetArcMTime;↩
↩
CObjectVector<CRenamePair> RenamePairs;↩
↩
bool InitFormatIndex(const CCodecs *codecs, const CObjectVector<COpenType> &types, const UString &arcPath);↩
bool SetArcPath(const CCodecs *codecs, const UString &arcPath);↩
↩
CUpdateOptions():↩
UpdateArchiveItself(true),↩
SfxMode(false),↩
StdInMode(false),↩
StdOutMode(false),↩
EMailMode(false),↩
EMailRemoveAfter(false),↩
OpenShareForWrite(false),↩
StopAfterOpenError(false),↩
ArcNameMode(k_ArcNameMode_Smart),↩
PathMode(NWildcard::k_RelatPath),↩
↩
DeleteAfterCompressing(false),↩
SetArcMTime(false)↩
↩
{};↩
↩
void SetActionCommand_Add()↩
{↩
Commands.Clear();↩
CUpdateArchiveCommand c;↩
c.ActionSet = NUpdateArchive::k_ActionSet_Add;↩
Commands.Add(c);↩
}↩
↩
CRecordVector<UInt64> VolumesSizes;↩
};↩
↩
struct CUpdateErrorInfo↩
{↩
DWORD SystemError;↩
AString Message;↩
FStringVector FileNames;↩
↩
bool ThereIsError() const { return SystemError != 0 || !Message.IsEmpty() || !FileNames.IsEmpty(); }↩
HRESULT Get_HRESULT_Error() const { return SystemError == 0 ? E_FAIL : HRESULT_FROM_WIN32(SystemError); }↩
void SetFromLastError(const char *message);↩
HRESULT SetFromLastError(const char *message, const FString &fileName);↩
↩
CUpdateErrorInfo(): SystemError(0) {};↩
};↩
↩
struct CFinishArchiveStat↩
{↩
UInt64 OutArcFileSize;↩
↩
CFinishArchiveStat(): OutArcFileSize(0) {}↩
};↩
↩
#define INTERFACE_IUpdateCallbackUI2(x) \↩
INTERFACE_IUpdateCallbackUI(x) \↩
INTERFACE_IDirItemsCallback(x) \↩
virtual HRESULT OpenResult(const CCodecs *codecs, const CArchiveLink &arcLink, const wchar_t *name, HRESULT result) x; \↩
virtual HRESULT StartScanning() x; \↩
virtual HRESULT FinishScanning(const CDirItemsStat &st) x; \↩
virtual HRESULT StartOpenArchive(const wchar_t *name) x; \↩
virtual HRESULT StartArchive(const wchar_t *name, bool updating) x; \↩
virtual HRESULT FinishArchive(const CFinishArchiveStat &st) x; \↩
virtual HRESULT DeletingAfterArchiving(const FString &path, bool isDir) x; \↩
virtual HRESULT FinishDeletingAfterArchiving() x; \↩
↩
struct IUpdateCallbackUI2: public IUpdateCallbackUI, public IDirItemsCallback↩
{↩
INTERFACE_IUpdateCallbackUI2(=0)↩
};↩
↩
HRESULT UpdateArchive(↩
CCodecs *codecs,↩
const CObjectVector<COpenType> &types,↩
const UString &cmdArcPath2,↩
NWildcard::CCensor &censor,↩
CUpdateOptions &options,↩
CUpdateErrorInfo &errorInfo,↩
IOpenCallbackUI *openCallback,↩
IUpdateCallbackUI2 *callback,↩
bool needSetPath);↩
↩
#endif↩