diff options
Diffstat (limited to 'plugins/PluginUpdater')
| -rw-r--r-- | plugins/PluginUpdater/src/DlgListNew.cpp | 96 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/DlgUpdate.cpp | 210 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Events.cpp | 12 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Notifications.cpp | 14 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Options.cpp | 6 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/PluginUpdater.cpp | 8 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Utils.cpp | 87 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/checksum.cpp | 4 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/stdafx.h | 32 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/unzipfile.cpp | 48 | 
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);
  | 
