summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-08-31 21:22:45 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-08-31 21:22:45 +0300
commita37056499d9d71dcad002ddb6668ffcb15f936af (patch)
tree29d6e261a94d4551840b062a03e9853a19a34b22
parent038bdcc30724bf98d1ebb8a4238680e8a09e1424 (diff)
Plugin Updater:
- folder creation moved to CreateWorkFolders(); - TFileName type added to simplify life with C types; - code cleaning;
-rw-r--r--plugins/PluginUpdater/src/DlgListNew.cpp96
-rw-r--r--plugins/PluginUpdater/src/DlgUpdate.cpp210
-rw-r--r--plugins/PluginUpdater/src/Events.cpp12
-rw-r--r--plugins/PluginUpdater/src/Notifications.cpp14
-rw-r--r--plugins/PluginUpdater/src/Options.cpp6
-rw-r--r--plugins/PluginUpdater/src/PluginUpdater.cpp8
-rw-r--r--plugins/PluginUpdater/src/Utils.cpp87
-rw-r--r--plugins/PluginUpdater/src/checksum.cpp4
-rw-r--r--plugins/PluginUpdater/src/stdafx.h32
-rw-r--r--plugins/PluginUpdater/src/unzipfile.cpp48
10 files changed, 260 insertions, 257 deletions
diff --git a/plugins/PluginUpdater/src/DlgListNew.cpp b/plugins/PluginUpdater/src/DlgListNew.cpp
index 8703fafc7a..13f116333e 100644
--- a/plugins/PluginUpdater/src/DlgListNew.cpp
+++ b/plugins/PluginUpdater/src/DlgListNew.cpp
@@ -29,8 +29,8 @@ bool FILEINFO::IsFiltered(const CMStringW &wszFilter)
if (wszFilter.IsEmpty())
return false;
- wchar_t pathLwr[MAX_PATH];
- wcsncpy_s(pathLwr, this->tszNewName, _TRUNCATE);
+ TFileName pathLwr;
+ wcsncpy_s(pathLwr, this->wszNewName, _TRUNCATE);
wcslwr(pathLwr);
return wcsstr(pathLwr, wszFilter) == 0;
}
@@ -56,12 +56,12 @@ static LRESULT CALLBACK PluginListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LP
if (ListView_GetItem(hwnd, &lvi) && lvi.iGroupId == 1) {
FILEINFO *info = (FILEINFO *)lvi.lParam;
- wchar_t tszFileName[MAX_PATH];
- wcscpy(tszFileName, wcsrchr(info->tszNewName, L'\\') + 1);
- wchar_t *p = wcschr(tszFileName, L'.'); *p = 0;
+ TFileName wszFileName;
+ wcscpy(wszFileName, wcsrchr(info->wszNewName, L'\\') + 1);
+ wchar_t *p = wcschr(wszFileName, L'.'); *p = 0;
- wchar_t link[MAX_PATH];
- mir_snwprintf(link, PLUGIN_INFO_URL, tszFileName);
+ TFileName link;
+ mir_snwprintf(link, PLUGIN_INFO_URL, wszFileName);
Utils_OpenUrlW(link);
}
}
@@ -99,14 +99,14 @@ class CMissingPLuginsDlg : public CDlgBase
continue;
int groupId = 4;
- if (wcschr(p->tszOldName, L'\\') != nullptr)
- groupId = (wcsstr(p->tszOldName, L"Plugins") != nullptr) ? 1 : ((wcsstr(p->tszOldName, L"Languages") != nullptr) ? 3 : 2);
+ if (wcschr(p->wszOldName, L'\\') != nullptr)
+ groupId = (wcsstr(p->wszOldName, L"Plugins") != nullptr) ? 1 : ((wcsstr(p->wszOldName, L"Languages") != nullptr) ? 3 : 2);
lvi.iItem = todo->indexOf(&p);
lvi.lParam = (LPARAM)p;
lvi.iGroupId = groupId;
lvi.iImage = ((groupId == 1) ? 0 : -1);
- lvi.pszText = p->tszOldName;
+ lvi.pszText = p->wszOldName;
m_list.InsertItem(&lvi);
if (p->bEnabled) {
@@ -154,7 +154,7 @@ public:
m_list.SetImageList(hIml, LVSIL_SMALL);
if (IsWinVer7Plus()) {
- wchar_t szPath[MAX_PATH];
+ TFileName szPath;
GetModuleFileNameW(nullptr, szPath, _countof(szPath));
wchar_t *ext = wcsrchr(szPath, '.');
if (ext != nullptr)
@@ -294,15 +294,10 @@ public:
AutoHandle pipe(hPipe);
// create needed folders after escalating priviledges. Folders creates when we actually install updates
- wchar_t tszFileTemp[MAX_PATH], tszFileBack[MAX_PATH];
+ TFileName wszTempFolder, wszBackupFolder;
+ CreateWorkFolders(wszTempFolder, wszBackupFolder);
- mir_snwprintf(tszFileBack, L"%s\\Backups", g_tszRoot);
- SafeCreateDirectory(tszFileBack);
-
- mir_snwprintf(tszFileTemp, L"%s\\Temp", g_tszRoot);
- SafeCreateDirectory(tszFileTemp);
-
- VARSW tszMirandaPath(L"%miranda_path%");
+ VARSW wszMirandaPath(L"%miranda_path%");
HNETLIBCONN nlc = nullptr;
int i = 0;
@@ -317,9 +312,9 @@ public:
if (DownloadFile(&p->File, nlc)) {
m_list.SetItemText(i, 1, TranslateT("Succeeded."));
- if (!unzip(p->File.tszDiskPath, tszMirandaPath, tszFileBack, false))
- SafeDeleteFile(p->File.tszDiskPath); // remove .zip after successful update
- db_unset(0, DB_MODULE_NEW_FILES, _T2A(p->tszOldName));
+ if (!unzip(p->File.wszDiskPath, wszMirandaPath, wszBackupFolder, false))
+ SafeDeleteFile(p->File.wszDiskPath); // remove .zip after successful update
+ db_unset(0, DB_MODULE_NEW_FILES, _T2A(p->wszOldName));
}
else m_list.SetItemText(i, 1, TranslateT("Failed!"));
}
@@ -355,35 +350,35 @@ static void __stdcall LaunchListDialog(void *param)
(new CMissingPLuginsDlg((OBJLIST<FILEINFO> *)param))->Show();
}
-static FILEINFO* ServerEntryToFileInfo(const ServListEntry &hash, const wchar_t* tszBaseUrl, const wchar_t* tszPath)
+static FILEINFO* ServerEntryToFileInfo(const ServListEntry &hash, const wchar_t* pwszBaseUrl, const wchar_t* pwszPath)
{
FILEINFO *FileInfo = new FILEINFO;
FileInfo->bDeleteOnly = FALSE;
// copy the relative old name
- wcsncpy_s(FileInfo->tszOldName, hash.m_name, _TRUNCATE);
- wcsncpy_s(FileInfo->tszNewName, hash.m_name, _TRUNCATE);
+ wcsncpy_s(FileInfo->wszOldName, hash.m_name, _TRUNCATE);
+ wcsncpy_s(FileInfo->wszNewName, hash.m_name, _TRUNCATE);
- wchar_t tszFileName[MAX_PATH];
- wcsncpy_s(tszFileName, wcsrchr(tszPath, L'\\') + 1, _TRUNCATE);
- if (auto *tp = wcschr(tszFileName, L'.'))
+ TFileName wszFileName;
+ wcsncpy_s(wszFileName, wcsrchr(pwszPath, L'\\') + 1, _TRUNCATE);
+ if (auto *tp = wcschr(wszFileName, L'.'))
*tp = 0;
- wchar_t tszRelFileName[MAX_PATH];
- wcsncpy_s(tszRelFileName, hash.m_name, _TRUNCATE);
- if (auto *tp = wcsrchr(tszRelFileName, L'.'))
+ TFileName wszRelFileName;
+ wcsncpy_s(wszRelFileName, hash.m_name, _TRUNCATE);
+ if (auto *tp = wcsrchr(wszRelFileName, L'.'))
*tp = 0;
- if (auto *tp = wcschr(tszRelFileName, L'\\'))
- wcslwr((tp) ? tp+1 : tszRelFileName);
+ if (auto *tp = wcschr(wszRelFileName, L'\\'))
+ wcslwr((tp) ? tp+1 : wszRelFileName);
- mir_snwprintf(FileInfo->File.tszDiskPath, L"%s\\Temp\\%s.zip", g_tszRoot, tszFileName);
- mir_snwprintf(FileInfo->File.tszDownloadURL, L"%s/%s.zip", tszBaseUrl, tszRelFileName);
- for (auto *tp = wcschr(FileInfo->File.tszDownloadURL, '\\'); tp != nullptr; tp = wcschr(tp, '\\'))
+ mir_snwprintf(FileInfo->File.wszDiskPath, L"%s\\Temp\\%s.zip", g_wszRoot, wszFileName);
+ mir_snwprintf(FileInfo->File.wszDownloadURL, L"%s/%s.zip", pwszBaseUrl, wszRelFileName);
+ for (auto *tp = wcschr(FileInfo->File.wszDownloadURL, '\\'); tp != nullptr; tp = wcschr(tp, '\\'))
*tp++ = '/';
FileInfo->File.CRCsum = hash.m_crc;
// Load list of checked Plugins from database
- Netlib_LogfW(hNetlibUser, L"File %s found", FileInfo->tszOldName);
- FileInfo->bEnabled = db_get_b(0, DB_MODULE_NEW_FILES, _T2A(FileInfo->tszOldName)) != 0;
+ Netlib_LogfW(hNetlibUser, L"File %s found", FileInfo->wszOldName);
+ FileInfo->bEnabled = db_get_b(0, DB_MODULE_NEW_FILES, _T2A(FileInfo->wszOldName)) != 0;
return FileInfo;
}
@@ -394,10 +389,10 @@ static void GetList(void *)
{
Thread_SetName("PluginUpdater: GetList");
- wchar_t tszTempPath[MAX_PATH];
- DWORD dwLen = GetTempPath(_countof(tszTempPath), tszTempPath);
- if (tszTempPath[dwLen - 1] == '\\')
- tszTempPath[dwLen - 1] = 0;
+ TFileName wszTempPath;
+ DWORD dwLen = GetTempPath(_countof(wszTempPath), wszTempPath);
+ if (wszTempPath[dwLen - 1] == '\\')
+ wszTempPath[dwLen - 1] = 0;
ptrW updateUrl(GetDefaultUrl()), baseUrl;
SERVLIST hashes(50, CompareHashes);
@@ -410,11 +405,11 @@ static void GetList(void *)
VARSW dirname(L"%miranda_path%");
for (auto &it : hashes) {
- wchar_t tszPath[MAX_PATH];
- mir_snwprintf(tszPath, L"%s\\%s", dirname.get(), it->m_name);
+ TFileName pwszPath;
+ mir_snwprintf(pwszPath, L"%s\\%s", dirname.get(), it->m_name);
- if (GetFileAttributes(tszPath) == INVALID_FILE_ATTRIBUTES) {
- FILEINFO *FileInfo = ServerEntryToFileInfo(*it, baseUrl, tszPath);
+ if (GetFileAttributes(pwszPath) == INVALID_FILE_ATTRIBUTES) {
+ FILEINFO *FileInfo = ServerEntryToFileInfo(*it, baseUrl, pwszPath);
UpdateFiles->insert(FileInfo);
}
}
@@ -472,7 +467,7 @@ static INT_PTR ParseUriService(WPARAM, LPARAM lParam)
if (p == nullptr)
return 1;
- wchar_t pluginPath[MAX_PATH];
+ TFileName pluginPath;
mir_wstrcpy(pluginPath, p + 1);
p = wcschr(pluginPath, '/');
if (p) *p = '\\';
@@ -492,14 +487,13 @@ static INT_PTR ParseUriService(WPARAM, LPARAM lParam)
return 0;
VARSW dirName(L"%miranda_path%");
- wchar_t tszPath[MAX_PATH];
- mir_snwprintf(tszPath, L"%s\\%s", dirName.get(), hash->m_name);
- FILEINFO *fileInfo = ServerEntryToFileInfo(*hash, baseUrl, tszPath);
+ TFileName pwszPath;
+ mir_snwprintf(pwszPath, L"%s\\%s", dirName.get(), hash->m_name);
+ FILEINFO *fileInfo = ServerEntryToFileInfo(*hash, baseUrl, pwszPath);
FILELIST *fileList = new FILELIST(1);
fileList->insert(fileInfo);
CallFunctionAsync(LaunchListDialog, fileList);
-
return 0;
}
diff --git a/plugins/PluginUpdater/src/DlgUpdate.cpp b/plugins/PluginUpdater/src/DlgUpdate.cpp
index 7b036cd70c..3d0b272284 100644
--- a/plugins/PluginUpdater/src/DlgUpdate.cpp
+++ b/plugins/PluginUpdater/src/DlgUpdate.cpp
@@ -44,16 +44,14 @@ class CUpdateDLg : public CDlgBase
return;
}
- VARSW tszMirandaPath(L"%miranda_path%");
+ VARSW wszMirandaPath(L"%miranda_path%");
{
ThreadWatch threadId(pDlg->dwThreadId);
AutoHandle pipe(hPipe);
- //create needed folders after escalating priviledges. Folders creates when we actually install updates
- wchar_t tszFileTemp[MAX_PATH], tszFileBack[MAX_PATH];
- mir_snwprintf(tszFileBack, L"%s\\Backups", g_tszRoot);
- SafeCreateDirectory(tszFileBack);
- mir_snwprintf(tszFileTemp, L"%s\\Temp", g_tszRoot);
- SafeCreateDirectory(tszFileTemp);
+
+ // Create needed folders after escalating priviledges. Folders creates when we actually install updates
+ TFileName wszTempFolder, wszBackupFolder;
+ CreateWorkFolders(wszTempFolder, wszBackupFolder);
// 2) Download all plugins
HNETLIBCONN nlc = nullptr;
@@ -90,9 +88,9 @@ class CUpdateDLg : public CDlgBase
if (it->bEnabled) {
if (it->bDeleteOnly) {
// we need only to backup the old file
- wchar_t *ptszRelPath = it->tszNewName + wcslen(tszMirandaPath) + 1, tszBackFile[MAX_PATH];
- mir_snwprintf(tszBackFile, L"%s\\%s", tszFileBack, ptszRelPath);
- if (dwErrorCode = BackupFile(it->tszNewName, tszBackFile)) {
+ TFileName wszBackFile;
+ mir_snwprintf(wszBackFile, L"%s\\%s", wszBackupFolder, it->wszNewName + wcslen(wszMirandaPath) + 1);
+ if (dwErrorCode = BackupFile(it->wszNewName, wszBackFile)) {
LBL_Error:
Skin_PlaySound("updatefailed");
CMStringW wszError(FORMAT, TranslateT("Unpack operation failed with error code=%d, update terminated"), dwErrorCode);
@@ -104,18 +102,18 @@ LBL_Error:
else {
// if file name differs, we also need to backup the old file here
// otherwise it would be replaced by unzip
- if (_wcsicmp(it->tszOldName, it->tszNewName)) {
- wchar_t tszSrcPath[MAX_PATH], tszBackFile[MAX_PATH];
- mir_snwprintf(tszSrcPath, L"%s\\%s", tszMirandaPath.get(), it->tszOldName);
- mir_snwprintf(tszBackFile, L"%s\\%s", tszFileBack, it->tszOldName);
- if (dwErrorCode = BackupFile(tszSrcPath, tszBackFile))
+ if (_wcsicmp(it->wszOldName, it->wszNewName)) {
+ TFileName wszSrcPath, wszBackFile;
+ mir_snwprintf(wszSrcPath, L"%s\\%s", wszMirandaPath.get(), it->wszOldName);
+ mir_snwprintf(wszBackFile, L"%s\\%s", wszBackupFolder, it->wszOldName);
+ if (dwErrorCode = BackupFile(wszSrcPath, wszBackFile))
goto LBL_Error;
}
- if (dwErrorCode = unzip(it->File.tszDiskPath, tszMirandaPath, tszFileBack, true))
+ if (dwErrorCode = unzip(it->File.wszDiskPath, wszMirandaPath, wszBackupFolder, true))
goto LBL_Error;
- SafeDeleteFile(it->File.tszDiskPath); // remove .zip after successful update
+ SafeDeleteFile(it->File.wszDiskPath); // remove .zip after successful update
}
}
}
@@ -127,7 +125,7 @@ LBL_Error:
CallService(MS_AB_BACKUP, 0, 0);
if (g_plugin.bChangePlatform) {
- wchar_t mirandaPath[MAX_PATH];
+ TFileName mirandaPath;
GetModuleFileName(nullptr, mirandaPath, _countof(mirandaPath));
g_plugin.setWString("OldBin2", mirandaPath);
@@ -152,11 +150,11 @@ LBL_Error:
pDlg->Close();
BOOL bRestartCurrentProfile = g_plugin.getBool("RestartCurrentProfile", true);
if (g_plugin.bChangePlatform) {
- wchar_t mirstartpath[MAX_PATH];
+ TFileName mirstartpath;
#ifdef _WIN64
- mir_snwprintf(mirstartpath, L"%s\\miranda32.exe", tszMirandaPath.get());
+ mir_snwprintf(mirstartpath, L"%s\\miranda32.exe", wszMirandaPath.get());
#else
- mir_snwprintf(mirstartpath, L"%s\\miranda64.exe", tszMirandaPath.get());
+ mir_snwprintf(mirstartpath, L"%s\\miranda64.exe", wszMirandaPath.get());
#endif
CallServiceSync(MS_SYSTEM_RESTART, bRestartCurrentProfile, (LPARAM)mirstartpath);
}
@@ -176,7 +174,7 @@ LBL_Error:
for (auto &it : *m_todo) {
m_list.SetCheckState(m_todo->indexOf(&it), bEnable);
- CMStringA szSetting(it->tszOldName);
+ CMStringA szSetting(it->wszOldName);
db_set_b(0, DB_MODULE_FILES, StrToLower(szSetting.GetBuffer()), it->bEnabled = bEnable);
}
}
@@ -206,19 +204,19 @@ public:
Window_SetIcon_IcoLib(m_hwnd, iconList[0].hIcolib);
if (IsWinVerVistaPlus()) {
- wchar_t szPath[MAX_PATH];
- GetModuleFileName(nullptr, szPath, _countof(szPath));
- wchar_t *ext = wcsrchr(szPath, '.');
+ TFileName wszPath;
+ GetModuleFileName(nullptr, wszPath, _countof(wszPath));
+ wchar_t *ext = wcsrchr(wszPath, '.');
if (ext != nullptr)
*ext = '\0';
- wcscat(szPath, L".test");
- HANDLE hFile = CreateFile(szPath, GENERIC_WRITE, FILE_SHARE_READ, nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
+ wcscat(wszPath, L".test");
+ HANDLE hFile = CreateFileW(wszPath, GENERIC_WRITE, FILE_SHARE_READ, nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
if (hFile == INVALID_HANDLE_VALUE)
// Running Windows Vista or later (major version >= 6).
Button_SetElevationRequiredState(btnOk.GetHwnd(), !IsProcessElevated());
else {
CloseHandle(hFile);
- DeleteFile(szPath);
+ DeleteFileW(wszPath);
}
}
@@ -268,12 +266,12 @@ public:
for (auto &it : *m_todo) {
LVITEM lvI = { 0 };
lvI.mask = LVIF_TEXT | LVIF_PARAM | LVIF_GROUPID | LVIF_NORECOMPUTE;
- lvI.iGroupId = (wcsstr(it->tszOldName, L"Plugins") != nullptr) ? 1 :
- ((wcsstr(it->tszOldName, L"Languages") != nullptr) ? 3 :
- ((wcsstr(it->tszOldName, L"Icons") != nullptr) ? 4 : 2));
+ lvI.iGroupId = (wcsstr(it->wszOldName, L"Plugins") != nullptr) ? 1 :
+ ((wcsstr(it->wszOldName, L"Languages") != nullptr) ? 3 :
+ ((wcsstr(it->wszOldName, L"Icons") != nullptr) ? 4 : 2));
lvI.iSubItem = 0;
lvI.lParam = (LPARAM)it;
- lvI.pszText = it->tszOldName;
+ lvI.pszText = it->wszOldName;
lvI.iItem = m_todo->indexOf(&it);
m_list.InsertItem(&lvI);
@@ -328,7 +326,7 @@ public:
m_list.GetItem(&lvI);
FILEINFO *p = (FILEINFO *)lvI.lParam;
- CMStringA szSetting(p->tszOldName);
+ CMStringA szSetting(p->wszOldName);
db_set_b(0, DB_MODULE_FILES, StrToLower(szSetting.GetBuffer()), p->bEnabled = m_list.GetCheckState(nmlv->iItem));
// Toggle the Download button
@@ -403,14 +401,10 @@ static void DlgUpdateSilent(void *param)
}
AutoHandle pipe(hPipe);
- //create needed folders after escalating priviledges. Folders creates when we actually install updates
- wchar_t tszFileTemp[MAX_PATH], tszFileBack[MAX_PATH];
-
- mir_snwprintf(tszFileBack, L"%s\\Backups", g_tszRoot);
- SafeCreateDirectory(tszFileBack);
- mir_snwprintf(tszFileTemp, L"%s\\Temp", g_tszRoot);
- SafeCreateDirectory(tszFileTemp);
+ // Create needed folders after escalating priviledges. Folders creates when we actually install updates
+ TFileName wszTempFolder, wszBackupFolder;
+ CreateWorkFolders(wszTempFolder, wszBackupFolder);
// 2) Download all plugins
HNETLIBCONN nlc = nullptr;
@@ -441,14 +435,14 @@ static void DlgUpdateSilent(void *param)
// 3) Unpack all zips
DWORD dwErrorCode;
- VARSW tszMirandaPath(L"%miranda_path%");
+ VARSW wszMirandaPath(L"%miranda_path%");
for (auto &it : UpdateFiles) {
if (it->bEnabled) {
if (it->bDeleteOnly) {
// we need only to backup the old file
- wchar_t *ptszRelPath = it->tszNewName + wcslen(tszMirandaPath) + 1, tszBackFile[MAX_PATH];
- mir_snwprintf(tszBackFile, L"%s\\%s", tszFileBack, ptszRelPath);
- if (dwErrorCode = BackupFile(it->tszNewName, tszBackFile)) {
+ TFileName wszBackFile;
+ mir_snwprintf(wszBackFile, L"%s\\%s", wszBackupFolder, it->wszNewName + wcslen(wszMirandaPath) + 1);
+ if (dwErrorCode = BackupFile(it->wszNewName, wszBackFile)) {
LBL_Error:
Skin_PlaySound("updatefailed");
delete &UpdateFiles;
@@ -458,18 +452,18 @@ LBL_Error:
else {
// if file name differs, we also need to backup the old file here
// otherwise it would be replaced by unzip
- if (_wcsicmp(it->tszOldName, it->tszNewName)) {
- wchar_t tszSrcPath[MAX_PATH], tszBackFile[MAX_PATH];
- mir_snwprintf(tszSrcPath, L"%s\\%s", tszMirandaPath.get(), it->tszOldName);
- mir_snwprintf(tszBackFile, L"%s\\%s", tszFileBack, it->tszOldName);
- if (dwErrorCode = BackupFile(tszSrcPath, tszBackFile))
+ if (_wcsicmp(it->wszOldName, it->wszNewName)) {
+ TFileName wszSrcPath, wszBackFile;
+ mir_snwprintf(wszSrcPath, L"%s\\%s", wszMirandaPath.get(), it->wszOldName);
+ mir_snwprintf(wszBackFile, L"%s\\%s", wszBackupFolder, it->wszOldName);
+ if (dwErrorCode = BackupFile(wszSrcPath, wszBackFile))
goto LBL_Error;
}
// remove .zip after successful update
- if (dwErrorCode = unzip(it->File.tszDiskPath, tszMirandaPath, tszFileBack, true))
+ if (dwErrorCode = unzip(it->File.wszDiskPath, wszMirandaPath, wszBackupFolder, true))
goto LBL_Error;
- SafeDeleteFile(it->File.tszDiskPath);
+ SafeDeleteFile(it->File.wszDiskPath);
}
}
}
@@ -493,13 +487,13 @@ LBL_Error:
return;
}
- wchar_t tszTitle[100];
- mir_snwprintf(tszTitle, TranslateT("%d component(s) was updated"), count);
+ wchar_t wszTitle[100];
+ mir_snwprintf(wszTitle, TranslateT("%d component(s) was updated"), count);
if (Popup_Enabled())
- ShowPopup(tszTitle, TranslateT("You need to restart your Miranda to apply installed updates."), POPUP_TYPE_MSG);
+ ShowPopup(wszTitle, TranslateT("You need to restart your Miranda to apply installed updates."), POPUP_TYPE_MSG);
else {
- if (Clist_TrayNotifyW(MODULEA, tszTitle, TranslateT("You need to restart your Miranda to apply installed updates."), NIIF_INFO, 30000))
+ if (Clist_TrayNotifyW(MODULEA, wszTitle, TranslateT("You need to restart your Miranda to apply installed updates."), NIIF_INFO, 30000))
// Error, let's try to show MessageBox as last way to inform user about successful update
RestartPrompt(0);
}
@@ -605,18 +599,18 @@ static renameTable[] =
// Checks if file needs to be renamed and copies it in pNewName
// Returns true if smth. was copied
-static bool CheckFileRename(const wchar_t *ptszOldName, wchar_t *pNewName)
+static bool CheckFileRename(const wchar_t *pwszOldName, wchar_t *pNewName)
{
for (auto &it : renameTable) {
- if (wildcmpiw(ptszOldName, it.oldName)) {
- wchar_t *ptszDest = it.newName;
- if (ptszDest == nullptr)
+ if (wildcmpiw(pwszOldName, it.oldName)) {
+ wchar_t *pwszDest = it.newName;
+ if (pwszDest == nullptr)
*pNewName = 0;
else {
- wcsncpy_s(pNewName, MAX_PATH, ptszDest, _TRUNCATE);
- size_t cbLen = wcslen(ptszDest) - 1;
+ wcsncpy_s(pNewName, MAX_PATH, pwszDest, _TRUNCATE);
+ size_t cbLen = wcslen(pwszDest) - 1;
if (pNewName[cbLen] == '*')
- wcsncpy_s(pNewName + cbLen, MAX_PATH - cbLen, ptszOldName, _TRUNCATE);
+ wcsncpy_s(pNewName + cbLen, MAX_PATH - cbLen, pwszOldName, _TRUNCATE);
}
return true;
}
@@ -628,100 +622,100 @@ static bool CheckFileRename(const wchar_t *ptszOldName, wchar_t *pNewName)
/////////////////////////////////////////////////////////////////////////////////////////
// We only update ".dll", ".exe", ".txt" and ".bat"
-static bool isValidExtension(const wchar_t *ptszFileName)
+static bool isValidExtension(const wchar_t *pwszFileName)
{
- const wchar_t *pExt = wcsrchr(ptszFileName, '.');
+ const wchar_t *pExt = wcsrchr(pwszFileName, '.');
return (pExt != nullptr) && (!_wcsicmp(pExt, L".dll") || !_wcsicmp(pExt, L".exe") || !_wcsicmp(pExt, L".txt") || !_wcsicmp(pExt, L".bat"));
}
// We only scan subfolders "Plugins", "Icons", "Languages", "Libs", "Core"
-static bool isValidDirectory(const wchar_t *ptszDirName)
+static bool isValidDirectory(const wchar_t *pwszDirName)
{
- return !_wcsicmp(ptszDirName, L"Plugins") || !_wcsicmp(ptszDirName, L"Icons") || !_wcsicmp(ptszDirName, L"Languages") || !_wcsicmp(ptszDirName, L"Libs") || !_wcsicmp(ptszDirName, L"Core");
+ return !_wcsicmp(pwszDirName, L"Plugins") || !_wcsicmp(pwszDirName, L"Icons") || !_wcsicmp(pwszDirName, L"Languages") || !_wcsicmp(pwszDirName, L"Libs") || !_wcsicmp(pwszDirName, L"Core");
}
// Scans folders recursively
-static int ScanFolder(const wchar_t *tszFolder, size_t cbBaseLen, const wchar_t *tszBaseUrl, SERVLIST &hashes, OBJLIST<FILEINFO> *UpdateFiles, int level = 0)
+static int ScanFolder(const wchar_t *pwszFolder, size_t cbBaseLen, const wchar_t *pwszBaseUrl, SERVLIST &hashes, OBJLIST<FILEINFO> *UpdateFiles, int level = 0)
{
- wchar_t tszBuf[MAX_PATH];
- mir_snwprintf(tszBuf, L"%s\\*", tszFolder);
+ TFileName wszBuf;
+ mir_snwprintf(wszBuf, L"%s\\*", pwszFolder);
WIN32_FIND_DATA ffd;
- HANDLE hFind = FindFirstFile(tszBuf, &ffd);
+ HANDLE hFind = FindFirstFile(wszBuf, &ffd);
if (hFind == INVALID_HANDLE_VALUE)
return 0;
- Netlib_LogfW(hNetlibUser, L"Scanning folder %s", tszFolder);
+ Netlib_LogfW(hNetlibUser, L"Scanning folder %s", pwszFolder);
int count = 0;
do {
- wchar_t tszNewName[MAX_PATH];
+ TFileName wszNewName;
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
// Scan recursively all subfolders
if (isValidDirectory(ffd.cFileName)) {
- mir_snwprintf(tszBuf, L"%s\\%s", tszFolder, ffd.cFileName);
- count += ScanFolder(tszBuf, cbBaseLen, tszBaseUrl, hashes, UpdateFiles, level + 1);
+ mir_snwprintf(wszBuf, L"%s\\%s", pwszFolder, ffd.cFileName);
+ count += ScanFolder(wszBuf, cbBaseLen, pwszBaseUrl, hashes, UpdateFiles, level + 1);
}
continue;
}
if (isValidExtension(ffd.cFileName)) {
- // calculate the current file's relative name and store it into tszNewName
- if (CheckFileRename(ffd.cFileName, tszNewName)) {
- Netlib_LogfW(hNetlibUser, L"File %s will be renamed to %s.", ffd.cFileName, tszNewName);
+ // calculate the current file's relative name and store it into wszNewName
+ if (CheckFileRename(ffd.cFileName, wszNewName)) {
+ Netlib_LogfW(hNetlibUser, L"File %s will be renamed to %s.", ffd.cFileName, wszNewName);
// Yes, we need the old file name, because this will be hashed later
- mir_snwprintf(tszBuf, L"%s\\%s", tszFolder, ffd.cFileName);
+ mir_snwprintf(wszBuf, L"%s\\%s", pwszFolder, ffd.cFileName);
}
else {
if (level == 0) {
// Rename Miranda*.exe
- wcsncpy_s(tszNewName, g_plugin.bChangePlatform && !mir_wstrcmpi(ffd.cFileName, OLD_FILENAME) ? NEW_FILENAME : ffd.cFileName, _TRUNCATE);
- mir_snwprintf(tszBuf, L"%s\\%s", tszFolder, tszNewName);
+ wcsncpy_s(wszNewName, g_plugin.bChangePlatform && !mir_wstrcmpi(ffd.cFileName, OLD_FILENAME) ? NEW_FILENAME : ffd.cFileName, _TRUNCATE);
+ mir_snwprintf(wszBuf, L"%s\\%s", pwszFolder, wszNewName);
}
else {
- mir_snwprintf(tszNewName, L"%s\\%s", tszFolder + cbBaseLen, ffd.cFileName);
- mir_snwprintf(tszBuf, L"%s\\%s", tszFolder, ffd.cFileName);
+ mir_snwprintf(wszNewName, L"%s\\%s", pwszFolder + cbBaseLen, ffd.cFileName);
+ mir_snwprintf(wszBuf, L"%s\\%s", pwszFolder, ffd.cFileName);
}
}
}
else {
// the only exclusion is Libs\\libmdbx.mir
if (level == 1 && !wcsicmp(ffd.cFileName, L"libmdbx.mir")) {
- tszNewName[0] = 0;
- mir_snwprintf(tszBuf, L"%s\\%s", tszFolder, ffd.cFileName);
+ wszNewName[0] = 0;
+ mir_snwprintf(wszBuf, L"%s\\%s", pwszFolder, ffd.cFileName);
}
else continue; // skip all another filea
}
- wchar_t *ptszUrl;
+ wchar_t *pwszUrl;
int MyCRC;
- bool bDeleteOnly = (tszNewName[0] == 0);
+ bool bDeleteOnly = (wszNewName[0] == 0);
// this file is not marked for deletion
if (!bDeleteOnly) {
- wchar_t *pName = tszNewName;
+ wchar_t *pName = wszNewName;
ServListEntry *item = hashes.find((ServListEntry*)&pName);
// Not in list? Check for trailing 'W' or 'w'
if (item == nullptr) {
- wchar_t *p = wcsrchr(tszNewName, '.');
+ wchar_t *p = wcsrchr(wszNewName, '.');
if (p[-1] != 'w' && p[-1] != 'W') {
Netlib_LogfW(hNetlibUser, L"File %s: Not found on server, skipping", ffd.cFileName);
continue;
}
// remove trailing w or W and try again
- int iPos = int(p - tszNewName) - 1;
+ int iPos = int(p - wszNewName) - 1;
strdelw(p - 1, 1);
if ((item = hashes.find((ServListEntry*)&pName)) == nullptr) {
Netlib_LogfW(hNetlibUser, L"File %s: Not found on server, skipping", ffd.cFileName);
continue;
}
- strdelw(tszNewName + iPos, 1);
+ strdelw(wszNewName + iPos, 1);
}
// No need to hash a file if we are forcing a redownload anyway
@@ -729,7 +723,7 @@ static int ScanFolder(const wchar_t *tszFolder, size_t cbBaseLen, const wchar_t
// try to hash the file
char szMyHash[33];
__try {
- CalculateModuleHash(tszBuf, szMyHash);
+ CalculateModuleHash(wszBuf, szMyHash);
// hashes are the same, skipping
if (strcmp(szMyHash, item->m_szHash) == 0) {
Netlib_LogfW(hNetlibUser, L"File %s: Already up-to-date, skipping", ffd.cFileName);
@@ -744,17 +738,17 @@ static int ScanFolder(const wchar_t *tszFolder, size_t cbBaseLen, const wchar_t
}
else Netlib_LogfW(hNetlibUser, L"File %s: Forcing redownload", ffd.cFileName);
- ptszUrl = item->m_name;
+ pwszUrl = item->m_name;
MyCRC = item->m_crc;
}
else {
// file was marked for deletion, add it to the list anyway
Netlib_LogfW(hNetlibUser, L"File %s: Marked for deletion", ffd.cFileName);
- ptszUrl = L"";
+ pwszUrl = L"";
MyCRC = 0;
}
- CMStringA szSetting(tszBuf + cbBaseLen);
+ CMStringA szSetting(wszBuf + cbBaseLen);
int bEnabled = db_get_b(0, DB_MODULE_FILES, StrToLower(szSetting.GetBuffer()), 1);
if (bEnabled == 2) // hidden database setting to exclude a plugin from list
continue;
@@ -762,23 +756,23 @@ static int ScanFolder(const wchar_t *tszFolder, size_t cbBaseLen, const wchar_t
// Yeah, we've got new version.
FILEINFO *FileInfo = new FILEINFO;
// copy the relative old name
- wcsncpy_s(FileInfo->tszOldName, tszBuf + cbBaseLen, _TRUNCATE);
+ wcsncpy_s(FileInfo->wszOldName, wszBuf + cbBaseLen, _TRUNCATE);
FileInfo->bDeleteOnly = bDeleteOnly;
if (FileInfo->bDeleteOnly) // save the full old name for deletion
- wcsncpy_s(FileInfo->tszNewName, tszBuf, _TRUNCATE);
+ wcsncpy_s(FileInfo->wszNewName, wszBuf, _TRUNCATE);
else
- wcsncpy_s(FileInfo->tszNewName, ptszUrl, _TRUNCATE);
+ wcsncpy_s(FileInfo->wszNewName, pwszUrl, _TRUNCATE);
- wcsncpy_s(tszBuf, ptszUrl, _TRUNCATE);
- wchar_t *p = wcsrchr(tszBuf, '.');
+ wcsncpy_s(wszBuf, pwszUrl, _TRUNCATE);
+ wchar_t *p = wcsrchr(wszBuf, '.');
if (p) *p = 0;
- p = wcsrchr(tszBuf, '\\');
- p = (p) ? p + 1 : tszBuf;
+ p = wcsrchr(wszBuf, '\\');
+ p = (p) ? p + 1 : wszBuf;
_wcslwr(p);
- mir_snwprintf(FileInfo->File.tszDiskPath, L"%s\\Temp\\%s.zip", g_tszRoot, p);
- mir_snwprintf(FileInfo->File.tszDownloadURL, L"%s/%s.zip", tszBaseUrl, tszBuf);
- for (p = wcschr(FileInfo->File.tszDownloadURL, '\\'); p != nullptr; p = wcschr(p, '\\'))
+ mir_snwprintf(FileInfo->File.wszDiskPath, L"%s\\Temp\\%s.zip", g_wszRoot, p);
+ mir_snwprintf(FileInfo->File.wszDownloadURL, L"%s/%s.zip", pwszBaseUrl, wszBuf);
+ for (p = wcschr(FileInfo->File.wszDownloadURL, '\\'); p != nullptr; p = wcschr(p, '\\'))
*p++ = '/';
// remember whether the user has decided not to update this component with this particular new version
@@ -804,10 +798,10 @@ static void CheckUpdates(void *)
Thread_SetName("PluginUpdater: CheckUpdates");
ThreadWatch threadId(dwCheckThreadId);
- wchar_t tszTempPath[MAX_PATH];
- DWORD dwLen = GetTempPath(_countof(tszTempPath), tszTempPath);
- if (tszTempPath[dwLen - 1] == '\\')
- tszTempPath[dwLen - 1] = 0;
+ TFileName wszTempPath;
+ DWORD dwLen = GetTempPath(_countof(wszTempPath), wszTempPath);
+ if (wszTempPath[dwLen - 1] == '\\')
+ wszTempPath[dwLen - 1] = 0;
if (!g_plugin.bSilent)
ShowPopup(TranslateT("Plugin Updater"), TranslateT("Checking for new updates..."), POPUP_TYPE_INFO);
diff --git a/plugins/PluginUpdater/src/Events.cpp b/plugins/PluginUpdater/src/Events.cpp
index 20080cc6d8..4c808600dc 100644
--- a/plugins/PluginUpdater/src/Events.cpp
+++ b/plugins/PluginUpdater/src/Events.cpp
@@ -23,10 +23,10 @@ HANDLE hPluginUpdaterFolder;
int OnFoldersChanged(WPARAM, LPARAM)
{
- FoldersGetCustomPathW(hPluginUpdaterFolder, g_tszRoot, MAX_PATH, L"");
- size_t len = wcslen(g_tszRoot);
- if (g_tszRoot[len-1] == '\\' || g_tszRoot[len-1] == '/')
- g_tszRoot[len-1] = 0;
+ FoldersGetCustomPathW(hPluginUpdaterFolder, g_wszRoot, MAX_PATH, L"");
+ size_t len = wcslen(g_wszRoot);
+ if (g_wszRoot[len-1] == '\\' || g_wszRoot[len-1] == '/')
+ g_wszRoot[len-1] = 0;
return 0;
}
@@ -35,7 +35,7 @@ void EmptyFolder()
SHFILEOPSTRUCT file_op = {
nullptr,
FO_DELETE,
- g_tszRoot,
+ g_wszRoot,
L"",
FOF_NOERRORUI | FOF_SILENT | FOF_NOCONFIRMATION,
false,
@@ -50,7 +50,7 @@ int ModulesLoaded(WPARAM, LPARAM)
HookEvent(ME_FOLDERS_PATH_CHANGED, OnFoldersChanged);
OnFoldersChanged(0, 0);
}
- else lstrcpyn(g_tszRoot, VARSW(L"%miranda_path%\\" DEFAULT_UPDATES_FOLDER), _countof(g_tszRoot));
+ else lstrcpyn(g_wszRoot, VARSW(L"%miranda_path%\\" DEFAULT_UPDATES_FOLDER), _countof(g_wszRoot));
if (ServiceExists(MS_ASSOCMGR_ADDNEWURLTYPE))
AssocMgr_AddNewUrlTypeW("mirpu:", TranslateT("Plugin updater URI scheme"), g_plugin.getInst(), IDI_PLGLIST, MODULENAME "/ParseUri", 0);
diff --git a/plugins/PluginUpdater/src/Notifications.cpp b/plugins/PluginUpdater/src/Notifications.cpp
index 1c1bc7e5e4..b3ef00ef7c 100644
--- a/plugins/PluginUpdater/src/Notifications.cpp
+++ b/plugins/PluginUpdater/src/Notifications.cpp
@@ -68,9 +68,9 @@ static LRESULT CALLBACK PopupDlgProc(HWND hPopup, UINT uMsg, WPARAM wParam, LPAR
void CALLBACK RestartPrompt(void *)
{
if (!g_plugin.bAutoRestart) {
- wchar_t tszText[200];
- mir_snwprintf(tszText, L"%s\n\n%s", TranslateT("You need to restart your Miranda to apply installed updates."), TranslateT("Would you like to restart it now?"));
- if (MessageBox(nullptr, tszText, TranslateT("Plugin Updater"), MB_YESNO | MB_ICONQUESTION | MB_TOPMOST) != IDYES)
+ wchar_t wszText[200];
+ mir_snwprintf(wszText, L"%s\n\n%s", TranslateT("You need to restart your Miranda to apply installed updates."), TranslateT("Would you like to restart it now?"));
+ if (MessageBox(nullptr, wszText, TranslateT("Plugin Updater"), MB_YESNO | MB_ICONQUESTION | MB_TOPMOST) != IDYES)
return;
}
@@ -93,7 +93,7 @@ static LRESULT CALLBACK PopupDlgProcRestart(HWND hPopup, UINT uMsg, WPARAM wPara
return DefWindowProc(hPopup, uMsg, wParam, lParam);
}
-void ShowPopup(LPCTSTR ptszTitle, LPCTSTR ptszText, int Number)
+void ShowPopup(LPCTSTR pwszTitle, LPCTSTR pwszText, int Number)
{
if (Popup_Enabled()) {
char setting[100];
@@ -113,8 +113,8 @@ void ShowPopup(LPCTSTR ptszTitle, LPCTSTR ptszText, int Number)
ppd.iSeconds = g_plugin.PopupTimeout;
}
- lstrcpyn(ppd.lpwzText, ptszText, MAX_SECONDLINE);
- lstrcpyn(ppd.lpwzContactName, ptszTitle, MAX_CONTACTNAME);
+ lstrcpyn(ppd.lpwzText, pwszText, MAX_SECONDLINE);
+ lstrcpyn(ppd.lpwzContactName, pwszTitle, MAX_CONTACTNAME);
switch (g_plugin.PopupDefColors) {
case byCOLOR_WINDOWS:
@@ -135,5 +135,5 @@ void ShowPopup(LPCTSTR ptszTitle, LPCTSTR ptszText, int Number)
}
if (Number == POPUP_TYPE_ERROR)
- MessageBox(nullptr, ptszText, ptszTitle, MB_ICONINFORMATION);
+ MessageBox(nullptr, pwszText, pwszTitle, MB_ICONINFORMATION);
}
diff --git a/plugins/PluginUpdater/src/Options.cpp b/plugins/PluginUpdater/src/Options.cpp
index 8cc5bf781b..0f1be8faed 100644
--- a/plugins/PluginUpdater/src/Options.cpp
+++ b/plugins/PluginUpdater/src/Options.cpp
@@ -314,9 +314,9 @@ static INT_PTR CALLBACK UpdateNotifyOptsProc(HWND hwndDlg, UINT msg, WPARAM wPar
iNewMode = UPDATE_MODE_TRUNK_SYMBOLS;
}
else {
- wchar_t tszUrl[100];
- GetDlgItemText(hwndDlg, IDC_CUSTOMURL, tszUrl, _countof(tszUrl));
- g_plugin.setWString(DB_SETTING_UPDATE_URL, tszUrl);
+ wchar_t wszUrl[100];
+ GetDlgItemText(hwndDlg, IDC_CUSTOMURL, wszUrl, _countof(wszUrl));
+ g_plugin.setWString(DB_SETTING_UPDATE_URL, wszUrl);
iNewMode = UPDATE_MODE_CUSTOM;
}
diff --git a/plugins/PluginUpdater/src/PluginUpdater.cpp b/plugins/PluginUpdater/src/PluginUpdater.cpp
index f46768a0a5..108bac717b 100644
--- a/plugins/PluginUpdater/src/PluginUpdater.cpp
+++ b/plugins/PluginUpdater/src/PluginUpdater.cpp
@@ -21,7 +21,7 @@ Boston, MA 02111-1307, USA.
CMPlugin g_plugin;
-wchar_t g_tszRoot[MAX_PATH] = {0}, g_tszTempPath[MAX_PATH];
+TFileName g_wszRoot = {0}, g_wszTempPath;
/////////////////////////////////////////////////////////////////////////////////////////
@@ -69,9 +69,9 @@ int CMPlugin::Load()
{
g_plugin.setByte(DB_SETTING_NEED_RESTART, 0);
- DWORD dwLen = GetTempPath(_countof(g_tszTempPath), g_tszTempPath);
- if (g_tszTempPath[dwLen-1] == '\\')
- g_tszTempPath[dwLen-1] = 0;
+ DWORD dwLen = GetTempPath(_countof(g_wszTempPath), g_wszTempPath);
+ if (g_wszTempPath[dwLen-1] == '\\')
+ g_wszTempPath[dwLen-1] = 0;
InitPopupList();
InitNetlib();
diff --git a/plugins/PluginUpdater/src/Utils.cpp b/plugins/PluginUpdater/src/Utils.cpp
index b2482e9b0c..5108c2fbd4 100644
--- a/plugins/PluginUpdater/src/Utils.cpp
+++ b/plugins/PluginUpdater/src/Utils.cpp
@@ -56,7 +56,7 @@ int CompareHashes(const ServListEntry *p1, const ServListEntry *p2)
return _wcsicmp(p1->m_name, p2->m_name);
}
-bool ParseHashes(const wchar_t *ptszUrl, ptrW &baseUrl, SERVLIST &arHashes)
+bool ParseHashes(const wchar_t *pwszUrl, ptrW &baseUrl, SERVLIST &arHashes)
{
REPLACEVARSARRAY vars[2];
vars[0].key.w = L"platform";
@@ -67,12 +67,12 @@ bool ParseHashes(const wchar_t *ptszUrl, ptrW &baseUrl, SERVLIST &arHashes)
#endif
vars[1].key.w = vars[1].value.w = nullptr;
- baseUrl = Utils_ReplaceVarsW(ptszUrl, 0, vars);
+ baseUrl = Utils_ReplaceVarsW(pwszUrl, 0, vars);
// Download version info
FILEURL pFileUrl;
- mir_snwprintf(pFileUrl.tszDownloadURL, L"%s/hashes.zip", baseUrl.get());
- mir_snwprintf(pFileUrl.tszDiskPath, L"%s\\hashes.zip", g_tszTempPath);
+ mir_snwprintf(pFileUrl.wszDownloadURL, L"%s/hashes.zip", baseUrl.get());
+ mir_snwprintf(pFileUrl.wszDiskPath, L"%s\\hashes.zip", g_wszTempPath);
pFileUrl.CRCsum = 0;
HNETLIBCONN nlc = nullptr;
@@ -86,20 +86,20 @@ bool ParseHashes(const wchar_t *ptszUrl, ptrW &baseUrl, SERVLIST &arHashes)
return false;
}
- if (unzip(pFileUrl.tszDiskPath, g_tszTempPath, nullptr, true)) {
+ if (unzip(pFileUrl.wszDiskPath, g_wszTempPath, nullptr, true)) {
Netlib_LogfW(hNetlibUser, L"Unzipping list of available updates from %s failed", baseUrl.get());
ShowPopup(TranslateT("Plugin Updater"), TranslateT("An error occurred while checking for new updates."), POPUP_TYPE_ERROR);
Skin_PlaySound("updatefailed");
return false;
}
- DeleteFile(pFileUrl.tszDiskPath);
+ DeleteFile(pFileUrl.wszDiskPath);
- wchar_t tszTmpIni[MAX_PATH];
- mir_snwprintf(tszTmpIni, L"%s\\hashes.txt", g_tszTempPath);
- FILE *fp = _wfopen(tszTmpIni, L"r");
+ TFileName wszTmpIni;
+ mir_snwprintf(wszTmpIni, L"%s\\hashes.txt", g_wszTempPath);
+ FILE *fp = _wfopen(wszTmpIni, L"r");
if (!fp) {
- Netlib_LogfW(hNetlibUser, L"Opening %s failed", g_tszTempPath);
+ Netlib_LogfW(hNetlibUser, L"Opening %s failed", g_wszTempPath);
ShowPopup(TranslateT("Plugin Updater"), TranslateT("An error occurred while checking for new updates."), POPUP_TYPE_ERROR);
return false;
}
@@ -132,7 +132,7 @@ bool ParseHashes(const wchar_t *ptszUrl, ptrW &baseUrl, SERVLIST &arHashes)
}
}
fclose(fp);
- DeleteFile(tszTmpIni);
+ DeleteFileW(wszTmpIni);
if (bDoNotSwitchToStable) {
g_plugin.setByte(DB_SETTING_DONT_SWITCH_TO_STABLE, 1);
@@ -173,7 +173,7 @@ bool DownloadFile(FILEURL *pFileURL, HNETLIBCONN &nlc)
{ "Pragma", "no-cache" }
};
- ptrA szUrl(mir_u2a(pFileURL->tszDownloadURL));
+ ptrA szUrl(mir_u2a(pFileURL->wszDownloadURL));
NETLIBHTTPREQUEST nlhr = {};
nlhr.cbSize = sizeof(nlhr);
@@ -185,7 +185,7 @@ bool DownloadFile(FILEURL *pFileURL, HNETLIBCONN &nlc)
nlhr.headers = headers;
for (int i = 0; i < MAX_RETRIES; i++) {
- Netlib_LogfW(hNetlibUser, L"Downloading file %s to %s (attempt %d)", pFileURL->tszDownloadURL, pFileURL->tszDiskPath, i + 1);
+ Netlib_LogfW(hNetlibUser, L"Downloading file %s to %s (attempt %d)", pFileURL->wszDownloadURL, pFileURL->wszDiskPath, i + 1);
NLHR_PTR pReply(Netlib_HttpTransaction(hNetlibUser, &nlhr));
if (pReply) {
nlc = pReply->nlc;
@@ -195,13 +195,13 @@ bool DownloadFile(FILEURL *pFileURL, HNETLIBCONN &nlc)
int crc = crc32(0, (unsigned char *)pReply->pData, pReply->dataLength);
if (crc != pFileURL->CRCsum) {
// crc check failed, try again
- Netlib_LogfW(hNetlibUser, L"crc check failed for file %s", pFileURL->tszDiskPath);
+ Netlib_LogfW(hNetlibUser, L"crc check failed for file %s", pFileURL->wszDiskPath);
continue;
}
}
DWORD dwBytes;
- HANDLE hFile = CreateFile(pFileURL->tszDiskPath, GENERIC_READ | GENERIC_WRITE, NULL, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
+ HANDLE hFile = CreateFile(pFileURL->wszDiskPath, GENERIC_READ | GENERIC_WRITE, NULL, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
if (hFile != INVALID_HANDLE_VALUE) {
// write the downloaded file directly
WriteFile(hFile, pReply->pData, (DWORD)pReply->dataLength, &dwBytes, nullptr);
@@ -209,26 +209,26 @@ bool DownloadFile(FILEURL *pFileURL, HNETLIBCONN &nlc)
}
else {
// try to write it via PU stub
- wchar_t tszTempFile[MAX_PATH];
- mir_snwprintf(tszTempFile, L"%s\\pulocal.tmp", g_tszTempPath);
- hFile = CreateFile(tszTempFile, GENERIC_READ | GENERIC_WRITE, NULL, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
+ TFileName wszTempFile;
+ mir_snwprintf(wszTempFile, L"%s\\pulocal.tmp", g_wszTempPath);
+ hFile = CreateFile(wszTempFile, GENERIC_READ | GENERIC_WRITE, NULL, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
if (hFile != INVALID_HANDLE_VALUE) {
WriteFile(hFile, pReply->pData, (DWORD)pReply->dataLength, &dwBytes, nullptr);
CloseHandle(hFile);
- SafeMoveFile(tszTempFile, pFileURL->tszDiskPath);
+ SafeMoveFile(wszTempFile, pFileURL->wszDiskPath);
}
}
return true;
}
- Netlib_LogfW(hNetlibUser, L"Downloading file %s failed with error %d", pFileURL->tszDownloadURL, pReply->resultCode);
+ Netlib_LogfW(hNetlibUser, L"Downloading file %s failed with error %d", pFileURL->wszDownloadURL, pReply->resultCode);
}
else {
- Netlib_LogfW(hNetlibUser, L"Downloading file %s failed, host is propably temporary down.", pFileURL->tszDownloadURL);
+ Netlib_LogfW(hNetlibUser, L"Downloading file %s failed, host is propably temporary down.", pFileURL->wszDownloadURL);
nlc = nullptr;
}
}
- Netlib_LogfW(hNetlibUser, L"Downloading file %s failed, giving up", pFileURL->tszDownloadURL);
+ Netlib_LogfW(hNetlibUser, L"Downloading file %s failed, giving up", pFileURL->wszDownloadURL);
return false;
}
@@ -379,7 +379,7 @@ Cleanup:
bool PrepareEscalation()
{
// First try to create a file near Miranda32.exe
- wchar_t szPath[MAX_PATH];
+ TFileName szPath;
GetModuleFileName(nullptr, szPath, _countof(szPath));
wchar_t *ext = wcsrchr(szPath, '.');
if (ext != nullptr)
@@ -399,9 +399,9 @@ bool PrepareEscalation()
return true;
// Elevate the process. Create a pipe for a stub first
- wchar_t tszPipeName[MAX_PATH];
- mir_snwprintf(tszPipeName, L"\\\\.\\pipe\\Miranda_Pu_%d", GetCurrentProcessId());
- hPipe = CreateNamedPipe(tszPipeName, PIPE_ACCESS_DUPLEX, PIPE_READMODE_BYTE | PIPE_WAIT, 1, 1024, 1024, NMPWAIT_USE_DEFAULT_WAIT, nullptr);
+ TFileName wzPipeName;
+ mir_snwprintf(wzPipeName, L"\\\\.\\pipe\\Miranda_Pu_%d", GetCurrentProcessId());
+ hPipe = CreateNamedPipe(wzPipeName, PIPE_ACCESS_DUPLEX, PIPE_READMODE_BYTE | PIPE_WAIT, 1, 1024, 1024, NMPWAIT_USE_DEFAULT_WAIT, nullptr);
if (hPipe == INVALID_HANDLE_VALUE) {
hPipe = nullptr;
}
@@ -435,6 +435,17 @@ bool PrepareEscalation()
}
/////////////////////////////////////////////////////////////////////////////////////////
+// Folder creation
+
+void CreateWorkFolders(TFileName &wszTempFolder, TFileName &wszBackupFolder)
+{
+ mir_snwprintf(wszBackupFolder, L"%s\\Backups", g_wszRoot);
+ SafeCreateDirectory(wszBackupFolder);
+ mir_snwprintf(wszTempFolder, L"%s\\Temp", g_wszRoot);
+ SafeCreateDirectory(wszTempFolder);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
int TransactPipe(int opcode, const wchar_t *p1, const wchar_t *p2)
{
@@ -512,37 +523,37 @@ int SafeMoveFile(const wchar_t *pSrc, const wchar_t *pDst)
return TransactPipe(2, pSrc, pDst);
}
-int SafeDeleteFile(const wchar_t *pFile)
+int SafeDeleteFile(const wchar_t *pwszFile)
{
if (hPipe == nullptr)
- return DeleteFile(pFile);
+ return DeleteFile(pwszFile);
- return TransactPipe(3, pFile, nullptr);
+ return TransactPipe(3, pwszFile, nullptr);
}
-int SafeCreateDirectory(const wchar_t *pFolder)
+int SafeCreateDirectory(const wchar_t *pwszFolder)
{
if (hPipe == nullptr)
- return CreateDirectoryTreeW(pFolder);
+ return CreateDirectoryTreeW(pwszFolder);
- return TransactPipe(4, pFolder, nullptr);
+ return TransactPipe(4, pwszFolder, nullptr);
}
-int SafeCreateFilePath(const wchar_t *pFolder)
+int SafeCreateFilePath(const wchar_t *pwszFolder)
{
if (hPipe == nullptr) {
- CreatePathToFileW(pFolder);
+ CreatePathToFileW(pwszFolder);
return 0;
}
- return TransactPipe(5, pFolder, nullptr);
+ return TransactPipe(5, pwszFolder, nullptr);
}
-int BackupFile(wchar_t *ptszSrcFileName, wchar_t *ptszBackFileName)
+int BackupFile(wchar_t *pwszSrcFileName, wchar_t *pwszBackFileName)
{
- SafeCreateFilePath(ptszBackFileName);
+ SafeCreateFilePath(pwszBackFileName);
- if (int iErrorCode = SafeMoveFile(ptszSrcFileName, ptszBackFileName))
+ if (int iErrorCode = SafeMoveFile(pwszSrcFileName, pwszBackFileName))
return iErrorCode;
return 0;
}
diff --git a/plugins/PluginUpdater/src/checksum.cpp b/plugins/PluginUpdater/src/checksum.cpp
index 19f9da9ece..77b138fde3 100644
--- a/plugins/PluginUpdater/src/checksum.cpp
+++ b/plugins/PluginUpdater/src/checksum.cpp
@@ -25,12 +25,12 @@ struct MFileMapping
PBYTE ptr;
HANDLE hMap, hFile;
- MFileMapping(const wchar_t* ptszFileName)
+ MFileMapping(const wchar_t* pwszFileName)
{
ptr = nullptr;
hMap = nullptr;
- hFile = CreateFile(ptszFileName, GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
+ hFile = CreateFile(pwszFileName, GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
if (hFile != INVALID_HANDLE_VALUE)
hMap = CreateFileMapping(hFile, nullptr, PAGE_WRITECOPY, 0, 0, nullptr);
if (hMap)
diff --git a/plugins/PluginUpdater/src/stdafx.h b/plugins/PluginUpdater/src/stdafx.h
index 62b5086088..a9628fb7ca 100644
--- a/plugins/PluginUpdater/src/stdafx.h
+++ b/plugins/PluginUpdater/src/stdafx.h
@@ -77,20 +77,22 @@ extern "C"
#define MODULE L"Plugin Updater"
#define DEFAULT_UPDATES_FOLDER L"Plugin Updates"
+typedef wchar_t TFileName[MAX_PATH];
+
struct FILEURL
{
- wchar_t tszDownloadURL[2048];
- wchar_t tszDiskPath[MAX_PATH];
+ wchar_t wszDownloadURL[2048];
+ TFileName wszDiskPath;
int CRCsum;
};
struct FILEINFO
{
- wchar_t tszOldName[MAX_PATH], tszNewName[MAX_PATH];
+ TFileName wszOldName, wszNewName;
FILEURL File;
- bool bEnabled, bDeleteOnly;
+ bool bEnabled, bDeleteOnly;
- bool IsFiltered(const CMStringW &wszFilter);
+ bool IsFiltered(const CMStringW &wszFilter);
};
typedef OBJLIST<FILEINFO> FILELIST;
@@ -151,7 +153,7 @@ enum
using namespace std;
extern DWORD g_mirandaVersion;
-extern wchar_t g_tszRoot[MAX_PATH], g_tszTempPath[MAX_PATH];
+extern wchar_t g_wszRoot[MAX_PATH], g_wszTempPath[MAX_PATH];
extern HANDLE hPipe;
extern HNETLIBUSER hNetlibUser;
@@ -250,9 +252,9 @@ void UnloadNetlib();
void CALLBACK RestartPrompt(void *);
-int BackupFile(wchar_t *ptszSrcFileName, wchar_t *ptszBackFileName);
+int BackupFile(wchar_t *pwszSrcFileName, wchar_t *pwszBackFileName);
-bool ParseHashes(const wchar_t *ptszUrl, ptrW &baseUrl, SERVLIST &arHashes);
+bool ParseHashes(const wchar_t *pwszUrl, ptrW &baseUrl, SERVLIST &arHashes);
int CompareHashes(const ServListEntry *p1, const ServListEntry *p2);
wchar_t* GetDefaultUrl();
@@ -262,19 +264,21 @@ void ShowPopup(LPCTSTR Title, LPCTSTR Text, int Number);
void CheckUpdateOnStartup();
void __stdcall InitTimer(void *type);
-int unzip(const wchar_t *ptszZipFile, wchar_t *ptszDestPath, wchar_t *ptszBackPath,bool ch);
+int unzip(const wchar_t *pwszZipFile, wchar_t *pwszDestPath, wchar_t *pwszBackPath, bool ch);
///////////////////////////////////////////////////////////////////////////////
-int CalculateModuleHash(const wchar_t *tszFileName, char *dest);
+int CalculateModuleHash(const wchar_t *pwszFileName, char *dest);
BOOL IsProcessElevated();
bool PrepareEscalation();
-int SafeCreateDirectory(const wchar_t *ptszDirName);
-int SafeCopyFile(const wchar_t *ptszSrc, const wchar_t *ptszDst);
-int SafeMoveFile(const wchar_t *ptszSrc, const wchar_t *ptszDst);
-int SafeDeleteFile(const wchar_t *ptszSrc);
+void CreateWorkFolders(TFileName &wszTempFolder, TFileName &wszBackupFolder);
+
+int SafeCreateDirectory(const wchar_t *pwszDirName);
+int SafeCopyFile(const wchar_t *pwszSrc, const wchar_t *pwszDst);
+int SafeMoveFile(const wchar_t *pwszSrc, const wchar_t *pwszDst);
+int SafeDeleteFile(const wchar_t *pwszSrc);
int SafeCreateFilePath(const wchar_t *pFolder);
char* StrToLower(char *str);
diff --git a/plugins/PluginUpdater/src/unzipfile.cpp b/plugins/PluginUpdater/src/unzipfile.cpp
index d454109c50..e837509ef3 100644
--- a/plugins/PluginUpdater/src/unzipfile.cpp
+++ b/plugins/PluginUpdater/src/unzipfile.cpp
@@ -21,16 +21,16 @@ Boston, MA 02111-1307, USA.
#define DATA_BUF_SIZE (4 * 1024 * 1024)
-static void PrepareFileName(wchar_t *dest, size_t destSize, const wchar_t *ptszPath, const wchar_t *ptszFileName)
+static void PrepareFileName(wchar_t *dest, size_t destSize, const wchar_t *pwszPath, const wchar_t *pwszFileName)
{
- mir_snwprintf(dest, destSize, L"%s\\%s", ptszPath, ptszFileName);
+ mir_snwprintf(dest, destSize, L"%s\\%s", pwszPath, pwszFileName);
for (wchar_t *p = dest; *p; ++p)
if (*p == '/')
*p = '\\';
}
-int extractCurrentFile(unzFile uf, wchar_t *ptszDestPath, wchar_t *ptszBackPath, bool ch)
+int extractCurrentFile(unzFile uf, wchar_t *pwszDestPath, wchar_t *pwszBackPath, bool ch)
{
unz_file_info64 file_info;
char filename[MAX_PATH];
@@ -48,37 +48,37 @@ int extractCurrentFile(unzFile uf, wchar_t *ptszDestPath, wchar_t *ptszBackPath,
if (ch && 1 != db_get_b(0, DB_MODULE_FILES, StrToLower(ptrA(mir_strdup(filename))), 1))
return UNZ_OK;
- wchar_t tszDestFile[MAX_PATH], tszBackFile[MAX_PATH];
- ptrW ptszNewName(mir_utf8decodeW(filename));
- if (ptszNewName == nullptr)
- ptszNewName = mir_a2u(filename);
+ TFileName wszDestFile, wszBackFile;
+ ptrW pwszNewName(mir_utf8decodeW(filename));
+ if (pwszNewName == nullptr)
+ pwszNewName = mir_a2u(filename);
if (!(file_info.external_fa & FILE_ATTRIBUTE_DIRECTORY)) {
err = unzOpenCurrentFile(uf);
if (err != UNZ_OK)
return err;
- if (ptszBackPath != nullptr) {
- PrepareFileName(tszDestFile, _countof(tszDestFile), ptszDestPath, ptszNewName);
- PrepareFileName(tszBackFile, _countof(tszBackFile), ptszBackPath, ptszNewName);
- if (err = BackupFile(tszDestFile, tszBackFile))
+ if (pwszBackPath != nullptr) {
+ PrepareFileName(wszDestFile, _countof(wszDestFile), pwszDestPath, pwszNewName);
+ PrepareFileName(wszBackFile, _countof(wszBackFile), pwszBackPath, pwszNewName);
+ if (err = BackupFile(wszDestFile, wszBackFile))
return err;
}
- PrepareFileName(tszDestFile, _countof(tszDestFile), ptszDestPath, ptszNewName);
- SafeCreateFilePath(tszDestFile);
+ PrepareFileName(wszDestFile, _countof(wszDestFile), pwszDestPath, pwszNewName);
+ SafeCreateFilePath(wszDestFile);
- wchar_t *ptszFile2unzip;
+ wchar_t *pwszFile2unzip;
if (hPipe == nullptr) // direct mode
- ptszFile2unzip = tszDestFile;
+ pwszFile2unzip = wszDestFile;
else {
- wchar_t tszTempPath[MAX_PATH];
- GetTempPathW(_countof(tszTempPath), tszTempPath);
- GetTempFileNameW(tszTempPath, L"PUtemp", GetCurrentProcessId(), tszBackFile);
- ptszFile2unzip = tszBackFile;
+ TFileName wszTempPath;
+ GetTempPathW(_countof(wszTempPath), wszTempPath);
+ GetTempFileNameW(wszTempPath, L"PUtemp", GetCurrentProcessId(), wszBackFile);
+ pwszFile2unzip = wszBackFile;
}
- HANDLE hFile = CreateFile(ptszFile2unzip, GENERIC_WRITE, FILE_SHARE_WRITE, nullptr, CREATE_ALWAYS, file_info.external_fa, nullptr);
+ HANDLE hFile = CreateFile(pwszFile2unzip, GENERIC_WRITE, FILE_SHARE_WRITE, nullptr, CREATE_ALWAYS, file_info.external_fa, nullptr);
if (hFile == INVALID_HANDLE_VALUE)
return GetLastError();
@@ -104,22 +104,22 @@ int extractCurrentFile(unzFile uf, wchar_t *ptszDestPath, wchar_t *ptszBackPath,
unzCloseCurrentFile(uf); /* don't lose the error */
if (hPipe)
- SafeMoveFile(ptszFile2unzip, tszDestFile);
+ SafeMoveFile(pwszFile2unzip, wszDestFile);
}
return err;
}
-int unzip(const wchar_t *ptszZipFile, wchar_t *ptszDestPath, wchar_t *ptszBackPath,bool ch)
+int unzip(const wchar_t *pwszZipFile, wchar_t *pwszDestPath, wchar_t *pwszBackPath,bool ch)
{
int iErrorCode = 0;
zlib_filefunc64_def ffunc;
fill_fopen64_filefunc(&ffunc);
- unzFile uf = unzOpen2_64(ptszZipFile, &ffunc);
+ unzFile uf = unzOpen2_64(pwszZipFile, &ffunc);
if (uf) {
do {
- if (int err = extractCurrentFile(uf, ptszDestPath, ptszBackPath,ch))
+ if (int err = extractCurrentFile(uf, pwszDestPath, pwszBackPath,ch))
iErrorCode = err;
}
while (unzGoToNextFile(uf) == UNZ_OK);