[RAPPS] Stopped GCC whining (fixed GCC build)

svn path=/branches/GSoC_2017/rapps/; revision=75824
This commit is contained in:
Alexander Shaposhnikov 2017-09-10 21:02:06 +00:00
parent fa2ddd2f4c
commit a219ebec32
9 changed files with 76 additions and 73 deletions

View file

@ -32,7 +32,10 @@ list(APPEND SOURCE
include/unattended.h
)
add_definitions(-DUSE_CERT_PINNING)
add_definitions(
-DUSE_CERT_PINNING
-D_ATL_NO_EXCEPTIONS)
file(GLOB_RECURSE rapps_rc_deps res/*.*)
add_rc_deps(rapps.rc ${rapps_rc_deps})
add_executable(rapps ${SOURCE} rapps.rc)

View file

@ -19,9 +19,9 @@
// CAvailableApplicationInfo
CAvailableApplicationInfo::CAvailableApplicationInfo(const ATL::CStringW& sFileNameParam)
: m_Parser(sFileNameParam)
: m_IsInstalled(FALSE), m_HasLanguageInfo(FALSE), m_HasInstalledVersion(FALSE), m_Parser(sFileNameParam)
{
m_LicenseType = LicenseType::LICENSE_NONE;
m_LicenseType = LICENSE_NONE;
m_sFileName = sFileNameParam;
@ -74,7 +74,8 @@ VOID CAvailableApplicationInfo::RetrieveInstalledStatus()
VOID CAvailableApplicationInfo::RetrieveInstalledVersion()
{
ATL::CStringW szNameVersion = m_szName + L" " + m_szVersion;
ATL::CStringW szNameVersion;
szNameVersion = m_szName + L" " + m_szVersion;
m_HasInstalledVersion = ::GetInstalledVersion(&m_szInstalledVersion, m_szRegName)
|| ::GetInstalledVersion(&m_szInstalledVersion, m_szName)
|| ::GetInstalledVersion(&m_szInstalledVersion, szNameVersion);
@ -133,7 +134,7 @@ VOID CAvailableApplicationInfo::RetrieveLicenseType()
}
else
{
m_LicenseType = LicenseType::LICENSE_NONE;
m_LicenseType = LICENSE_NONE;
}
}

View file

@ -1,4 +1,4 @@
/*
/*
* PROJECT: ReactOS Applications Manager
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* FILE: base/applications/rapps/gui.cpp
@ -113,13 +113,13 @@ class CAvailableAppView
ATL::CStringW szLicense;
switch (Info->m_LicenseType)
{
case LicenseType::LICENSE_OPENSOURCE:
case LICENSE_OPENSOURCE:
szLicense.LoadStringW(IDS_LICENSE_OPENSOURCE);
break;
case LicenseType::LICENSE_FREEWARE:
case LICENSE_FREEWARE:
szLicense.LoadStringW(IDS_LICENSE_FREEWARE);
break;
case LicenseType::LICENSE_TRIAL:
case LICENSE_TRIAL:
szLicense.LoadStringW(IDS_LICENSE_TRIAL);
break;
default:
@ -368,8 +368,8 @@ class CAppsListView :
public:
CAppsListView() :
bAscending(TRUE),
bHasAllChecked(FALSE),
bAscending(TRUE),
bHasCheckboxes(FALSE)
{
}
@ -557,11 +557,17 @@ public:
class CSideTreeView :
public CUiWindow<CTreeView>
{
HIMAGELIST hImageTreeView = ImageList_Create(TREEVIEW_ICON_SIZE, TREEVIEW_ICON_SIZE,
GetSystemColorDepth() | ILC_MASK,
0, 1);
HIMAGELIST hImageTreeView;
public:
CSideTreeView() :
CUiWindow(),
hImageTreeView(ImageList_Create(TREEVIEW_ICON_SIZE, TREEVIEW_ICON_SIZE,
GetSystemColorDepth() | ILC_MASK,
0, 1))
{
}
HTREEITEM AddItem(HTREEITEM hParent, ATL::CStringW &Text, INT Image, INT SelectedImage, LPARAM lParam)
{
return CUiWindow<CTreeView>::AddItem(hParent, const_cast<LPWSTR>(Text.GetString()), Image, SelectedImage, lParam);
@ -603,7 +609,6 @@ public:
~CSideTreeView()
{
DestroyImageList();
CUiWindow<CTreeView>::~CUiWindow();
}
};
@ -1352,7 +1357,7 @@ private:
UpdateApplicationsList(-1);
}
}
}
break;
case ID_UNINSTALL:
@ -1409,7 +1414,7 @@ private:
}
}
static BOOL SearchPatternMatch(PCWSTR szHaystack, PCWSTR szNeedle)
static BOOL SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle)
{
if (!*szNeedle)
return TRUE;
@ -1456,15 +1461,15 @@ private:
HIMAGELIST hImageListView = ListView_GetImageList(hListView, LVSIL_SMALL);
if (!SearchPatternMatch(Info->m_szName, szSearchPattern) &&
!SearchPatternMatch(Info->m_szDesc, szSearchPattern))
if (!SearchPatternMatch(Info->m_szName.GetString(), szSearchPattern) &&
!SearchPatternMatch(Info->m_szDesc.GetString(), szSearchPattern))
{
return TRUE;
}
/* Load icon from file */
ATL::CStringW szIconPath;
szIconPath.Format(L"%lsicons\\%ls.ico", szFolderPath, Info->m_szName);
szIconPath.Format(L"%lsicons\\%ls.ico", szFolderPath, Info->m_szName.GetString());
hIcon = (HICON) LoadImageW(NULL,
szIconPath.GetString(),
IMAGE_ICON,
@ -1481,7 +1486,7 @@ private:
Index = ImageList_AddIcon(hImageListView, hIcon);
DestroyIcon(hIcon);
Index = ListViewAddItem(Info->m_Category, Index, Info->m_szName, (LPARAM) Info);
Index = ListViewAddItem(Info->m_Category, Index, Info->m_szName.GetString(), (LPARAM) Info);
ListView_SetImageList(hListView, hImageListView, LVSIL_SMALL);
ListView_SetItemText(hListView, Index, 1, const_cast<LPWSTR>(Info->m_szVersion.GetString()));
@ -1515,7 +1520,7 @@ private:
{
EnumType = SelectedEnumType;
}
//if previous one was INSTALLED purge the list
//TODO: make the Installed category a separate class to avoid doing this
if (bWasInInstalled)

View file

@ -19,7 +19,7 @@ enum LicenseType
inline BOOL IsLicenseType(INT x)
{
return (x >= LicenseType::LICENSE_MIN && x <= LicenseType::LICENSE_MAX);
return (x >= LICENSE_MIN && x <= LICENSE_MAX);
}
struct CAvailableApplicationInfo
@ -60,9 +60,9 @@ struct CAvailableApplicationInfo
VOID SetLastWriteTime(FILETIME* ftTime);
private:
BOOL m_IsInstalled = FALSE;
BOOL m_HasLanguageInfo = FALSE;
BOOL m_HasInstalledVersion = FALSE;
BOOL m_IsInstalled;
BOOL m_HasLanguageInfo;
BOOL m_HasInstalledVersion;
CConfigParser m_Parser;
inline BOOL GetString(LPCWSTR lpKeyName, ATL::CStringW& ReturnedString);
@ -86,7 +86,7 @@ class CAvailableApps
static ATL::CStringW m_szSearchPath;
static BOOL InitializeStaticStrings();
ATL::CAtlList<CAvailableApplicationInfo*> m_InfoList;
public:

View file

@ -61,10 +61,10 @@ enum AppsCategories
inline BOOL IsAvailableEnum(INT x)
{
return (x >= AppsCategories::ENUM_AVAILABLE_MIN && x <= AppsCategories::ENUM_AVAILABLE_MAX);
return (x >= ENUM_AVAILABLE_MIN && x <= ENUM_AVAILABLE_MAX);
}
inline BOOL IsInstalledEnum(INT x)
{
return (x >= AppsCategories::ENUM_INSTALLED_MIN && x <= AppsCategories::ENUM_INSTALLED_MAX);
return (x >= ENUM_INSTALLED_MIN && x <= ENUM_INSTALLED_MAX);
}

View file

@ -13,7 +13,6 @@ class CDownloadManager
{
static ATL::CSimpleArray<DownloadInfo> AppsToInstallList;
static CDowloadingAppsListView DownloadsListView;
static INT iCurrentApp;
static VOID Download(const DownloadInfo& DLInfo, BOOL bIsModal = FALSE);

View file

@ -1,5 +1,3 @@
#pragma once
#ifndef _RAPPS_H
#define _RAPPS_H

View file

@ -1,4 +1,4 @@
/*
/*
* PROJECT: ReactOS Applications Manager
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* FILE: base/applications/rapps/loaddlg.cpp
@ -51,17 +51,17 @@
#define CERT_SUBJECT_INFO "Domain Control Validated\r\n*.reactos.org"
#endif
typedef enum
enum DownloadStatus
{
DLWaiting = IDS_STATUS_WAITING,
DLDownloading = IDS_STATUS_DOWNLOADING,
DLWaitingToInstall = IDS_STATUS_DOWNLOADED,
DLInstalling = IDS_STATUS_INSTALLING,
DLInstalled = IDS_STATUS_INSTALLED,
DLFinished = IDS_STATUS_FINISHED
} DOWNLOAD_STATUS;
DLSTATUS_WAITING = IDS_STATUS_WAITING,
DLSTATUS_DOWNLOADING = IDS_STATUS_DOWNLOADING,
DLSTATUS_WAITING_INSTALL = IDS_STATUS_DOWNLOADED,
DLSTATUS_INSTALLING = IDS_STATUS_INSTALLING,
DLSTATUS_INSTALLED = IDS_STATUS_INSTALLED,
DLSTATUS_FINISHED = IDS_STATUS_FINISHED
};
ATL::CStringW LoadStatusString(DOWNLOAD_STATUS StatusParam)
ATL::CStringW LoadStatusString(DownloadStatus StatusParam)
{
ATL::CStringW szString;
szString.LoadStringW(StatusParam);
@ -259,11 +259,11 @@ public:
{
for (INT i = 0; i < arrInfo.GetSize(); ++i)
{
AddRow(i, arrInfo[i].szName.GetString(), DOWNLOAD_STATUS::DLWaiting);
AddRow(i, arrInfo[i].szName.GetString(), DLSTATUS_WAITING);
}
}
VOID SetDownloadStatus(INT ItemIndex, DOWNLOAD_STATUS Status)
VOID SetDownloadStatus(INT ItemIndex, DownloadStatus Status)
{
HWND hListView = GetWindow();
ATL::CStringW szBuffer = LoadStatusString(Status);
@ -283,7 +283,7 @@ public:
return InsertItem(&Item);
}
VOID AddRow(INT RowIndex, LPCWSTR szAppName, const DOWNLOAD_STATUS Status)
VOID AddRow(INT RowIndex, LPCWSTR szAppName, const DownloadStatus Status)
{
ATL::CStringW szStatus = LoadStatusString(Status);
AddItem(RowIndex,
@ -376,7 +376,6 @@ inline VOID MessageBox_LoadString(HWND hMainWnd, INT StringID)
// CDownloadManager
ATL::CSimpleArray<DownloadInfo> CDownloadManager::AppsToInstallList;
CDowloadingAppsListView CDownloadManager::DownloadsListView;
INT CDownloadManager::iCurrentApp;
VOID CDownloadManager::Download(const DownloadInfo &DLInfo, BOOL bIsModal)
{
@ -549,6 +548,8 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
PWSTR p, q;
HWND hDlg = static_cast<DownloadParam*>(param)->Dialog;
HWND Item;
INT iAppId;
ULONG dwContentLen, dwBytesWritten, dwBytesRead, dwStatus;
ULONG dwCurrentBytesRead = 0;
@ -567,25 +568,21 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
URL_COMPONENTS urlComponents;
size_t urlLength, filenameLength;
const INT iAppId = iCurrentApp;
const ATL::CSimpleArray<DownloadInfo> &InfoArray = static_cast<DownloadParam*>(param)->AppInfo;
LPCWSTR szCaption = static_cast<DownloadParam*>(param)->szCaption;
ATL::CStringW szNewCaption;
if (InfoArray.GetSize() <= 0)
{
MessageBox_LoadString(hMainWnd, IDS_UNABLE_TO_DOWNLOAD);
goto end;
}
for (INT iAppId = 0; iAppId < InfoArray.GetSize(); ++iAppId)
for (iAppId = 0; iAppId < InfoArray.GetSize(); ++iAppId)
{
const DownloadInfo &CurrentInfo = InfoArray[iAppId];
// build the path for the download
p = wcsrchr(CurrentInfo.szUrl.GetString(), L'/');
q = wcsrchr(CurrentInfo.szUrl.GetString(), L'?');
p = wcsrchr(InfoArray[iAppId].szUrl.GetString(), L'/');
q = wcsrchr(InfoArray[iAppId].szUrl.GetString(), L'?');
// do we have a final slash separator?
if (!p)
@ -600,7 +597,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
filenameLength -= wcslen(q - 1) * sizeof(WCHAR);
// is this URL an update package for RAPPS? if so store it in a different place
if (CurrentInfo.szUrl == APPLICATION_DATABASE_URL)
if (InfoArray[iAppId].szUrl == APPLICATION_DATABASE_URL)
{
bCab = TRUE;
if (!GetStorageDirectory(Path))
@ -622,15 +619,15 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
Path += L"\\";
Path += (LPWSTR) (p + 1);
if (!bCab && CurrentInfo.szSHA1[0] && GetFileAttributesW(Path.GetString()) != INVALID_FILE_ATTRIBUTES)
if (!bCab && InfoArray[iAppId].szSHA1[0] && GetFileAttributesW(Path.GetString()) != INVALID_FILE_ATTRIBUTES)
{
// only open it in case of total correctness
if (VerifyInteg(CurrentInfo.szSHA1.GetString(), Path))
if (VerifyInteg(InfoArray[iAppId].szSHA1.GetString(), Path))
goto run;
}
// Reset progress bar
HWND Item = GetDlgItem(hDlg, IDC_DOWNLOAD_PROGRESS);
Item = GetDlgItem(hDlg, IDC_DOWNLOAD_PROGRESS);
if (Item)
{
SendMessageW(Item, PBM_SETPOS, 0, 0);
@ -639,7 +636,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
// Change caption to show the currently downloaded app
if (!bCab)
{
szNewCaption.Format(szCaption, CurrentInfo.szName.GetString());
szNewCaption.Format(szCaption, InfoArray[iAppId].szName.GetString());
}
else
{
@ -649,9 +646,9 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
SetWindowTextW(hDlg, szNewCaption.GetString());
// Add the download URL
SetDlgItemTextW(hDlg, IDC_DOWNLOAD_STATUS, CurrentInfo.szUrl.GetString());
SetDlgItemTextW(hDlg, IDC_DOWNLOAD_STATUS, InfoArray[iAppId].szUrl.GetString());
DownloadsListView.SetDownloadStatus(iAppId, DOWNLOAD_STATUS::DLDownloading);
DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_DOWNLOADING);
// download it
bTempfile = TRUE;
@ -680,7 +677,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
if (!hOpen)
goto end;
hFile = InternetOpenUrlW(hOpen, CurrentInfo.szUrl.GetString(), NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_KEEP_CONNECTION, 0);
hFile = InternetOpenUrlW(hOpen, InfoArray[iAppId].szUrl.GetString(), NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_KEEP_CONNECTION, 0);
if (!hFile)
{
@ -702,13 +699,13 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
memset(&urlComponents, 0, sizeof(urlComponents));
urlComponents.dwStructSize = sizeof(urlComponents);
urlLength = CurrentInfo.szUrl.GetLength();
urlLength = InfoArray[iAppId].szUrl.GetLength();
urlComponents.dwSchemeLength = urlLength + 1;
urlComponents.lpszScheme = (LPWSTR) malloc(urlComponents.dwSchemeLength * sizeof(WCHAR));
urlComponents.dwHostNameLength = urlLength + 1;
urlComponents.lpszHostName = (LPWSTR) malloc(urlComponents.dwHostNameLength * sizeof(WCHAR));
if (!InternetCrackUrlW(CurrentInfo.szUrl, urlLength + 1, ICU_DECODE | ICU_ESCAPE, &urlComponents))
if (!InternetCrackUrlW(InfoArray[iAppId].szUrl, urlLength + 1, ICU_DECODE | ICU_ESCAPE, &urlComponents))
goto end;
if (urlComponents.nScheme == INTERNET_SCHEME_HTTP || urlComponents.nScheme == INTERNET_SCHEME_HTTPS)
@ -720,7 +717,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
#ifdef USE_CERT_PINNING
// are we using HTTPS to download the RAPPS update package? check if the certificate is original
if ((urlComponents.nScheme == INTERNET_SCHEME_HTTPS) &&
(wcscmp(CurrentInfo.szUrl, APPLICATION_DATABASE_URL) == 0) &&
(wcscmp(InfoArray[iAppId].szUrl, APPLICATION_DATABASE_URL) == 0) &&
(!CertIsValid(hOpen, urlComponents.lpszHostName)))
{
MessageBox_LoadString(hMainWnd, IDS_CERT_DOES_NOT_MATCH);
@ -752,7 +749,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
}
dwCurrentBytesRead += dwBytesRead;
dl->OnProgress(dwCurrentBytesRead, dwContentLen, 0, CurrentInfo.szUrl.GetString());
dl->OnProgress(dwCurrentBytesRead, dwContentLen, 0, InfoArray[iAppId].szUrl.GetString());
} while (dwBytesRead && !bCancelled);
CloseHandle(hOut);
@ -763,7 +760,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
/* if this thing isn't a RAPPS update and it has a SHA-1 checksum
verify its integrity by using the native advapi32.A_SHA1 functions */
if (!bCab && CurrentInfo.szSHA1[0] != 0)
if (!bCab && InfoArray[iAppId].szSHA1[0] != 0)
{
ATL::CStringW szMsgText;
@ -775,7 +772,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
SendMessageW(GetDlgItem(hDlg, IDC_DOWNLOAD_STATUS), WM_SETTEXT, 0, (LPARAM) Path.GetString());
// this may take a while, depending on the file size
if (!VerifyInteg(CurrentInfo.szSHA1.GetString(), Path.GetString()))
if (!VerifyInteg(InfoArray[iAppId].szSHA1.GetString(), Path.GetString()))
{
if (!szMsgText.LoadStringW(IDS_INTEG_CHECK_FAIL))
goto end;
@ -786,7 +783,7 @@ DWORD WINAPI CDownloadManager::ThreadFunc(LPVOID param)
}
run:
DownloadsListView.SetDownloadStatus(iAppId, DOWNLOAD_STATUS::DLWaitingToInstall);
DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_WAITING_INSTALL);
// run it
if (!bCab)
@ -801,7 +798,7 @@ run:
if (ShellExecuteExW(&shExInfo))
{
DownloadsListView.SetDownloadStatus(iAppId, DOWNLOAD_STATUS::DLInstalling);
DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_INSTALLING);
//TODO: issue an install operation separately so that the apps could be downloaded in the background
WaitForSingleObject(shExInfo.hProcess, INFINITE);
CloseHandle(shExInfo.hProcess);
@ -825,10 +822,10 @@ end:
DeleteFileW(Path.GetString());
}
DownloadsListView.SetDownloadStatus(iAppId, DOWNLOAD_STATUS::DLFinished);
DownloadsListView.SetDownloadStatus(iAppId, DLSTATUS_FINISHED);
}
delete param;
delete static_cast<DownloadParam*>(param);
SendMessageW(hDlg, WM_CLOSE, 0, 0);
return 0;
}

View file

@ -324,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(),
@ -389,7 +389,7 @@ 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;
}