diff options
| author | George Hazan <george.hazan@gmail.com> | 2012-11-17 16:20:20 +0000 | 
|---|---|---|
| committer | George Hazan <george.hazan@gmail.com> | 2012-11-17 16:20:20 +0000 | 
| commit | c61eff4bc0a9ebdfb43b8e68b345fa53456378a5 (patch) | |
| tree | 7c9d224d57b7a912e6282db4ffb53a09f66e5142 /plugins/PluginUpdater/src | |
| parent | 3cc2e824092b0b542b3d1857bb742514560b0f32 (diff) | |
bunch of fixes for updater:
- fix to update FingerPrint icons;
- fix to move files across different disks;
- five nasty clutches removed;
- code cleaning
git-svn-id: http://svn.miranda-ng.org/main/trunk@2336 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/PluginUpdater/src')
| -rw-r--r-- | plugins/PluginUpdater/src/Common.h | 6 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Minizip/ioapi.c | 2 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Minizip/unzip.c | 16 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Notifications.cpp | 18 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Options.cpp | 4 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Scanner.cpp | 67 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Utils.cpp | 4 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/Version.h | 2 | ||||
| -rw-r--r-- | plugins/PluginUpdater/src/unzipfile.cpp | 12 | 
9 files changed, 62 insertions, 69 deletions
diff --git a/plugins/PluginUpdater/src/Common.h b/plugins/PluginUpdater/src/Common.h index 9efcd8b875..3d79a36f33 100644 --- a/plugins/PluginUpdater/src/Common.h +++ b/plugins/PluginUpdater/src/Common.h @@ -78,10 +78,7 @@ struct FILEINFO  {
  	TCHAR tszOldName[MAX_PATH], tszNewName[MAX_PATH];
  	FILEURL File;
 -	BOOL enabled, bDeleteOnly;
 -	BYTE FileType;
 -	int  FileNum;
 -	BYTE Force;
 +	BOOL bEnabled, bDeleteOnly;
  };
  typedef OBJLIST<FILEINFO> FILELIST;
 @@ -139,7 +136,6 @@ int  OnFoldersChanged(WPARAM, LPARAM);  int  OnPreShutdown(WPARAM, LPARAM);
  int  OptInit(WPARAM, LPARAM);
 -void PrepareFileName(TCHAR *dest, size_t destSize, const TCHAR *ptszPath, const TCHAR *ptszFileName);
  void BackupFile(TCHAR *ptszSrcFileName, TCHAR *ptszBackFileName);
  void DoCheck(int iFlag);
 diff --git a/plugins/PluginUpdater/src/Minizip/ioapi.c b/plugins/PluginUpdater/src/Minizip/ioapi.c index a6cd3f3ca8..4219ed1f24 100644 --- a/plugins/PluginUpdater/src/Minizip/ioapi.c +++ b/plugins/PluginUpdater/src/Minizip/ioapi.c @@ -199,7 +199,7 @@ static long ZCALLBACK fseek64_file_func (voidpf  opaque, voidpf stream, ZPOS64_T      }      ret = 0; -    if(fseeko64((FILE *)stream, offset, fseek_origin) != 0) +    if (fseeko64((FILE *)stream, offset, fseek_origin) != 0)                          ret = -1;      return ret; diff --git a/plugins/PluginUpdater/src/Minizip/unzip.c b/plugins/PluginUpdater/src/Minizip/unzip.c index 44f9876160..59b5941576 100644 --- a/plugins/PluginUpdater/src/Minizip/unzip.c +++ b/plugins/PluginUpdater/src/Minizip/unzip.c @@ -753,7 +753,7 @@ local unzFile unzOpenInternal (const void *path,      s=(unz64_s*)ALLOC(sizeof(unz64_s)); -    if( s != NULL) +    if ( s != NULL)      {          *s=us;          unzGoToFirstFile((unzFile)s); @@ -1040,26 +1040,26 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,              {                                                          uLong uL; -                                                                if(file_info.uncompressed_size == (ZPOS64_T)(unsigned long)-1) +                                                                if (file_info.uncompressed_size == (ZPOS64_T)(unsigned long)-1)                                                                  {                                                                          if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK)                                                                                          err=UNZ_ERRNO;                                                                  } -                                                                if(file_info.compressed_size == (ZPOS64_T)(unsigned long)-1) +                                                                if (file_info.compressed_size == (ZPOS64_T)(unsigned long)-1)                                                                  {                                                                          if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK)                                                                                    err=UNZ_ERRNO;                                                                  } -                                                                if(file_info_internal.offset_curfile == (ZPOS64_T)(unsigned long)-1) +                                                                if (file_info_internal.offset_curfile == (ZPOS64_T)(unsigned long)-1)                                                                  {                                                                          /* Relative Header offset */                                                                          if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK)                                                                                  err=UNZ_ERRNO;                                                                  } -                                                                if(file_info.disk_num_start == (unsigned long)-1) +                                                                if (file_info.disk_num_start == (unsigned long)-1)                                                                  {                                                                          /* Disk Start Number */                                                                          if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) @@ -1623,7 +1623,7 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,                       s->pfile_in_zip_read->byte_before_the_zipfile,                    SEEK_SET)!=0)              return UNZ_INTERNALERROR; -        if(ZREAD64(s->z_filefunc, s->filestream,source, 12)<12) +        if (ZREAD64(s->z_filefunc, s->filestream,source, 12)<12)              return UNZ_INTERNALERROR;          for (i = 0; i<12; i++) @@ -1741,10 +1741,10 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)  #            ifndef NOUNCRYPT -            if(s->encrypted) +            if (s->encrypted)              {                  uInt i; -                for(i=0;i<uReadThis;i++) +                for (i=0;i<uReadThis;i++)                    pfile_in_zip_read_info->read_buffer[i] =                        zdecode(s->keys,s->pcrc_32_tab,                                pfile_in_zip_read_info->read_buffer[i]); diff --git a/plugins/PluginUpdater/src/Notifications.cpp b/plugins/PluginUpdater/src/Notifications.cpp index 364f2f0af7..e9f26d170f 100644 --- a/plugins/PluginUpdater/src/Notifications.cpp +++ b/plugins/PluginUpdater/src/Notifications.cpp @@ -216,7 +216,7 @@ void SelectAll(HWND hDlg, bool bEnable)  	for (int i=0; i < todo.getCount(); i++) {
  		ListView_SetCheckState(hwndList, i, bEnable);
 -		todo[i].enabled = bEnable;
 +		todo[i].bEnabled = bEnable;
  	}
  }
 @@ -240,11 +240,11 @@ static void ApplyUpdates(void *param)  	for (int i=0; i < todo.getCount(); ++i) {
  		ListView_EnsureVisible(hwndList, i, FALSE);
 -		if ( !todo[i].enabled ) {
 +		if ( !todo[i].bEnabled) {
  			SetStringText(hwndList, i, TranslateT("Skipped."));
  			continue;
  		}
 -		if ( todo[i].bDeleteOnly) {
 +		if (todo[i].bDeleteOnly) {
  			SetStringText(hwndList, i, TranslateT("Will be deleted!"));
  			continue;
  		}
 @@ -279,7 +279,7 @@ static void ApplyUpdates(void *param)  	TCHAR *tszMirandaPath = Utils_ReplaceVarsT(_T("%miranda_path%"));
  	for (int i = 0; i < todo.getCount(); i++) {
 -		if ( !todo[i].enabled)
 +		if ( !todo[i].bEnabled)
  			continue;
  		TCHAR tszBackFile[MAX_PATH];
 @@ -365,7 +365,7 @@ BOOL IsRunAsAdmin()  		goto Cleanup;
  	}
 -	// Determine whether the SID of administrators group is enabled in 
 +	// Determine whether the SID of administrators group is bEnabled in 
  	// the primary access token of the process.
  	if (!CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin))
  	{
 @@ -545,7 +545,7 @@ INT_PTR CALLBACK DlgUpdate(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam  				// remember whether the user has decided not to update this component with this particular new version
  				ListView_SetCheckState(hwndList, lvI.iItem, true);
 -				todo[i].enabled = true;
 +				todo[i].bEnabled = true;
  			}
  			HWND hwOk = GetDlgItem(hDlg, IDOK);
  			EnableWindow(hwOk, true);
 @@ -574,11 +574,11 @@ INT_PTR CALLBACK DlgUpdate(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam  					OBJLIST<FILEINFO> &todo = *(OBJLIST<FILEINFO> *)GetWindowLongPtr(hDlg, GWLP_USERDATA);
  					if ((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK) {
 -						todo[lvI.iItem].enabled = ListView_GetCheckState(hwndList, nmlv->iItem);
 +						todo[lvI.iItem].bEnabled = ListView_GetCheckState(hwndList, nmlv->iItem);
  						bool enableOk = false;
 -						for(int i=0; i < todo.getCount(); ++i) {
 -							if(todo[i].enabled) {
 +						for (int i=0; i < todo.getCount(); ++i) {
 +							if (todo[i].bEnabled) {
  								enableOk = true;
  								break;
  							}
 diff --git a/plugins/PluginUpdater/src/Options.cpp b/plugins/PluginUpdater/src/Options.cpp index 91fbfa80a5..3d24fb72c8 100644 --- a/plugins/PluginUpdater/src/Options.cpp +++ b/plugins/PluginUpdater/src/Options.cpp @@ -243,7 +243,7 @@ INT_PTR CALLBACK DlgPopUpOpts(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)  		{
  			WORD idCtrl = LOWORD(wParam), wNotifyCode = HIWORD(wParam);
  			if (wNotifyCode == CPN_COLOURCHANGED) {
 -				if(idCtrl > 40070) 				{
 +				if (idCtrl > 40070) 				{
  					//It's a color picker change. idCtrl is the control id.
  					COLORREF color = SendDlgItemMessage(hdlg, idCtrl, CPM_GETCOLOUR, 0, 0);
  					int ctlID = idCtrl;
 @@ -259,7 +259,7 @@ INT_PTR CALLBACK DlgPopUpOpts(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)  			if (wNotifyCode == CBN_SELCHANGE) {
  				if (idCtrl == IDC_LC)
  					PopupOptions.LeftClickAction = (BYTE)SendDlgItemMessage(hdlg, IDC_LC, CB_GETCURSEL, 0, 0);
 -				else if(idCtrl == IDC_RC)
 +				else if (idCtrl == IDC_RC)
  					PopupOptions.RightClickAction = (BYTE)SendDlgItemMessage(hdlg, IDC_RC, CB_GETCURSEL, 0, 0);
  				SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
 diff --git a/plugins/PluginUpdater/src/Scanner.cpp b/plugins/PluginUpdater/src/Scanner.cpp index 25e6ea388a..65c38b34a3 100644 --- a/plugins/PluginUpdater/src/Scanner.cpp +++ b/plugins/PluginUpdater/src/Scanner.cpp @@ -35,17 +35,33 @@ static bool Exists(LPCTSTR strName)  struct ServListEntry
  {
 +	ServListEntry(const char* _name, const char* _hash) :
 +		m_name( mir_a2t(_name)),
 +		m_bNeedFree(true)
 +	{
 +		strncpy(m_szHash, _hash, sizeof(m_szHash));
 +	}
 +
 +	ServListEntry(TCHAR* _name) :
 +		m_name(_name),
 +		m_bNeedFree(false)
 +	{
 +	}
 +
  	~ServListEntry()
 -	{	mir_free(m_name);
 +	{	
 +		if (m_bNeedFree)
 +			mir_free(m_name);
  	}
 -	TCHAR *m_name, *m_searchName;
 +	TCHAR *m_name;
  	char   m_szHash[32+1];
 +	bool   m_bNeedFree;
  };
  static int CompareHashes(const ServListEntry *p1, const ServListEntry *p2)
  {
 -	return _tcscmp(p1->m_searchName, p2->m_searchName);
 +	return _tcsicmp(p1->m_name, p2->m_name);
  }
  /////////////////////////////////////////////////////////////////////////////////////////
 @@ -128,15 +144,10 @@ static void ScanFolder(const TCHAR *tszFolder, size_t cbBaseLen, int level, cons  		// this file is not marked for deletion
  		if (tszNewName[0]) { 
 -			// parse a relative name and extract a key for hashtable lookup
 -			TCHAR *ptszName = _tcschr(tszNewName, '\\');
 -			ptszName = (ptszName != NULL) ? ptszName+1 : tszNewName;
 -			_tcscpy(key, ptszName);
 -			_tcslwr(key);
 -			ServListEntry tmp = {NULL, key};
 +			ServListEntry tmp(tszNewName);
  			ServListEntry *item = hashes.find(&tmp);
  			if (item == NULL) {
 -				TCHAR *p = _tcschr(key, '.');
 +				TCHAR *p = _tcsrchr(tszNewName, '.');
  				if (p[-1] != 'w')
  					continue;
 @@ -145,13 +156,9 @@ static void ScanFolder(const TCHAR *tszFolder, size_t cbBaseLen, int level, cons  				if ((item = hashes.find(&tmp)) == NULL)
  					continue;
 -				strdel(ptszName+iPos, 1);
 +				strdel(tszNewName+iPos, 1);
  			}
 -			PrepareFileName(key, SIZEOF(key), NULL, item->m_name);
 -			if ( _tcsicmp(tszNewName, key)) // skip files with the same names from another folders
 -				continue;
 -
  			ptszUrl = item->m_name;
  			char szMyHash[33];
 @@ -174,19 +181,20 @@ static void ScanFolder(const TCHAR *tszFolder, size_t cbBaseLen, int level, cons  			}
  			else {
  				FileInfo->bDeleteOnly = FALSE;
 -				PrepareFileName(FileInfo->tszNewName, SIZEOF(FileInfo->tszNewName), NULL, ptszUrl);
 +				_tcsncpy(FileInfo->tszNewName, ptszUrl, SIZEOF(FileInfo->tszNewName));
  			}
  			_tcscpy(tszBuf, ptszUrl);
  			TCHAR *p = _tcsrchr(tszBuf, '.');
  			if (p) *p = 0;
 -			p = _tcsrchr(tszBuf, '/');
 -
 -			mir_sntprintf(FileInfo->File.tszDiskPath, SIZEOF(FileInfo->File.tszDiskPath), _T("%s\\Temp\\%s.zip"), tszRoot, (p) ? p+1 : tszBuf);
 -			mir_sntprintf(FileInfo->File.tszDownloadURL, SIZEOF(FileInfo->File.tszDownloadURL), _T("%s/%s"), tszBaseUrl, ptszUrl);
 -			if ((pExt = _tcsrchr(FileInfo->File.tszDownloadURL, '.')) != NULL)
 -				_tcscpy(pExt, _T(".zip"));
 -
 +			p = _tcsrchr(tszBuf, '\\');
 +			p = (p) ? p+1 : tszBuf;
 +			_tcslwr(p);
 +
 +			mir_sntprintf(FileInfo->File.tszDiskPath, SIZEOF(FileInfo->File.tszDiskPath), _T("%s\\Temp\\%s.zip"), tszRoot, p);
 +			mir_sntprintf(FileInfo->File.tszDownloadURL, SIZEOF(FileInfo->File.tszDownloadURL), _T("%s/%s.zip"), tszBaseUrl, tszBuf);
 +			for (p = _tcschr(FileInfo->File.tszDownloadURL, '\\'); p != 0; p = _tcschr(p, '\\'))
 +				*p++ = '/';
  			UpdateFiles->insert(FileInfo);
  		} // end compare versions
  	}
 @@ -262,19 +270,8 @@ static void CheckUpdates(void *)  		if ( !opts.bUpdateIcons && !_strnicmp(str, "icons\\", 6))
  			continue;
 -		ServListEntry *newItem = new ServListEntry;
  		_strlwr(p);
 -		strncpy(newItem->m_szHash, p, sizeof(newItem->m_szHash));
 -
 -		for (p = strchr(str, '\\'); p != NULL; p = strchr(p+1, '\\'))
 -			*p = '/';
 -
 -		newItem->m_name = mir_a2t(str);
 -
 -		TCHAR *szName = _tcsrchr(newItem->m_name, '/');
 -		newItem->m_searchName = (szName == NULL) ? newItem->m_name : szName+1;
 -		_tcslwr(newItem->m_searchName);
 -		hashes.insert(newItem);
 +		hashes.insert(new ServListEntry(str, p));
  	}
  	fclose(fp);
  	DeleteFile(tszTmpIni);
 diff --git a/plugins/PluginUpdater/src/Utils.cpp b/plugins/PluginUpdater/src/Utils.cpp index da09a0846e..c94730da3b 100644 --- a/plugins/PluginUpdater/src/Utils.cpp +++ b/plugins/PluginUpdater/src/Utils.cpp @@ -188,7 +188,7 @@ BOOL AllowUpdateOnStartup()  		time_t now = time(NULL);
  		time_t was = DBGetContactSettingDword(NULL, MODNAME, "LastUpdate", 0);
 -		if((now - was) < 86400)
 +		if ((now - was) < 86400)
  			return FALSE;
  	}
  	return TRUE;
 @@ -205,7 +205,7 @@ LONG PeriodToMilliseconds(const int period, BYTE& periodMeasure)  	default:
  		// hour
 -		if(periodMeasure != 0)
 +		if (periodMeasure != 0)
  			periodMeasure = 0;
  		result *= 60 * 60;
  		break;
 diff --git a/plugins/PluginUpdater/src/Version.h b/plugins/PluginUpdater/src/Version.h index 344de91022..e477fe0877 100644 --- a/plugins/PluginUpdater/src/Version.h +++ b/plugins/PluginUpdater/src/Version.h @@ -1,7 +1,7 @@  #define __MAJOR_VERSION           0
  #define __MINOR_VERSION           1
  #define __RELEASE_NUM             0
 -#define __BUILD_NUM               1
 +#define __BUILD_NUM               2
  #define __FILEVERSION_STRING      __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM
  #define __FILEVERSION_DOTS        __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM
 diff --git a/plugins/PluginUpdater/src/unzipfile.cpp b/plugins/PluginUpdater/src/unzipfile.cpp index c5f39e1451..b2b621d37a 100644 --- a/plugins/PluginUpdater/src/unzipfile.cpp +++ b/plugins/PluginUpdater/src/unzipfile.cpp @@ -26,12 +26,9 @@ extern "C"  	void fill_fopen64_filefunc(zlib_filefunc64_def *pzlib_filefunc_def);
  }
 -void PrepareFileName(TCHAR *dest, size_t destSize, const TCHAR *ptszPath, const TCHAR *ptszFileName)
 +static void PrepareFileName(TCHAR *dest, size_t destSize, const TCHAR *ptszPath, const TCHAR *ptszFileName)
  {
 -	if (ptszPath)
 -		mir_sntprintf(dest, destSize, _T("%s\\%s"), ptszPath, ptszFileName);
 -	else
 -		mir_sntprintf(dest, destSize, _T("%s"), ptszFileName);
 +	mir_sntprintf(dest, destSize, _T("%s\\%s"), ptszPath, ptszFileName);
  	for (TCHAR *p = dest; *p; ++p)
  		if (*p == '/')
 @@ -42,7 +39,10 @@ void BackupFile(TCHAR *ptszSrcFileName, TCHAR *ptszBackFileName)  {
  	CreatePathToFileT(ptszBackFileName);
  	DeleteFile(ptszBackFileName);
 -	MoveFile(ptszSrcFileName, ptszBackFileName);
 +	if ( MoveFile(ptszSrcFileName, ptszBackFileName) == 0) { // use copy on error
 +		CopyFile(ptszSrcFileName, ptszBackFileName, FALSE);
 +		DeleteFile(ptszSrcFileName);
 +	}
  }
  bool extractCurrentFile(unzFile uf, TCHAR *ptszDestPath, TCHAR *ptszBackPath)
  | 
