void CPercentPrinter::RePrintRatio() { char s[32]; ConvertUInt64ToString(((m_Total == 0) ? 0 : (m_CurValue * 100 / m_Total)), s); int size = (int)strlen(s); s[size++] = '%'; s[size] = '\0'; int extraSize = kPaddingSize + MyMax(size, kPercentsSize); if (extraSize < m_NumExtraChars) extraSize = m_NumExtraChars; char fullString[kMaxExtraSize * 3]; char *p = fullString; int i; if (m_NumExtraChars == 0) { for (i = 0; i < extraSize; i++) *p++ = ' '; m_NumExtraChars = extraSize; } for (i = 0; i < m_NumExtraChars; i++) *p++ = '\b'; m_NumExtraChars = extraSize; for (; size < m_NumExtraChars; size++) *p++ = ' '; MyStringCopy(p, s); (*OutStream) << fullString; OutStream->Flush(); m_PrevValue = m_CurValue; }
void SetFileInfoStrings(const CFileInfo &fileInfo, CFileInfoStrings &fileInfoStrings) { char buffer[256]; if (fileInfo.SizeIsDefined) { ConvertUInt64ToString(fileInfo.Size, buffer); fileInfoStrings.Size = buffer; fileInfoStrings.Size += ' '; fileInfoStrings.Size += g_StartupInfo.GetMsgString(NMessageID::kOverwriteBytes); } else { fileInfoStrings.Size = ""; } FILETIME localFileTime; fileInfoStrings.Time.Empty(); if (fileInfo.TimeIsDefined) { if (!FileTimeToLocalFileTime(&fileInfo.Time, &localFileTime)) throw 4190402; char timeString[32]; ConvertFileTimeToString(localFileTime, timeString); fileInfoStrings.Time = g_StartupInfo.GetMsgString(NMessageID::kOverwriteModifiedOn); fileInfoStrings.Time += ' '; fileInfoStrings.Time += timeString; } }
void ConvertInt64ToString(Int64 value, wchar_t *s) { if (value < 0) { *s++ = L'-'; value = -value; } ConvertUInt64ToString(value, s); }
void ConvertInt64ToString(Int64 val, wchar_t *s) throw() { if (val < 0) { *s++ = L'-'; val = -val; } ConvertUInt64ToString(val, s); }
UString ConvertPropVariantToString(const PROPVARIANT &prop) { switch (prop.vt) { case VT_EMPTY: return UString(); case VT_BSTR: return prop.bstrVal; case VT_UI1: return ConvertUInt64ToString(prop.bVal); case VT_UI2: return ConvertUInt64ToString(prop.uiVal); case VT_UI4: return ConvertUInt64ToString(prop.ulVal); case VT_UI8: return ConvertUInt64ToString(prop.uhVal.QuadPart); case VT_FILETIME: return ConvertFileTimeToString(prop.filetime, true, true); // case VT_I1: return ConvertInt64ToString(prop.cVal); case VT_I2: return ConvertInt64ToString(prop.iVal); case VT_I4: return ConvertInt64ToString(prop.lVal); case VT_I8: return ConvertInt64ToString(prop.hVal.QuadPart); case VT_BOOL: return VARIANT_BOOLToBool(prop.boolVal) ? L"+" : L"-"; default: throw 150245; } }
void ConvertPropVariantToShortString(const PROPVARIANT &prop, char *dest) throw() { *dest = 0; switch (prop.vt) { case VT_EMPTY: return; case VT_BSTR: dest[0] = '?'; dest[1] = 0; return; case VT_UI1: ConvertUInt32ToString(prop.bVal, dest); return; case VT_UI2: ConvertUInt32ToString(prop.uiVal, dest); return; case VT_UI4: ConvertUInt32ToString(prop.ulVal, dest); return; case VT_UI8: ConvertUInt64ToString(prop.uhVal.QuadPart, dest); return; case VT_FILETIME: ConvertUtcFileTimeToString(prop.filetime, dest); return; // case VT_I1: return ConvertInt64ToString(prop.cVal, dest); return; case VT_I2: ConvertInt64ToString(prop.iVal, dest); return; case VT_I4: ConvertInt64ToString(prop.lVal, dest); return; case VT_I8: ConvertInt64ToString(prop.hVal.QuadPart, dest); return; case VT_BOOL: dest[0] = VARIANT_BOOLToBool(prop.boolVal) ? '+' : '-'; dest[1] = 0; return; default: dest[0] = '?'; dest[1] = ':'; ConvertUInt64ToString(prop.vt, dest + 2); } }
UString ConvertPropVariantToString(const PROPVARIANT &propVariant) { switch (propVariant.vt) { case VT_EMPTY: return UString(); case VT_BSTR: return propVariant.bstrVal; case VT_UI1: return ConvertUInt64ToString(propVariant.bVal); case VT_UI2: return ConvertUInt64ToString(propVariant.uiVal); case VT_UI4: return ConvertUInt64ToString(propVariant.ulVal); case VT_UI8: return ConvertUInt64ToString(propVariant.uhVal.QuadPart); case VT_FILETIME: return ConvertFileTimeToString(propVariant.filetime, true, true); /* case VT_I1: return ConvertInt64ToString(propVariant.cVal); */ case VT_I2: return ConvertInt64ToString(propVariant.iVal); case VT_I4: return ConvertInt64ToString(propVariant.lVal); case VT_I8: return ConvertInt64ToString(propVariant.hVal.QuadPart); case VT_BOOL: return VARIANT_BOOLToBool(propVariant.boolVal) ? L"1" : L"0"; default: #ifndef _WIN32_WCE throw 150245; #else return UString(); #endif } }
void AddShellExtensionInfo(const CSysString &extension, const UString &programTitle, const UString &programOpenCommand, const UString &iconPath, int iconIndex, const void *shellNewData, int shellNewDataSize) { DeleteShellExtensionKey(extension); DeleteShellExtensionProgramKey(extension); NSynchronization::CCriticalSectionLock lock(g_CriticalSection); CSysString programKeyName = GetExtProgramKeyName(extension); { CKey extKey; extKey.Create(HKEY_CLASSES_ROOT, GetExtensionKeyName(extension)); extKey.SetValue(NULL, programKeyName); if (shellNewData != NULL) { CKey shellNewKey; shellNewKey.Create(extKey, kShellNewKeyName); shellNewKey.SetValue(kShellNewDataValueName, shellNewData, shellNewDataSize); } } CKey programKey; programKey.Create(HKEY_CLASSES_ROOT, programKeyName); programKey.SetValue(NULL, programTitle); { CKey iconKey; iconKey.Create(programKey, kDefaultIconKeyName); UString iconPathFull = iconPath; if (iconIndex >= 0) { iconPathFull += L","; wchar_t s[32]; ConvertUInt64ToString((UInt64)iconIndex, s); iconPathFull += s; } iconKey.SetValue(NULL, iconPathFull); } CKey shellKey; shellKey.Create(programKey, kShellKeyName); shellKey.SetValue(NULL, TEXT("")); CKey openKey; openKey.Create(shellKey, kOpenKeyName); openKey.SetValue(NULL, TEXT("")); CKey commandKey; commandKey.Create(openKey, kCommandKeyName); commandKey.SetValue(NULL, programOpenCommand); }
HRESULT OpenArchive(IInStream *inStream, const CHeader &h, CByteBuffer &xml, CDatabase &db) { RINOK(UnpackData(inStream, h.XmlResource, h.IsLzxMode(), xml, NULL)); RINOK(ReadStreams(inStream, h, db)); bool needBootMetadata = !h.MetadataResource.IsEmpty(); if (h.PartNumber == 1) { int imageIndex = 1; for (int j = 0; j < db.Streams.Size(); j++) { // if (imageIndex > 1) break; const CStreamInfo &si = db.Streams[j]; if (!si.Resource.IsMetadata() || si.PartNumber != h.PartNumber) continue; Byte hash[kHashSize]; CByteBuffer metadata; RINOK(UnpackData(inStream, si.Resource, h.IsLzxMode(), metadata, hash)); if (memcmp(hash, si.Hash, kHashSize) != 0) return S_FALSE; wchar_t sz[32]; ConvertUInt64ToString(imageIndex++, sz); UString s = sz; s += WCHAR_PATH_SEPARATOR; RINOK(ParseDir(metadata, metadata.GetCapacity(), s, db.Items)); if (needBootMetadata) if (h.MetadataResource.Offset == si.Resource.Offset) needBootMetadata = false; } } if (needBootMetadata) { CByteBuffer metadata; RINOK(UnpackData(inStream, h.MetadataResource, h.IsLzxMode(), metadata, NULL)); RINOK(ParseDir(metadata, metadata.GetCapacity(), L"0" WSTRING_PATH_SEPARATOR, db.Items)); } return S_OK; }
static AString MakeOctalString(UInt64 value) { char s[32]; ConvertUInt64ToString(value, s, 8); return AString(s) + ' '; }
static UString ConvertUInt64ToString(UInt64 value) { wchar_t buffer[32]; ConvertUInt64ToString(value, buffer); return buffer; }
void ConvertUInt32ToString(UInt32 value, wchar_t *s) { ConvertUInt64ToString(value, s); }
CStdOutStream & CStdOutStream::operator<<(UInt64 number) { char textString[32]; ConvertUInt64ToString(number, textString); return operator<<(textString); }
CStdOutStream & CStdOutStream::operator<<(UInt64 number) throw() { char s[32]; ConvertUInt64ToString(number, s); return operator<<(s); }
UString NumberToString(UInt64 number) { wchar_t numberString[32]; ConvertUInt64ToString(number, numberString); return numberString; }