static void ErrorInfo_Print(UString &s, const CArcErrorInfo &er) { UInt32 errorFlags = er.GetErrorFlags(); UInt32 warningFlags = er.GetWarningFlags(); if (errorFlags != 0) AddNewLineString(s, GetOpenArcErrorMessage(errorFlags)); if (!er.ErrorMessage.IsEmpty()) AddNewLineString(s, er.ErrorMessage); if (warningFlags != 0) { s += GetNameOfProperty(kpidWarningFlags, L"Warnings"); s.AddAscii(":"); s.Add_LF(); AddNewLineString(s, GetOpenArcErrorMessage(warningFlags)); } if (!er.WarningMessage.IsEmpty()) { s += GetNameOfProperty(kpidWarning, L"Warning"); s.AddAscii(": "); s += er.WarningMessage; s.Add_LF(); } }
HRESULT CThreadExtracting::ProcessVirt() { CDecompressStat Stat; #ifndef _SFX /* if (HashBundle) HashBundle->Init(); */ #endif HRESULT res = Extract(codecs, *FormatIndices, *ExcludedFormatIndices, *ArchivePaths, *ArchivePathsFull, *WildcardCensor, *Options, ExtractCallbackSpec, ExtractCallback, #ifndef _SFX HashBundle, #endif FinalMessage.ErrorMessage.Message, Stat); #ifndef _SFX if (res == S_OK && ExtractCallbackSpec->IsOK()) { if (HashBundle) { AddValuePair(Pairs, IDS_ARCHIVES_COLON, Stat.NumArchives); AddSizeValuePair(Pairs, IDS_PROP_PACKED_SIZE, Stat.PackSize); AddHashBundleRes(Pairs, *HashBundle); } else if (Options->TestMode) { UString s; AddValuePair(s, IDS_ARCHIVES_COLON, Stat.NumArchives, false); AddSizePair(s, IDS_PROP_PACKED_SIZE, Stat.PackSize); if (Stat.NumFolders != 0) AddValuePair(s, IDS_PROP_FOLDERS, Stat.NumFolders); AddValuePair(s, IDS_PROP_FILES, Stat.NumFiles); AddSizePair(s, IDS_PROP_SIZE, Stat.UnpackSize); if (Stat.NumAltStreams != 0) { s.Add_LF(); AddValuePair(s, IDS_PROP_NUM_ALT_STREAMS, Stat.NumAltStreams); AddSizePair(s, IDS_PROP_ALT_STREAMS_SIZE, Stat.AltStreams_UnpackSize); } s.Add_LF(); AddLangString(s, IDS_MESSAGE_NO_ERRORS); FinalMessage.OkMessage.Title = Title; FinalMessage.OkMessage.Message = s; } } #endif return res; }
static void AddValuePair1(UString &s, UINT resourceID, UInt64 size) { AddLangString(s, resourceID); s += L": "; AddSizeValue(s, size); s.Add_LF(); }
static void AddSizePair(UString &s, UINT resourceID, UInt64 value) { AddLangString(s, resourceID); s += ": "; AddSizeValue(s, value); s.Add_LF(); }
static void ThrowError(const char *message, const UString &s1, const UString &s2) { UString m; m.SetFromAscii(message); m.Add_LF(); m += s1; m.Add_LF(); m += s2; throw m; }
static void MessageBox_HResError(HWND wnd, HRESULT errorCode, const wchar_t *name) { UString s = HResultToMessage(errorCode); if (name) { s.Add_LF(); s += name; } MessageBox_Error_Global(wnd, s); }
void CContentsView::MessageBoxError2Lines(LPCWSTR message, HRESULT errorCode) { UString m = message; if (errorCode != 0) { m.Add_LF(); m += HResultToMessage(errorCode); } MessageBoxMyError(m); }
static void AddValuePair(UString &s, UINT resourceID, UInt64 value, bool addColon = true) { AddLangString(s, resourceID); if (addColon) s += L':'; s.Add_Space(); char sz[32]; ConvertUInt64ToString(value, sz); s.AddAscii(sz); s.Add_LF(); }
UString GetOpenArcErrorMessage(UInt32 errorFlags) { UString s; for (unsigned i = 0; i < ARRAY_SIZE(k_ErrorFlagsIds); i++) { UInt32 f = ((UInt32)1 << i); if ((errorFlags & f) == 0) continue; UInt32 id = k_ErrorFlagsIds[i]; UString m = LangString(id); if (m.IsEmpty()) continue; if (f == kpv_ErrorFlags_EncryptedHeadersError) { m.AddAscii(" : "); AddLangString(m, IDS_EXTRACT_MSG_WRONG_PSW_GUESS); } if (!s.IsEmpty()) s.Add_LF(); s += m; errorFlags &= ~f; } if (errorFlags != 0) { char sz[16]; sz[0] = '0'; sz[1] = 'x'; ConvertUInt32ToHex(errorFlags, sz + 2); if (!s.IsEmpty()) s.Add_LF(); s.AddAscii(sz); } return s; }
static void AddRenamePair(CObjectVector<CRenamePair> *renamePairs, const UString &oldName, const UString &newName, NRecursedType::EEnum type, bool wildcardMatching) { CRenamePair &pair = renamePairs->AddNew(); pair.OldName = oldName; pair.NewName = newName; pair.RecursedType = type; pair.WildcardParsing = wildcardMatching; if (!pair.Prepare()) { UString val; val += pair.OldName; val.Add_LF(); val += pair.NewName; val.Add_LF(); if (type == NRecursedType::kRecursed) val.AddAscii("-r"); else if (type == NRecursedType::kWildcardOnlyRecursed) val.AddAscii("-r0"); throw CArcCmdLineException("Unsupported rename command:", val); } }
void AddValuePair2(UString &s, UINT resourceID, UInt64 num, UInt64 size) { if (num == 0) return; AddLangString(s, resourceID); s += L": "; s += ConvertIntToDecimalString(num); if (size != (UInt64)(Int64)-1) { s += L" ( "; AddSizeValue(s, size); s += L" )"; } s.Add_LF(); }
UString CPanel::GetItemsInfoString(const CRecordVector<UInt32> &indices) { UString info; UInt64 numDirs, numFiles, filesSize, foldersSize; numDirs = numFiles = filesSize = foldersSize = 0; unsigned i; for (i = 0; i < indices.Size(); i++) { int index = indices[i]; if (IsItem_Folder(index)) { AddPropValueToSum(_folder, index, kpidSize, foldersSize); numDirs++; } else { AddPropValueToSum(_folder, index, kpidSize, filesSize); numFiles++; } } AddValuePair2(info, IDS_PROP_FOLDERS, numDirs, foldersSize); AddValuePair2(info, IDS_PROP_FILES, numFiles, filesSize); int numDefined = ((foldersSize != (UInt64)(Int64)-1) && foldersSize != 0) ? 1: 0; numDefined += ((filesSize != (UInt64)(Int64)-1) && filesSize != 0) ? 1: 0; if (numDefined == 2) AddValuePair1(info, IDS_PROP_SIZE, filesSize + foldersSize); info.Add_LF(); info += _currentFolderPrefix; for (i = 0; i < indices.Size() && (int)i < (int)kCopyDialog_NumInfoLines - 6; i++) { info += L"\n "; int index = indices[i]; info += GetItemRelPath(index); if (IsItem_Folder(index)) info.Add_PathSepar(); } if (i != indices.Size()) info += L"\n ..."; return info; }
static void AddPropertyString(PROPID propID, const wchar_t *nameBSTR, const NCOM::CPropVariant &prop, UString &s) { if (prop.vt != VT_EMPTY) { UString val; if (propID == kpidErrorFlags || propID == kpidWarningFlags) { UInt32 flags = GetOpenArcErrorFlags(prop); if (flags == 0) return; if (flags != 0) val = GetOpenArcErrorMessage(flags); } if (val.IsEmpty()) if ((prop.vt == VT_UI8 || prop.vt == VT_UI4 || prop.vt == VT_UI2) && IsSizeProp(propID)) { UInt64 v = 0; ConvertPropVariantToUInt64(prop, v); val = ConvertSizeToString(v); } else ConvertPropertyToString(val, prop, propID); if (!val.IsEmpty()) { s += GetNameOfProperty(propID, nameBSTR); s.AddAscii(kPropValueSeparator); /* if (propID == kpidComment) s.Add_LF(); */ s += val; s.Add_LF(); } } }
void CPanel::Properties() { CMyComPtr<IGetFolderArcProps> getFolderArcProps; _folder.QueryInterface(IID_IGetFolderArcProps, &getFolderArcProps); if (!getFolderArcProps) { InvokeSystemCommand("properties"); return; } { UString message; CRecordVector<UInt32> operatedIndices; GetOperatedItemIndices(operatedIndices); if (operatedIndices.Size() == 1) { UInt32 index = operatedIndices[0]; // message += L"Item:\n"; UInt32 numProps; if (_folder->GetNumberOfProperties(&numProps) == S_OK) { for (UInt32 i = 0; i < numProps; i++) { CMyComBSTR name; PROPID propID; VARTYPE varType; if (_folder->GetPropertyInfo(i, &name, &propID, &varType) != S_OK) continue; NCOM::CPropVariant prop; if (_folder->GetProperty(index, propID, &prop) != S_OK) continue; AddPropertyString(propID, name, prop, message); } } if (_folderRawProps) { _folderRawProps->GetNumRawProps(&numProps); for (UInt32 i = 0; i < numProps; i++) { CMyComBSTR name; PROPID propID; if (_folderRawProps->GetRawPropInfo(i, &name, &propID) != S_OK) continue; const void *data; UInt32 dataSize; UInt32 propType; if (_folderRawProps->GetRawProp(index, propID, &data, &dataSize, &propType) != S_OK) continue; if (dataSize != 0) { AString s; if (propID == kpidNtSecure) ConvertNtSecureToString((const Byte *)data, dataSize, s); else { const UInt32 kMaxDataSize = 64; if (dataSize > kMaxDataSize) { char temp[64]; s += "data:"; ConvertUInt32ToString(dataSize, temp); s += temp; } else { for (UInt32 k = 0; k < dataSize; k++) { Byte b = ((const Byte *)data)[k]; s += GetHex((Byte)((b >> 4) & 0xF)); s += GetHex((Byte)(b & 0xF)); } } } message += GetNameOfProperty(propID, name); message.AddAscii(kPropValueSeparator); message.AddAscii(s); message.Add_LF(); } } } message.AddAscii(kSeparator); }
static void AddNewLineString(UString &s, const UString &m) { s += m; s.Add_LF(); }