CSysString GetBaseFolderPrefix() { CSysString libPrefix = GetLibraryFolderPrefix(); CSysString temp = libPrefix; temp.Delete(temp.Length() - 1); int pos = temp.ReverseFind(TEXT(CHAR_PATH_SEPARATOR)); return temp.Left(pos + 1); }
static CSysString GetLibraryFolderPrefix() { #ifdef _WIN32 TCHAR fullPath[MAX_PATH + 1]; ::GetModuleFileName(g_hInstance, fullPath, MAX_PATH); CSysString path = fullPath; int pos = path.ReverseFind(TEXT(CHAR_PATH_SEPARATOR)); return path.Left(pos + 1); #else return CSysString(); // FIX IT #endif }
static CSysString GetLibraryFolderPrefix() { #ifdef _WIN32 TCHAR fullPath[MAX_PATH + 1]; ::GetModuleFileName(g_hInstance, fullPath, MAX_PATH); CSysString path = fullPath; int pos = path.ReverseFind(TEXT(CHAR_PATH_SEPARATOR)); return path.Left(pos + 1); #else const char *p7zip_home_dir = getenv("P7ZIP_HOME_DIR"); if (p7zip_home_dir == 0) p7zip_home_dir="./"; #ifdef _UNICODE return MultiByteToUnicodeString(p7zip_home_dir); #else return p7zip_home_dir; #endif #endif }
void CPlugin::ReadPluginPanelItem(PluginPanelItem &panelItem, UInt32 itemIndex) { NCOM::CPropVariant prop; if (_folder->GetProperty(itemIndex, kpidName, &prop) != S_OK) throw 271932; if (prop.vt != VT_BSTR) throw 272340; CSysString oemString = UnicodeStringToMultiByte(prop.bstrVal, CP_OEMCP); const int kFileNameSizeMax = (int)(sizeof(panelItem.FindData.cFileName) / sizeof(panelItem.FindData.cFileName[0]) - 1); if (oemString.Length() > kFileNameSizeMax) oemString = oemString.Left(kFileNameSizeMax); if (oemString == "..") oemString = kDotsReplaceString; MyStringCopy(panelItem.FindData.cFileName, (const char *)oemString); panelItem.FindData.cAlternateFileName[0] = 0; if (_folder->GetProperty(itemIndex, kpidAttrib, &prop) != S_OK) throw 271932; if (prop.vt == VT_UI4) panelItem.FindData.dwFileAttributes = prop.ulVal; else if (prop.vt == VT_EMPTY) panelItem.FindData.dwFileAttributes = m_FileInfo.Attrib; else throw 21631; if (_folder->GetProperty(itemIndex, kpidIsDir, &prop) != S_OK) throw 271932; if (prop.vt == VT_BOOL) { if (VARIANT_BOOLToBool(prop.boolVal)) panelItem.FindData.dwFileAttributes |= FILE_ATTRIBUTE_DIRECTORY; } else if (prop.vt != VT_EMPTY) throw 21632; if (_folder->GetProperty(itemIndex, kpidSize, &prop) != S_OK) throw 271932; UInt64 length; if (prop.vt == VT_EMPTY) length = 0; else length = ::ConvertPropVariantToUInt64(prop); panelItem.FindData.nFileSizeLow = (UInt32)length; panelItem.FindData.nFileSizeHigh = (UInt32)(length >> 32); MyGetFileTime(_folder, itemIndex, kpidCTime, panelItem.FindData.ftCreationTime); MyGetFileTime(_folder, itemIndex, kpidATime, panelItem.FindData.ftLastAccessTime); MyGetFileTime(_folder, itemIndex, kpidMTime, panelItem.FindData.ftLastWriteTime); if (panelItem.FindData.ftLastWriteTime.dwHighDateTime == 0 && panelItem.FindData.ftLastWriteTime.dwLowDateTime == 0) panelItem.FindData.ftLastWriteTime = m_FileInfo.MTime; if (_folder->GetProperty(itemIndex, kpidPackSize, &prop) != S_OK) throw 271932; if (prop.vt == VT_EMPTY) length = 0; else length = ::ConvertPropVariantToUInt64(prop); panelItem.PackSize = UInt32(length); panelItem.PackSizeHigh = UInt32(length >> 32); panelItem.Flags = 0; panelItem.NumberOfLinks = 0; panelItem.Description = NULL; panelItem.Owner = NULL; panelItem.CustomColumnData = NULL; panelItem.CustomColumnNumber = 0; panelItem.Reserved[0] = 0; panelItem.Reserved[1] = 0; panelItem.Reserved[2] = 0; }
static CSysString GetLibraryFolderPrefix() { CSysString path = GetLibraryPath(); int pos = path.ReverseFind(TEXT(CHAR_PATH_SEPARATOR)); return path.Left(pos + 1); }