/*
- * PROJECT: ReactOS Applications Manager
- * LICENSE: GPL - See COPYING in the top level directory
- * FILE: base/applications/rapps/misc.cpp
- * PURPOSE: Misc functions
- * PROGRAMMERS: Dmitry Chapyshev (dmitry@reactos.org)
- * Ismael Ferreras Morezuelas (swyterzone+ros@gmail.com)
- * Alexander Shaposhnikov (chaez.san@gmail.com)
+ * PROJECT: ReactOS Applications Manager
+ * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
+ * FILE: base/applications/rapps/misc.cpp
+ * PURPOSE: Misc functions
+ * COPYRIGHT: Copyright 2009 Dmitry Chapyshev (dmitry@reactos.org)
+ * Copyright 2015 Ismael Ferreras Morezuelas (swyterzone+ros@gmail.com)
+ * Copyright 2017 Alexander Shaposhnikov (sanchaez@reactos.org)
*/
-#include "defines.h"
+#include "rapps.h"
#include "gui.h"
#include "misc.h"
+#include "cabinet.h"
/* SESSION Operation */
#define EXTRACT_FILLFILELIST 0x00000001
static HANDLE hLog = NULL;
-struct ERF
-{
- INT erfOper;
- INT erfType;
- BOOL fError;
-};
-
-struct FILELIST
-{
- LPSTR FileName;
- FILELIST *next;
- BOOL DoExtract;
-};
-
-struct SESSION
-{
- INT FileSize;
- ERF Error;
- FILELIST *FileList;
- INT FileCount;
- INT Operation;
- CHAR Destination[MAX_PATH];
- CHAR CurrentFile[MAX_PATH];
- CHAR Reserved[MAX_PATH];
- FILELIST *FilterList;
-};
-
-typedef HRESULT(WINAPI *fnExtract)(SESSION *dest, LPCSTR szCabName);
-fnExtract pfnExtract;
-
INT GetWindowWidth(HWND hwnd)
{
RECT Rect;
CHAR szCabName[MAX_PATH];
SESSION Dest;
HRESULT Result;
-
+ fnExtract pfnExtract;
+
hCabinetDll = LoadLibraryW(L"cabinet.dll");
if (hCabinetDll)
{
}
BOOL GetInstalledVersion_WowUser(ATL::CStringW* szVersionResult,
- const ATL::CStringW& RegName,
+ const ATL::CStringW& szRegName,
BOOL IsUserKey,
REGSAM keyWow)
{
BOOL bHasSucceded = FALSE;
ATL::CRegKey key;
ATL::CStringW szVersion;
- ATL::CStringW szPath = L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + RegName;
+ ATL::CStringW szPath = ATL::CStringW(L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\%ls") + szRegName;
if (key.Open(IsUserKey ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE,
szPath.GetString(),
}
// CConfigParser
-ATL::CStringW CConfigParser::m_szLocaleID;
-ATL::CStringW CConfigParser::m_szCachedINISectionLocale;
-ATL::CStringW CConfigParser::m_szCachedINISectionLocaleNeutral;
CConfigParser::CConfigParser(const ATL::CStringW& FileName) : szConfigPath(GetINIFullPath(FileName))
{
- // we don't have cached section strings for the current system language, create them, lazy
- CacheINILocaleLazy();
+ CacheINILocale();
}
ATL::CStringW CConfigParser::GetINIFullPath(const ATL::CStringW& FileName)
ATL::CStringW szBuffer;
GetStorageDirectory(szDir);
- szBuffer.Format(L"%ls\\rapps\\%ls", szDir, FileName);
+ szBuffer.Format(L"%ls\\rapps\\%ls", szDir.GetString(), FileName.GetString());
return szBuffer;
}
-VOID CConfigParser::CacheINILocaleLazy()
+VOID CConfigParser::CacheINILocale()
{
- if (m_szLocaleID.IsEmpty())
- {
- // TODO: Set default locale if call fails
- // find out what is the current system lang code (e.g. "0a") and append it to SectionLocale
- GetLocaleInfoW(GetUserDefaultLCID(), LOCALE_ILANGUAGE,
- m_szLocaleID.GetBuffer(m_cchLocaleSize), m_cchLocaleSize);
+ // TODO: Set default locale if call fails
+ // find out what is the current system lang code (e.g. "0a") and append it to SectionLocale
+ GetLocaleInfoW(GetUserDefaultLCID(), LOCALE_ILANGUAGE,
+ m_szLocaleID.GetBuffer(m_cchLocaleSize), m_cchLocaleSize);
- m_szLocaleID.ReleaseBuffer();
- m_szCachedINISectionLocale = L"Section." + m_szLocaleID;
+ m_szLocaleID.ReleaseBuffer();
+ m_szCachedINISectionLocale = L"Section." + m_szLocaleID;
- // turn "Section.0c0a" into "Section.0a", keeping just the neutral lang part
- m_szCachedINISectionLocaleNeutral = m_szCachedINISectionLocale + m_szLocaleID.Right(2);
- }
-}
-
-const ATL::CStringW& CConfigParser::GetLocale()
-{
- CacheINILocaleLazy();
- return m_szLocaleID;
-}
-
-INT CConfigParser::GetLocaleSize()
-{
- return m_cchLocaleSize;
+ // turn "Section.0c0a" into "Section.0a", keeping just the neutral lang part
+ m_szCachedINISectionLocaleNeutral = m_szCachedINISectionLocale + m_szLocaleID.Right(2);
}
UINT CConfigParser::GetString(const ATL::CStringW& KeyName, ATL::CStringW& ResultString)