[RAPPS]
[reactos.git] / reactos / base / applications / rapps / misc.cpp
index 927b400..b1c2938 100644 (file)
@@ -1,16 +1,17 @@
 /*
- * 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;
@@ -243,7 +214,8 @@ BOOL ExtractFilesFromCab(LPCWSTR lpCabName, LPCWSTR lpOutputPath)
     CHAR szCabName[MAX_PATH];
     SESSION Dest;
     HRESULT Result;
-
+    fnExtract pfnExtract;
+    
     hCabinetDll = LoadLibraryW(L"cabinet.dll");
     if (hCabinetDll)
     {
@@ -352,14 +324,14 @@ BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPCWSTR lpMsg)
 }
 
 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(),
@@ -405,14 +377,10 @@ BOOL GetInstalledVersion(ATL::CStringW *pszVersion, const ATL::CStringW &szRegNa
 }
 
 // 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)
@@ -421,37 +389,23 @@ 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)