diff options
Diffstat (limited to 'protocols/YAMN/src')
| -rw-r--r-- | protocols/YAMN/src/account.cpp | 60 | ||||
| -rw-r--r-- | protocols/YAMN/src/browser/badconnect.cpp | 6 | ||||
| -rw-r--r-- | protocols/YAMN/src/browser/browser.h | 8 | ||||
| -rw-r--r-- | protocols/YAMN/src/browser/mailbrowser.cpp | 66 | ||||
| -rw-r--r-- | protocols/YAMN/src/filterplugin.cpp | 2 | ||||
| -rw-r--r-- | protocols/YAMN/src/mails/mails.cpp | 10 | ||||
| -rw-r--r-- | protocols/YAMN/src/mails/mime.cpp | 661 | ||||
| -rw-r--r-- | protocols/YAMN/src/main.cpp | 3 | ||||
| -rw-r--r-- | protocols/YAMN/src/proto/pop3/pop3comm.cpp | 36 | ||||
| -rw-r--r-- | protocols/YAMN/src/services.cpp | 10 | ||||
| -rw-r--r-- | protocols/YAMN/src/stdafx.h | 20 | ||||
| -rw-r--r-- | protocols/YAMN/src/yamn.cpp | 4 | 
12 files changed, 433 insertions, 453 deletions
diff --git a/protocols/YAMN/src/account.cpp b/protocols/YAMN/src/account.cpp index 0755276f7b..36ac6e7072 100644 --- a/protocols/YAMN/src/account.cpp +++ b/protocols/YAMN/src/account.cpp @@ -48,7 +48,7 @@ INT_PTR CreatePluginAccountSvc(WPARAM wParam, LPARAM lParam)  	if (Plugin != nullptr)  	{ -		HACCOUNT NewAccount; +		CAccount *NewAccount;  		if (Plugin->Fcn->NewAccountFcnPtr != nullptr)  			//Let plugin create its own structure, which can be derived from CAccount structure  			NewAccount = Plugin->Fcn->NewAccountFcnPtr(Plugin, YAMN_ACCOUNTVERSION); @@ -71,7 +71,7 @@ INT_PTR CreatePluginAccountSvc(WPARAM wParam, LPARAM lParam)  INT_PTR DeletePluginAccountSvc(WPARAM wParam, LPARAM)  { -	HACCOUNT OldAccount = (HACCOUNT)wParam; +	CAccount *OldAccount = (CAccount *)wParam;  	if (OldAccount->Plugin->Fcn != nullptr)  	{ @@ -87,15 +87,15 @@ INT_PTR DeletePluginAccountSvc(WPARAM wParam, LPARAM)  #ifdef DEBUG_SYNCHRO  			DebugLog(SynchroFile,"DeletePluginAccountSvc:delete OldAccount\n");  #endif -			delete OldAccount;	//consider account as standard YAMN HACCOUNT and use its own destructor +			delete OldAccount;	//consider account as standard YAMN CAccount *and use its own destructor  		}  		return 1;  	} -	delete OldAccount;			//consider account as standard YAMN HACCOUNT, not initialized before and use its own destructor +	delete OldAccount;			//consider account as standard YAMN CAccount *, not initialized before and use its own destructor  	return 1;  } -int InitAccount(HACCOUNT Which) +int InitAccount(CAccount *Which)  {  	//initialize synchronizing objects  	Which->AccountAccessSO = new SWMRG; @@ -124,7 +124,7 @@ int InitAccount(HACCOUNT Which)  	return 1;  } -void DeInitAccount(HACCOUNT Which) +void DeInitAccount(CAccount *Which)  {  	//delete YAMN allocated fields  	if (Which->Name != nullptr) @@ -147,7 +147,7 @@ void DeInitAccount(HACCOUNT Which)  	DeleteMessagesToEndFcn(Which, (HYAMNMAIL)Which->Mails);  } -void StopSignalFcn(HACCOUNT Which) +void StopSignalFcn(CAccount *Which)  //set event that we are going to delete account  {  #ifdef DEBUG_SYNCHRO @@ -379,7 +379,7 @@ static DWORD ReadNotificationFromMemory(char **Parser, char *End, YAMN_NOTIFICAT  	return 0;  } -DWORD ReadMessagesFromMemory(HACCOUNT Which, char **Parser, char *End) +DWORD ReadMessagesFromMemory(CAccount *Which, char **Parser, char *End)  {  	char *Finder;  	DWORD Size, Stat; @@ -481,7 +481,7 @@ DWORD ReadMessagesFromMemory(HACCOUNT Which, char **Parser, char *End)  	return 0;  } -DWORD ReadAccountFromMemory(HACCOUNT Which, char **Parser, char *End) +DWORD ReadAccountFromMemory(CAccount *Which, char **Parser, char *End)  {  	DWORD Stat;  #ifdef DEBUG_FILEREAD @@ -638,7 +638,7 @@ static INT_PTR PerformAccountReading(HYAMNPROTOPLUGIN Plugin, char *MemFile, cha  	char *Parser;  	DWORD Ver, Stat; -	HACCOUNT ActualAccount, FirstAllocatedAccount; +	CAccount *ActualAccount, *FirstAllocatedAccount;  	Ver = *(DWORD *)MemFile;  	if (Ver > YAMN_ACCOUNTFILEVERSION) @@ -655,7 +655,7 @@ static INT_PTR PerformAccountReading(HYAMNPROTOPLUGIN Plugin, char *MemFile, cha  #ifdef DEBUG_SYNCHRO  	DebugLog(SynchroFile,"AddAccountsFromFile:AccountBrowserSO-write enter\n");  #endif -	if (nullptr == (ActualAccount = (HACCOUNT)CallService(MS_YAMN_GETNEXTFREEACCOUNT, (WPARAM)Plugin, (LPARAM)YAMN_ACCOUNTVERSION))) +	if (nullptr == (ActualAccount = (CAccount *)CallService(MS_YAMN_GETNEXTFREEACCOUNT, (WPARAM)Plugin, (LPARAM)YAMN_ACCOUNTVERSION)))  	{  #ifdef DEBUG_SYNCHRO  		DebugLog(SynchroFile,"AddAccountsFromFile:AccountBrowserSO-write done\n"); @@ -668,7 +668,7 @@ static INT_PTR PerformAccountReading(HYAMNPROTOPLUGIN Plugin, char *MemFile, cha  	do  	{ -		HACCOUNT Temp; +		CAccount *Temp;  #ifdef DEBUG_SYNCHRO  		DebugLog(SynchroFile,"AddAccountsFromFile:ActualAccountSO-write wait\n"); @@ -704,7 +704,7 @@ static INT_PTR PerformAccountReading(HYAMNPROTOPLUGIN Plugin, char *MemFile, cha  #endif  		WriteDoneFcn(ActualAccount->AccountAccessSO); -		if ((Stat != EACC_ENDOFFILE) && (nullptr == (ActualAccount = (HACCOUNT)CallService(MS_YAMN_GETNEXTFREEACCOUNT, (WPARAM)Plugin, (LPARAM)YAMN_ACCOUNTVERSION)))) +		if ((Stat != EACC_ENDOFFILE) && (nullptr == (ActualAccount = (CAccount *)CallService(MS_YAMN_GETNEXTFREEACCOUNT, (WPARAM)Plugin, (LPARAM)YAMN_ACCOUNTVERSION))))  		{  			for (ActualAccount = FirstAllocatedAccount; ActualAccount != nullptr; ActualAccount = Temp)  			{ @@ -778,7 +778,7 @@ DWORD WriteStringToFileW(HANDLE File, WCHAR *Source)  	return 0;  } -DWORD WriteMessagesToFile(HANDLE File, HACCOUNT Which) +DWORD WriteMessagesToFile(HANDLE File, CAccount *Which)  {  	DWORD WrittenBytes, Stat;  	HYAMNMAIL ActualMail = (HYAMNMAIL)Which->Mails; @@ -813,7 +813,7 @@ DWORD WriteMessagesToFile(HANDLE File, HACCOUNT Which)  static INT_PTR PerformAccountWriting(HYAMNPROTOPLUGIN Plugin, HANDLE File)  {  	DWORD WrittenBytes, Stat; -	HACCOUNT ActualAccount; +	CAccount *ActualAccount;  	DWORD Ver = YAMN_ACCOUNTFILEVERSION;  	BOOL Writed = FALSE;  	DWORD ReturnValue = 0, EnterCode; @@ -987,7 +987,7 @@ INT_PTR FindAccountByNameSvc(WPARAM wParam, LPARAM lParam)  {  	HYAMNPROTOPLUGIN Plugin = (HYAMNPROTOPLUGIN)wParam;  	char *SearchedAccount = (char *)lParam; -	HACCOUNT Finder; +	CAccount *Finder;  #ifdef DEBUG_SYNCHRO  	DebugLog(SynchroFile,"FindAccountByName:AccountBrowserSO-read wait\n"); @@ -1009,15 +1009,15 @@ INT_PTR FindAccountByNameSvc(WPARAM wParam, LPARAM lParam)  INT_PTR GetNextFreeAccountSvc(WPARAM wParam, LPARAM lParam)  {  	HYAMNPROTOPLUGIN Plugin = (HYAMNPROTOPLUGIN)wParam; -	HACCOUNT Finder; +	CAccount *Finder;  	if (Plugin->FirstAccount == nullptr)  	{ -		Plugin->FirstAccount = (HACCOUNT)CallService(MS_YAMN_CREATEPLUGINACCOUNT, wParam, lParam); +		Plugin->FirstAccount = (CAccount *)CallService(MS_YAMN_CREATEPLUGINACCOUNT, wParam, lParam);  		return (INT_PTR)Plugin->FirstAccount;  	}  	for (Finder = Plugin->FirstAccount; Finder->Next != nullptr; Finder = Finder->Next); -	Finder->Next = (HACCOUNT)CallService(MS_YAMN_CREATEPLUGINACCOUNT, wParam, lParam); +	Finder->Next = (CAccount *)CallService(MS_YAMN_CREATEPLUGINACCOUNT, wParam, lParam);  	return (INT_PTR)Finder->Next;  } @@ -1025,11 +1025,11 @@ INT_PTR GetNextFreeAccountSvc(WPARAM wParam, LPARAM lParam)  int FindPluginAccount(WPARAM wParam,LPARAM lParam)  {  HYAMNPROTOPLUGIN Plugin=(HYAMNPROTOPLUGIN)wParam; -HACCOUNT Finder=(HACCOUNT)lParam; +CAccount *Finder=(CAccount *)lParam;  if (Finder=NULL)	Finder=Plugin->FirstAccount; -//	for (;Finder != NULL && Finder->PluginID != Plugin->PluginInfo->PluginID;Finder=(HACCOUNT)Finder->Next); +//	for (;Finder != NULL && Finder->PluginID != Plugin->PluginInfo->PluginID;Finder=(CAccount *)Finder->Next);  return (int)Finder;  }  */ @@ -1061,8 +1061,8 @@ INT_PTR DeleteAccountSvc(WPARAM wParam, LPARAM lParam)  	//5. delete account from memory  	HYAMNPROTOPLUGIN Plugin = (HYAMNPROTOPLUGIN)wParam; -	HACCOUNT Which = (HACCOUNT)lParam; -	HACCOUNT Finder; +	CAccount *Which = (CAccount *)lParam; +	CAccount *Finder;  	//1. set stop signal   	StopSignalFcn(Which); @@ -1121,14 +1121,14 @@ INT_PTR DeleteAccountSvc(WPARAM wParam, LPARAM lParam)  void __cdecl DeleteAccountInBackground(void *Value)  { -	HACCOUNT Which = (HACCOUNT)Value; +	CAccount *Which = (CAccount *)Value;  	WaitForSingleObject(Which->UsingThreads->Event, INFINITE);  	CallService(MS_YAMN_DELETEPLUGINACCOUNT, (WPARAM)Which, 0);  }  int StopAccounts(HYAMNPROTOPLUGIN Plugin)  { -	HACCOUNT Finder; +	CAccount *Finder;  	//1. wait to get write access  #ifdef DEBUG_SYNCHRO @@ -1159,7 +1159,7 @@ int StopAccounts(HYAMNPROTOPLUGIN Plugin)  int WaitForAllAccounts(HYAMNPROTOPLUGIN Plugin, BOOL GetAccountBrowserAccess)  { -	HACCOUNT Finder; +	CAccount *Finder;  	if (GetAccountBrowserAccess)  	{ @@ -1198,7 +1198,7 @@ int WaitForAllAccounts(HYAMNPROTOPLUGIN Plugin, BOOL GetAccountBrowserAccess)  int DeleteAccounts(HYAMNPROTOPLUGIN Plugin)  { -	HACCOUNT Finder; +	CAccount *Finder;  	//1. wait to get write access  #ifdef DEBUG_SYNCHRO @@ -1213,7 +1213,7 @@ int DeleteAccounts(HYAMNPROTOPLUGIN Plugin)  	for (Finder = Plugin->FirstAccount; Finder != nullptr;)  	{ -		HACCOUNT Next = Finder->Next; +		CAccount *Next = Finder->Next;  		DeletePluginAccountSvc((WPARAM)Finder, 0);  		Finder = Next;  	} @@ -1226,7 +1226,7 @@ int DeleteAccounts(HYAMNPROTOPLUGIN Plugin)  	return 1;  } -void WINAPI GetStatusFcn(HACCOUNT Which, wchar_t *Value) +void WINAPI GetStatusFcn(CAccount *Which, wchar_t *Value)  {  	if (Which == nullptr)  		return; @@ -1235,7 +1235,7 @@ void WINAPI GetStatusFcn(HACCOUNT Which, wchar_t *Value)  	mir_wstrcpy(Value, Which->Status);  } -void WINAPI SetStatusFcn(HACCOUNT Which, wchar_t *Value) +void WINAPI SetStatusFcn(CAccount *Which, wchar_t *Value)  {  	if (Which != nullptr) {  		mir_cslock lck(csAccountStatusCS); diff --git a/protocols/YAMN/src/browser/badconnect.cpp b/protocols/YAMN/src/browser/badconnect.cpp index 02db99b77d..678eb1f337 100644 --- a/protocols/YAMN/src/browser/badconnect.cpp +++ b/protocols/YAMN/src/browser/badconnect.cpp @@ -21,7 +21,7 @@ LRESULT CALLBACK BadConnectPopupProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM  			STARTUPINFOW si;  			memset(&si, 0, sizeof(si));  			si.cb = sizeof(si); -			HACCOUNT ActualAccount = (HACCOUNT)PUGetPluginData(hWnd); +			CAccount *ActualAccount = (CAccount *)PUGetPluginData(hWnd);  #ifdef DEBUG_SYNCHRO  			DebugLog(SynchroFile, "PopupProc:LEFTCLICK:ActualAccountSO-read wait\n");  #endif @@ -79,7 +79,7 @@ INT_PTR CALLBACK DlgProcYAMNBadConnection(HWND hDlg, UINT msg, WPARAM wParam, LP  	case WM_INITDIALOG:  		{  			BOOL ShowPopup, ShowMsg, ShowIco; -			HACCOUNT ActualAccount; +			CAccount *ActualAccount;  			DWORD  ErrorCode;  			char* TitleStrA;  			char *Message1A = nullptr; @@ -206,7 +206,7 @@ void __cdecl BadConnection(void *Param)  {  	MSG msg;  	HWND hBadConnect; -	HACCOUNT ActualAccount; +	CAccount *ActualAccount;  	struct BadConnectionParam MyParam = *(struct BadConnectionParam *)Param;  	ActualAccount = MyParam.account; diff --git a/protocols/YAMN/src/browser/browser.h b/protocols/YAMN/src/browser/browser.h index abab95f761..381ecfb9f5 100644 --- a/protocols/YAMN/src/browser/browser.h +++ b/protocols/YAMN/src/browser/browser.h @@ -5,7 +5,7 @@ typedef struct MailBrowserWinParam  {  #define YAMN_MAILBROWSERVERSION	1  	HANDLE ThreadRunningEV; -	HACCOUNT account; +	CAccount *account;  	DWORD nflags;			//flags YAMN_ACC_??? when new mails  	DWORD nnflags;			//flags YAMN_ACC_??? when no new mails  	void *Param; @@ -14,7 +14,7 @@ typedef struct MailBrowserWinParam  typedef struct MailShowMsgWinParam  {  	HANDLE ThreadRunningEV; -	HACCOUNT account; +	CAccount *account;  	HYAMNMAIL mail;  } YAMN_MAILSHOWPARAM, *PYAMN_MAILSHOWPARAM; @@ -22,7 +22,7 @@ typedef struct NoNewMailParam  {  #define YAMN_NONEWMAILVERSION	1  	HANDLE ThreadRunningEV; -	HACCOUNT account; +	CAccount *account;  	DWORD flags;  	void *Param;  } YAMN_NONEWMAILPARAM,*PYAMN_NONEWMAILPARAM; @@ -31,7 +31,7 @@ typedef struct BadConnectionParam  {  #define YAMN_BADCONNECTIONVERSION	1  	HANDLE ThreadRunningEV; -	HACCOUNT account; +	CAccount *account;  	UINT_PTR errcode;  	void *Param;  } YAMN_BADCONNECTIONPARAM,*PYAMN_BADCONNECTIONPARAM; diff --git a/protocols/YAMN/src/browser/mailbrowser.cpp b/protocols/YAMN/src/browser/mailbrowser.cpp index 78007bc5b2..6321141135 100644 --- a/protocols/YAMN/src/browser/mailbrowser.cpp +++ b/protocols/YAMN/src/browser/mailbrowser.cpp @@ -62,7 +62,7 @@ struct CMailNumbers  struct CMailWinUserInfo  { -	HACCOUNT Account; +	CAccount *Account;  	int TrayIconState;  	BOOL UpdateMailsMessagesAccess;  	BOOL Seen; @@ -88,10 +88,10 @@ struct CSortList  	int	iSubItem;  }; -// Retrieves HACCOUNT, whose mails are displayed in ListMails +// Retrieves CAccount *, whose mails are displayed in ListMails  // hLM- handle of dialog window  // returns handle of account -inline HACCOUNT GetWindowAccount(HWND hDialog); +inline CAccount *GetWindowAccount(HWND hDialog);  // Looks to mail flags and increment mail counter (e.g. if mail is new, increments the new mail counter  // msgq- mail, which increments the counters @@ -111,7 +111,7 @@ enum  // nflags- flags what to do when new mail arrives  // nnflags- flags what to do when no new mail arrives  // returns one of UPDATE_XXX value(not implemented yet) -int UpdateMails(HWND hDlg, HACCOUNT ActualAccount, DWORD nflags, DWORD nnflags); +int UpdateMails(HWND hDlg, CAccount *ActualAccount, DWORD nflags, DWORD nnflags);  // When new mail occurs, shows window, plays sound, runs application...  // hDlg- dialog handle. Dialog of mailbrowser is already created and actions are performed over this window @@ -120,14 +120,14 @@ int UpdateMails(HWND hDlg, HACCOUNT ActualAccount, DWORD nflags, DWORD nnflags);  // nflags- what to do or not to do (e.g. to show mailbrowser window or prohibit to show)  // nflags- flags what to do when new mail arrives  // nnflags- flags what to do when no new mail arrives -void DoMailActions(HWND hDlg, HACCOUNT ActualAccount, struct CMailNumbers *MN, DWORD nflags, DWORD nnflags); +void DoMailActions(HWND hDlg, CAccount *ActualAccount, struct CMailNumbers *MN, DWORD nflags, DWORD nnflags);  // Looks for items in mailbrowser and if they were deleted, delete them from browser window  // hListView- handle of listview window  // ActualAccount- handle of account, whose mails are show  // MailNumbers- pointer to structure, in which function stores numbers of mails with some property  // returns one of UPDATE_XXX value (not implemented yet) -int ChangeExistingMailStatus(HWND hListView, HACCOUNT ActualAccount); +int ChangeExistingMailStatus(HWND hListView, CAccount *ActualAccount);  // Adds new mails to ListView and if any new, shows multi popup (every new message is new popup window created by popup plugin)  // hListView- handle of listview window @@ -136,7 +136,7 @@ int ChangeExistingMailStatus(HWND hListView, HACCOUNT ActualAccount);  // MailNumbers- pointer to structure, in which function stores numbers of mails with some property  // nflags- flags what to do when new mail arrives  // returns one of UPDATE_XXX value (not implemented yet) -int AddNewMailsToListView(HWND hListView, HACCOUNT ActualAccount, DWORD nflags); +int AddNewMailsToListView(HWND hListView, CAccount *ActualAccount, DWORD nflags);  // Window callback procedure for popup window (created by popup plugin)  LRESULT CALLBACK NewMailPopupProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); @@ -200,7 +200,7 @@ LPARAM readItemLParam(HWND hwnd, DWORD iItem)  	return item.lParam;  } -inline HACCOUNT GetWindowAccount(HWND hDlg) +inline CAccount *GetWindowAccount(HWND hDlg)  {  	struct CMailWinUserInfo *mwui = (struct CMailWinUserInfo *)GetWindowLongPtr(hDlg, DWLP_USER); @@ -311,7 +311,7 @@ void IncrementMailCounters(HYAMNMAIL msgq, struct CMailNumbers *MN)  			MN->Real.EventNC++;  } -int UpdateMails(HWND hDlg, HACCOUNT ActualAccount, DWORD nflags, DWORD nnflags) +int UpdateMails(HWND hDlg, CAccount *ActualAccount, DWORD nflags, DWORD nnflags)  {  	struct CMailNumbers MN; @@ -444,7 +444,7 @@ int UpdateMails(HWND hDlg, HACCOUNT ActualAccount, DWORD nflags, DWORD nnflags)  	return 1;  } -int ChangeExistingMailStatus(HWND hListView, HACCOUNT ActualAccount) +int ChangeExistingMailStatus(HWND hListView, CAccount *ActualAccount)  {  	LVITEM item;  	HYAMNMAIL mail, msgq; @@ -471,7 +471,7 @@ int ChangeExistingMailStatus(HWND hListView, HACCOUNT ActualAccount)  }  void MimeDateToLocalizedDateTime(char *datein, WCHAR *dateout, int lendateout); -int AddNewMailsToListView(HWND hListView, HACCOUNT ActualAccount, DWORD nflags) +int AddNewMailsToListView(HWND hListView, CAccount *ActualAccount, DWORD nflags)  {  	WCHAR *FromStr;  	WCHAR SizeStr[20]; @@ -620,7 +620,7 @@ int AddNewMailsToListView(HWND hListView, HACCOUNT ActualAccount, DWORD nflags)  	return TRUE;  } -void DoMailActions(HWND hDlg, HACCOUNT ActualAccount, struct CMailNumbers *MN, DWORD nflags, DWORD nnflags) +void DoMailActions(HWND hDlg, CAccount *ActualAccount, struct CMailNumbers *MN, DWORD nflags, DWORD nnflags)  {  	NOTIFYICONDATA nid = {};  	nid.cbSize = sizeof(nid); @@ -793,7 +793,7 @@ LRESULT CALLBACK NewMailPopupProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lPa  		// if clicked and it's new mail popup window  		if ((HIWORD(wParam) == STN_CLICKED) && (-1 != (PluginParam = (INT_PTR)PUGetPluginData(hWnd)))) {  			MCONTACT hContact = 0; -			HACCOUNT Account; +			CAccount *Account;  			if (PluginParam) {  				PYAMN_MAILSHOWPARAM MailParam = new YAMN_MAILSHOWPARAM;  				memcpy(MailParam, (PINT_PTR)PluginParam, sizeof(YAMN_MAILSHOWPARAM)); @@ -807,11 +807,11 @@ LRESULT CALLBACK NewMailPopupProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lPa  				hContact = PUGetContact(hWnd);  				if (!g_plugin.getString(hContact, "Id", &dbv)) { -					Account = (HACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal); +					Account = (CAccount *)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal);  					db_free(&dbv);  				}  				else -					Account = (HACCOUNT)hContact; //???? +					Account = (CAccount *)hContact; //????  #ifdef DEBUG_SYNCHRO @@ -865,19 +865,19 @@ LRESULT CALLBACK NewMailPopupProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lPa  		break;  	case WM_YAMN_STOPACCOUNT:  		{ -			HACCOUNT ActualAccount; +			CAccount *ActualAccount;  			DBVARIANT dbv;  			MCONTACT hContact = PUGetContact(hWnd);  			if (!g_plugin.getString(hContact, "Id", &dbv)) { -				ActualAccount = (HACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal); +				ActualAccount = (CAccount *)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal);  				db_free(&dbv);  			}  			else -				ActualAccount = (HACCOUNT)hContact; +				ActualAccount = (CAccount *)hContact; -			if ((HACCOUNT)wParam != ActualAccount) +			if ((CAccount *)wParam != ActualAccount)  				break;  			DestroyWindow(hWnd);  			return 0; @@ -894,17 +894,17 @@ LRESULT CALLBACK NoNewMailPopupProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM l  	switch (msg) {  	case WM_COMMAND:  		if ((HIWORD(wParam) == STN_CLICKED) && (msg == WM_COMMAND)) { -			HACCOUNT ActualAccount; +			CAccount *ActualAccount;  			DBVARIANT dbv;  			MCONTACT hContact = PUGetContact(hWnd);  			if (!g_plugin.getString(hContact, "Id", &dbv)) { -				ActualAccount = (HACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal); +				ActualAccount = (CAccount *)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal);  				db_free(&dbv);  			}  			else -				ActualAccount = (HACCOUNT)hContact; +				ActualAccount = (CAccount *)hContact;  #ifdef DEBUG_SYNCHRO  			DebugLog(SynchroFile, "PopupProc:LEFTCLICK:ActualAccountSO-read wait\n"); @@ -957,19 +957,19 @@ LRESULT CALLBACK NoNewMailPopupProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM l  		break;  	case WM_YAMN_STOPACCOUNT:  		{ -			HACCOUNT ActualAccount; +			CAccount *ActualAccount;  			DBVARIANT dbv;  			MCONTACT hContact = PUGetContact(hWnd);  			if (!g_plugin.getString(hContact, "Id", &dbv)) { -				ActualAccount = (HACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal); +				ActualAccount = (CAccount *)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal);  				db_free(&dbv);  			}  			else -				ActualAccount = (HACCOUNT)hContact; +				ActualAccount = (CAccount *)hContact; -			if ((HACCOUNT)wParam != ActualAccount) +			if ((CAccount *)wParam != ActualAccount)  				break;  			DestroyWindow(hWnd); @@ -1449,7 +1449,7 @@ INT_PTR CALLBACK DlgProcYAMNShowMessage(HWND hDlg, UINT msg, WPARAM wParam, LPAR  			if (nullptr == MailParam)  				break; -			if ((HACCOUNT)wParam != MailParam->account) +			if ((CAccount *)wParam != MailParam->account)  				break;  #ifdef DEBUG_SYNCHRO  			DebugLog(SynchroFile, "ShowMessage:STOPACCOUNT:sending destroy msg\n"); @@ -1626,7 +1626,7 @@ CREADTEVIEWMESSAGEWINDOW:  INT_PTR CALLBACK DlgProcYAMNMailBrowser(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)  { -	HACCOUNT ActualAccount; +	CAccount *ActualAccount;  	int Items;  	switch (msg) { @@ -1788,7 +1788,7 @@ INT_PTR CALLBACK DlgProcYAMNMailBrowser(HWND hDlg, UINT msg, WPARAM wParam, LPAR  		if (nullptr == (ActualAccount = GetWindowAccount(hDlg)))  			break; -		if ((HACCOUNT)wParam != ActualAccount) +		if ((CAccount *)wParam != ActualAccount)  			break;  		wchar_t accstatus[512]; @@ -1812,7 +1812,7 @@ INT_PTR CALLBACK DlgProcYAMNMailBrowser(HWND hDlg, UINT msg, WPARAM wParam, LPAR  			DebugLog(SynchroFile, "MailBrowser:CHANGECONTENT:posting UPDATEMAILS\n");  #endif  			if (ThisThreadWindow) { -				if (!UpdateMails(hDlg, (HACCOUNT)wParam, UpdateParams.Flags->nflags, UpdateParams.Flags->nnflags)) +				if (!UpdateMails(hDlg, (CAccount *)wParam, UpdateParams.Flags->nflags, UpdateParams.Flags->nnflags))  					DestroyWindow(hDlg);  			}  			else if (PostMessage(hDlg, WM_YAMN_UPDATEMAILS, wParam, (LPARAM)&UpdateParams))	//this ensures UpdateMails will execute the thread who created the browser window @@ -1842,7 +1842,7 @@ INT_PTR CALLBACK DlgProcYAMNMailBrowser(HWND hDlg, UINT msg, WPARAM wParam, LPAR  			if (nullptr == (ActualAccount = GetWindowAccount(hDlg)))  				return 0; -			if ((HACCOUNT)wParam != ActualAccount) +			if ((CAccount *)wParam != ActualAccount)  				return 0;  			nflags = um->Flags->nflags; @@ -1858,7 +1858,7 @@ INT_PTR CALLBACK DlgProcYAMNMailBrowser(HWND hDlg, UINT msg, WPARAM wParam, LPAR  	case WM_YAMN_STOPACCOUNT:  		if (nullptr == (ActualAccount = GetWindowAccount(hDlg)))  			break; -		if ((HACCOUNT)wParam != ActualAccount) +		if ((CAccount *)wParam != ActualAccount)  			break;  		PostQuitMessage(0);  		return 1; @@ -2295,7 +2295,7 @@ void __cdecl MailBrowser(void *Param)  	BOOL WndFound = FALSE;  	struct MailBrowserWinParam MyParam = *(struct MailBrowserWinParam *)Param; -	HACCOUNT ActualAccount = MyParam.account; +	CAccount *ActualAccount = MyParam.account;  	SCIncFcn(ActualAccount->UsingThreads);  	//	we will not use params in stack anymore diff --git a/protocols/YAMN/src/filterplugin.cpp b/protocols/YAMN/src/filterplugin.cpp index dca5780152..35d18bf75c 100644 --- a/protocols/YAMN/src/filterplugin.cpp +++ b/protocols/YAMN/src/filterplugin.cpp @@ -158,7 +158,7 @@ int WINAPI SetFilterPluginFcnImportFcn(HYAMNFILTERPLUGIN Plugin,DWORD Importance  INT_PTR FilterMailSvc(WPARAM wParam,LPARAM lParam)  { -	HACCOUNT Account=(HACCOUNT)wParam; +	CAccount *Account=(CAccount *)wParam;  	HYAMNMAIL Mail=(HYAMNMAIL)lParam;  	PYAMN_FILTERPLUGINQUEUE ActualPlugin; diff --git a/protocols/YAMN/src/mails/mails.cpp b/protocols/YAMN/src/mails/mails.cpp index ee570fa8e2..7345a46dfc 100644 --- a/protocols/YAMN/src/mails/mails.cpp +++ b/protocols/YAMN/src/mails/mails.cpp @@ -50,12 +50,12 @@ void WINAPI AppendQueueFcn(HYAMNMAIL first,HYAMNMAIL second);  //So function works like:  //1. delete (or move to RemovedOld queue if RemovedOld is not NULL) all mails from OldQueue not found in NewQueue  //2. delete (or move to RemovedNew queue if RemovedNew is not NULL) all mails from NewQueue found in OldQueue -void WINAPI SynchroMessagesFcn(HACCOUNT Account,HYAMNMAIL *OldQueue,HYAMNMAIL *RemovedOld,HYAMNMAIL *NewQueue,HYAMNMAIL *RemovedNew); +void WINAPI SynchroMessagesFcn(CAccount *Account,HYAMNMAIL *OldQueue,HYAMNMAIL *RemovedOld,HYAMNMAIL *NewQueue,HYAMNMAIL *RemovedNew);  //Deletes messages from mail From to the end  // Account- account who owns mails  // From- first mail in queue, which is going to delete -void WINAPI DeleteMessagesToEndFcn(HACCOUNT Account,HYAMNMAIL From); +void WINAPI DeleteMessagesToEndFcn(CAccount *Account,HYAMNMAIL From);  //Removes message from queue, does not delete from memory  // From- queue pointer @@ -118,7 +118,7 @@ struct CExportedServices MailExportedSvc[]=  INT_PTR CreateAccountMailSvc(WPARAM wParam,LPARAM lParam)  { -	HACCOUNT Account=(HACCOUNT)wParam; +	CAccount *Account=(CAccount *)wParam;  	DWORD MailVersion=(DWORD)lParam;  	HYAMNMAIL NewMail; @@ -219,7 +219,7 @@ INT_PTR SaveMailDataSvc(WPARAM, LPARAM lParam)  	return (INT_PTR)0;  } -void WINAPI SynchroMessagesFcn(HACCOUNT Account,HYAMNMAIL *OldQueue,HYAMNMAIL *RemovedOld,HYAMNMAIL *NewQueue,HYAMNMAIL *RemovedNew) +void WINAPI SynchroMessagesFcn(CAccount *Account,HYAMNMAIL *OldQueue,HYAMNMAIL *RemovedOld,HYAMNMAIL *NewQueue,HYAMNMAIL *RemovedNew)  //deletes messages from new queue, if they are old  //it also deletes messages from old queue, if they are not in mailbox anymore  //"YAMN_MSG_DELETED" messages in old queue remain in old queue (are never removed, although they are not in new queue) @@ -311,7 +311,7 @@ void WINAPI SynchroMessagesFcn(HACCOUNT Account,HYAMNMAIL *OldQueue,HYAMNMAIL *R  	}  } -void WINAPI DeleteMessagesToEndFcn(HACCOUNT Account,HYAMNMAIL From) +void WINAPI DeleteMessagesToEndFcn(CAccount *Account,HYAMNMAIL From)  {  	HYAMNMAIL Temp;  	while(From != nullptr) diff --git a/protocols/YAMN/src/mails/mime.cpp b/protocols/YAMN/src/mails/mime.cpp index 52ac1a5ff7..8db0b045d9 100644 --- a/protocols/YAMN/src/mails/mime.cpp +++ b/protocols/YAMN/src/mails/mime.cpp @@ -6,45 +6,45 @@  #include "../stdafx.h" -//-------------------------------------------------------------------------------------------------- + //-------------------------------------------------------------------------------------------------- -//Copies one string to another -// srcstart- source string -// srcend- address to the end of source string -// dest- pointer that stores new allocated string that contains copy of source string -// mode- MIME_PLAIN or MIME_MAIL (MIME_MAIL deletes '"' characters (or '<' and '>') if they are at start and end of source string -void CopyToHeader(char *srcstart,char *srcend,char **dest,int mode); + //Copies one string to another + // srcstart- source string + // srcend- address to the end of source string + // dest- pointer that stores new allocated string that contains copy of source string + // mode- MIME_PLAIN or MIME_MAIL (MIME_MAIL deletes '"' characters (or '<' and '>') if they are at start and end of source string +void CopyToHeader(char *srcstart, char *srcend, char **dest, int mode);  //Extracts email address (finds nick name and mail and then stores them to strings)  // finder- source string  // storeto- pointer that receives address of mail string  // storetonick- pointer that receives address of nickname -void ExtractAddressFromLine(char *finder,char **storeto,char **storetonick); +void ExtractAddressFromLine(char *finder, char **storeto, char **storetonick);  //Extracts simple text from string  // finder- source string  // storeto- pointer that receives address of string -void ExtractStringFromLine(char *finder,char **storeto); +void ExtractStringFromLine(char *finder, char **storeto);  //Extracts some item from content-type string  //Example: ContentType string: "TEXT/PLAIN; charset=US-ASCII", item:"charset=", returns: "US-ASCII"  // ContetType- content-type string  // value- string item  // returns extracted string (or NULL when not found) -char *ExtractFromContentType(char *ContentType,char *value); +char *ExtractFromContentType(char *ContentType, char *value);  //Extracts info from header text into header members  //Note that this function as well as struct CShortHeadwer can be always changed, because there are many items to extract  //(e.g. the X-Priority and Importance and so on)  // items- translated header (see TranslateHeaderFcn)  // head- header to be filled with values extracted from items -void ExtractShortHeader(struct CMimeItem *items,struct CShortHeader *head); +void ExtractShortHeader(struct CMimeItem *items, struct CShortHeader *head);  //Extracts header to mail using ExtractShortHeader fcn.  // items- translated header (see TranslateHeaderFcn)  // CP- codepage used when no default found  // head- header to be filled with values extracted from items, in unicode (wide char) -void ExtractHeader(struct CMimeItem *items,int &CP,struct CHeader *head); +void ExtractHeader(struct CMimeItem *items, int &CP, struct CHeader *head);  //Deletes items in CShortHeader structure  // head- structure whose items are deleted @@ -52,11 +52,11 @@ void DeleteShortHeaderContent(struct CShortHeader *head);  //Deletes list of YAMN_MIMENAMES structures  // Names- pointer to first item of list -void DeleteNames(PYAMN_MIMENAMES Names); +void DeleteNames(CMimeNames *Names);  //Deletes list of YAMN_MIMESHORTNAMES structures  // Names- pointer to first item of list -void DeleteShortNames(PYAMN_MIMESHORTNAMES Names); +void DeleteShortNames(CShortNames *Names);  //Makes a string lowercase  // string- string to be lowercased @@ -65,360 +65,342 @@ void inline ToLower(char *string);  //--------------------------------------------------------------------------------------------------  //-------------------------------------------------------------------------------------------------- -void CopyToHeader(char *srcstart,char *srcend,char **dest,int mode) +void CopyToHeader(char *srcstart, char *srcend, char **dest, int mode)  {  	char *dst; -	if (dest==nullptr) +	if (dest == nullptr)  		return; -	if (srcstart>=srcend) +	if (srcstart >= srcend)  		return; -	if ((mode==MIME_MAIL) && (((*srcstart=='"') && (*(srcend-1)=='"')) || ((*srcstart=='<') && (*(srcend-1)=='>')))) -	{ +	if ((mode == MIME_MAIL) && (((*srcstart == '"') && (*(srcend - 1) == '"')) || ((*srcstart == '<') && (*(srcend - 1) == '>')))) {  		srcstart++;  		srcend--;  	} -	if (srcstart>=srcend) +	if (srcstart >= srcend)  		return;  	if (nullptr != *dest) -		delete[] *dest; -	if (nullptr==(*dest=new char[srcend-srcstart+1])) +		delete[] * dest; +	if (nullptr == (*dest = new char[srcend - srcstart + 1]))  		return; -	dst=*dest; +	dst = *dest; -	for (;srcstart<srcend;dst++,srcstart++) -	{ -		if (ENDLINE(srcstart)) -		{ -			while(ENDLINE(srcstart) || WS(srcstart)) srcstart++; -			*dst=' '; +	for (; srcstart < srcend; dst++, srcstart++) { +		if (ENDLINE(srcstart)) { +			while (ENDLINE(srcstart) || WS(srcstart)) srcstart++; +			*dst = ' ';  			srcstart--;		//because at the end of "for loop" we increment srcstart  		}  		else -			*dst=*srcstart; +			*dst = *srcstart;  	} -	*dst=0; +	*dst = 0;  } -void ExtractAddressFromLine(char *finder,char **storeto,char **storetonick) +void ExtractAddressFromLine(char *finder, char **storeto, char **storetonick)  { -	if (finder==nullptr) -	{ -		*storeto=*storetonick=nullptr; +	if (finder == nullptr) { +		*storeto = *storetonick = nullptr;  		return;  	} -	while(WS(finder)) finder++; -	if ((*finder) != '<') -	{ -		char *finderend=finder+1; -		do -		{ +	while (WS(finder)) finder++; +	if ((*finder) != '<') { +		char *finderend = finder + 1; +		do {  			if (ENDLINEWS(finderend))						//after endline information continues -				finderend+=2; -			while(!ENDLINE(finderend) && !EOS(finderend)) finderend++;		//seek to the end of line or to the end of string -		}while(ENDLINEWS(finderend)); +				finderend += 2; +			while (!ENDLINE(finderend) && !EOS(finderend)) finderend++;		//seek to the end of line or to the end of string +		} +		while (ENDLINEWS(finderend));  		finderend--; -		while(WS(finderend) || ENDLINE(finderend)) finderend--;				//find the end of text, no whitespace +		while (WS(finderend) || ENDLINE(finderend)) finderend--;				//find the end of text, no whitespace  		if (*finderend != '>')						//not '>' at the end of line -			CopyToHeader(finder,finderend+1,storeto,MIME_MAIL); +			CopyToHeader(finder, finderend + 1, storeto, MIME_MAIL);  		else								//at the end of line, there's '>'  		{ -			char *finder2=finderend; -			while((*finder2 != '<') && (finder2>finder)) finder2--;		//go to matching '<' or to the start -			CopyToHeader(finder2,finderend+1,storeto,MIME_MAIL); -			if (*finder2=='<')						//if we found '<', the rest copy as from nick +			char *finder2 = finderend; +			while ((*finder2 != '<') && (finder2 > finder)) finder2--;		//go to matching '<' or to the start +			CopyToHeader(finder2, finderend + 1, storeto, MIME_MAIL); +			if (*finder2 == '<')						//if we found '<', the rest copy as from nick  			{  				finder2--; -				while(WS(finder2) || ENDLINE(finder2)) finder2--;		//parse whitespace -				CopyToHeader(finder,finder2+1,storetonick,MIME_MAIL);		//and store nickname +				while (WS(finder2) || ENDLINE(finder2)) finder2--;		//parse whitespace +				CopyToHeader(finder, finder2 + 1, storetonick, MIME_MAIL);		//and store nickname  			}  		}  	} -	else -	{ -		char *finderend=finder+1; -		do -		{ +	else { +		char *finderend = finder + 1; +		do {  			if (ENDLINEWS(finderend))							//after endline information continues -				finderend+=2; -			while(!ENDLINE(finderend) && (*finderend != '>') && !EOS(finderend)) finderend++;		//seek to the matching < or to the end of line or to the end of string -		}while(ENDLINEWS(finderend)); -		CopyToHeader(finder,finderend+1,storeto,MIME_MAIL);				//go to first '>' or to the end and copy -		finder=finderend+1; -		while(WS(finder)) finder++;								//parse whitespace +				finderend += 2; +			while (!ENDLINE(finderend) && (*finderend != '>') && !EOS(finderend)) finderend++;		//seek to the matching < or to the end of line or to the end of string +		} +		while (ENDLINEWS(finderend)); +		CopyToHeader(finder, finderend + 1, storeto, MIME_MAIL);				//go to first '>' or to the end and copy +		finder = finderend + 1; +		while (WS(finder)) finder++;								//parse whitespace  		if (!ENDLINE(finder) && !EOS(finder))					//if there are chars yet, it's nick  		{ -			finderend=finder+1; -			while(!ENDLINE(finderend) && !EOS(finderend)) finderend++;	//seek to the end of line or to the end of string +			finderend = finder + 1; +			while (!ENDLINE(finderend) && !EOS(finderend)) finderend++;	//seek to the end of line or to the end of string  			finderend--; -			while(WS(finderend)) finderend--;				//find the end of line, no whitespace -			CopyToHeader(finder,finderend+1,storetonick,MIME_MAIL); +			while (WS(finderend)) finderend--;				//find the end of line, no whitespace +			CopyToHeader(finder, finderend + 1, storetonick, MIME_MAIL);  		}  	}  } -void ExtractStringFromLine(char *finder,char **storeto) +void ExtractStringFromLine(char *finder, char **storeto)  { -	if (finder==nullptr) -	{ -		*storeto=nullptr; +	if (finder == nullptr) { +		*storeto = nullptr;  		return;  	} -	while(WS(finder)) finder++; -	char *finderend=finder; +	while (WS(finder)) finder++; +	char *finderend = finder; -	do -	{ +	do {  		if (ENDLINEWS(finderend)) finderend++;						//after endline information continues -		while(!ENDLINE(finderend) && !EOS(finderend)) finderend++; -	}while(ENDLINEWS(finderend)); +		while (!ENDLINE(finderend) && !EOS(finderend)) finderend++; +	} +	while (ENDLINEWS(finderend));  	finderend--; -	while(WS(finderend)) finderend--;				//find the end of line, no whitespace -	CopyToHeader(finder,finderend+1,storeto,MIME_PLAIN); +	while (WS(finderend)) finderend--;				//find the end of line, no whitespace +	CopyToHeader(finder, finderend + 1, storeto, MIME_PLAIN);  } -char *ExtractFromContentType(char *ContentType,char *value) +char *ExtractFromContentType(char *ContentType, char *value)  {  	char *lowered = _strdup(ContentType);  	ToLower(lowered); -	char *finder=strstr(lowered,value); -	if (finder==nullptr) { -		free (lowered); +	char *finder = strstr(lowered, value); +	if (finder == nullptr) { +		free(lowered);  		return nullptr;  	} -	finder = finder-lowered+ContentType; -	free (lowered); +	finder = finder - lowered + ContentType; +	free(lowered); -	char *temp,*copier; +	char *temp, *copier;  	char *CopiedString; -	temp=finder-1; -	while((temp>ContentType) && WS(temp)) temp--;			//now we have to find, if the word "Charset=" is located after ';' like "; Charset=" +	temp = finder - 1; +	while ((temp > ContentType) && WS(temp)) temp--;			//now we have to find, if the word "Charset=" is located after ';' like "; Charset="  	if (*temp != ';' && !ENDLINE(temp) && temp != ContentType)  		return nullptr; -	finder=finder+mir_strlen(value);						//jump over value string +	finder = finder + mir_strlen(value);						//jump over value string -	while(WS(finder)) finder++;					//jump over whitespaces -	temp=finder; -	while(*temp != 0 && *temp != ';') temp++;				//jump to the end of setting (to the next ;) +	while (WS(finder)) finder++;					//jump over whitespaces +	temp = finder; +	while (*temp != 0 && *temp != ';') temp++;				//jump to the end of setting (to the next ;)  	temp--; -	while(WS(temp))	temp--;						//remove whitespaces from the end -	if (*finder=='\"') { //remove heading and tailing quotes +	while (WS(temp))	temp--;						//remove whitespaces from the end +	if (*finder == '\"') { //remove heading and tailing quotes  		finder++; -		if (*temp=='\"') temp--; +		if (*temp == '\"') temp--;  	} -	if (nullptr==(CopiedString=new char[++temp-finder+1])) +	if (nullptr == (CopiedString = new char[++temp - finder + 1]))  		return nullptr; -	for (copier=CopiedString;finder != temp;*copier++=*finder++);			//copy string -	*copier=0;						//and end it with zero character +	for (copier = CopiedString; finder != temp; *copier++ = *finder++);			//copy string +	*copier = 0;						//and end it with zero character  	return CopiedString;  } -void ExtractShortHeader(struct CMimeItem *items,struct CShortHeader *head) +void ExtractShortHeader(struct CMimeItem *items, struct CShortHeader *head)  { -	for (;items != nullptr;items=items->Next) -	{ +	for (; items != nullptr; items = items->Next) {  		//at the start of line  		//MessageBox(NULL,items->value,items->name,0); -		if (0==_strnicmp(items->name,"From",4)) -		{ -			if (items->value==nullptr) +		if (0 == _strnicmp(items->name, "From", 4)) { +			if (items->value == nullptr)  				continue; -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"<Extracting from>"); -			#endif -			ExtractAddressFromLine(items->value,&head->From,&head->FromNick); -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"</Extracting>\n"); -			#endif +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "<Extracting from>"); +		#endif +			ExtractAddressFromLine(items->value, &head->From, &head->FromNick); +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "</Extracting>\n"); +		#endif  		} -		else if (0==_strnicmp(items->name,"Return-Path",11)) -		{ -			if (items->value==nullptr) +		else if (0 == _strnicmp(items->name, "Return-Path", 11)) { +			if (items->value == nullptr)  				continue; -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"<Extracting return-path>"); -			#endif -			ExtractAddressFromLine(items->value,&head->ReturnPath,&head->ReturnPathNick); -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"</Extracting>\n"); -			#endif +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "<Extracting return-path>"); +		#endif +			ExtractAddressFromLine(items->value, &head->ReturnPath, &head->ReturnPathNick); +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "</Extracting>\n"); +		#endif  		} -		else if (0==_strnicmp(items->name,"Subject",7)) -		{ -			if (items->value==nullptr) +		else if (0 == _strnicmp(items->name, "Subject", 7)) { +			if (items->value == nullptr)  				continue; -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"<Extracting subject>"); -			#endif -			ExtractStringFromLine(items->value,&head->Subject); -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"</Extracting>\n"); -			#endif +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "<Extracting subject>"); +		#endif +			ExtractStringFromLine(items->value, &head->Subject); +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "</Extracting>\n"); +		#endif  		} -		else if (0==_strnicmp(items->name,"Body",4)) -		{ -			if (items->value==nullptr) +		else if (0 == _strnicmp(items->name, "Body", 4)) { +			if (items->value == nullptr)  				continue; -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"<Extracting body>"); -			#endif -			ExtractStringFromLine(items->value,&head->Body); -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"</Extracting>\n"); -			#endif +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "<Extracting body>"); +		#endif +			ExtractStringFromLine(items->value, &head->Body); +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "</Extracting>\n"); +		#endif  		} -		else if (0==_strnicmp(items->name,"Date",4)) -		{ -			if (items->value==nullptr) +		else if (0 == _strnicmp(items->name, "Date", 4)) { +			if (items->value == nullptr)  				continue; -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"<Extracting date>"); -			#endif -			ExtractStringFromLine(items->value,&head->Date); -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"</Extracting>\n"); -			#endif +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "<Extracting date>"); +		#endif +			ExtractStringFromLine(items->value, &head->Date); +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "</Extracting>\n"); +		#endif  		} -		else if (0==_strnicmp(items->name,"Content-Type",12)) -		{ -			if (items->value==nullptr) +		else if (0 == _strnicmp(items->name, "Content-Type", 12)) { +			if (items->value == nullptr)  				continue; -			char *ContentType=nullptr,*CharSetStr; -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"<Extracting Content-Type>"); -			#endif -			ExtractStringFromLine(items->value,&ContentType); -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"</Extracting>\n"); -			#endif +			char *ContentType = nullptr, *CharSetStr; +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "<Extracting Content-Type>"); +		#endif +			ExtractStringFromLine(items->value, &ContentType); +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "</Extracting>\n"); +		#endif  			ToLower(ContentType); -			if (nullptr != (CharSetStr=ExtractFromContentType(ContentType,"charset="))) -			{ -				head->CP=GetCharsetFromString(CharSetStr,mir_strlen(CharSetStr)); +			if (nullptr != (CharSetStr = ExtractFromContentType(ContentType, "charset="))) { +				head->CP = GetCharsetFromString(CharSetStr, mir_strlen(CharSetStr));  				delete[] CharSetStr;  			}  			delete[] ContentType;  		} -		else if (0==_strnicmp(items->name,"Importance",10)) -		{ -			if (items->value==nullptr) +		else if (0 == _strnicmp(items->name, "Importance", 10)) { +			if (items->value == nullptr)  				continue; -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"<Extracting importance>"); -			#endif -			if (head->Priority != -1) -			{ -				if (0==strncmp(items->value,"low",3)) -					head->Priority=5; -				else if (0==strncmp(items->value,"normal",6)) -					head->Priority=3; -				else if (0==strncmp(items->value,"high",4)) -					head->Priority=1; +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "<Extracting importance>"); +		#endif +			if (head->Priority != -1) { +				if (0 == strncmp(items->value, "low", 3)) +					head->Priority = 5; +				else if (0 == strncmp(items->value, "normal", 6)) +					head->Priority = 3; +				else if (0 == strncmp(items->value, "high", 4)) +					head->Priority = 1;  			} -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"</Extracting>\n"); -			#endif +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "</Extracting>\n"); +		#endif  		} -		else if (0==_strnicmp(items->name,"X-Priority",10)) -		{ -			if (items->value==nullptr) +		else if (0 == _strnicmp(items->name, "X-Priority", 10)) { +			if (items->value == nullptr)  				continue; -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"<X-Priority>"); -			#endif -			if ((*items->value>='1') && (*items->value<='5')) -				head->Priority=*items->value-'0'; -			#ifdef DEBUG_DECODE -			DebugLog(DecodeFile,"</Extracting>\n"); -			#endif +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "<X-Priority>"); +		#endif +			if ((*items->value >= '1') && (*items->value <= '5')) +				head->Priority = *items->value - '0'; +		#ifdef DEBUG_DECODE +			DebugLog(DecodeFile, "</Extracting>\n"); +		#endif  		}  	}  } -void ExtractHeader(struct CMimeItem *items,int &CP,struct CHeader *head) +void ExtractHeader(struct CMimeItem *items, int &CP, struct CHeader *head)  {  	struct CShortHeader ShortHeader;  	memset(&ShortHeader, 0, sizeof(struct CShortHeader)); -	ShortHeader.Priority=ShortHeader.CP=-1; -	#ifdef DEBUG_DECODE -	DebugLog(DecodeFile,"<Extracting header>\n"); -	#endif -	ExtractShortHeader(items,&ShortHeader); - -	head->Priority=ShortHeader.Priority==-1 ? 3 : ShortHeader.Priority; -	CP=ShortHeader.CP==-1 ? CP : ShortHeader.CP; -	#ifdef DEBUG_DECODE +	ShortHeader.Priority = ShortHeader.CP = -1; +#ifdef DEBUG_DECODE +	DebugLog(DecodeFile, "<Extracting header>\n"); +#endif +	ExtractShortHeader(items, &ShortHeader); + +	head->Priority = ShortHeader.Priority == -1 ? 3 : ShortHeader.Priority; +	CP = ShortHeader.CP == -1 ? CP : ShortHeader.CP; +#ifdef DEBUG_DECODE  	if (NULL != ShortHeader.From) -		DebugLog(DecodeFile,"<Decoded from>%s</Decoded)\n",ShortHeader.From); +		DebugLog(DecodeFile, "<Decoded from>%s</Decoded)\n", ShortHeader.From);  	if (NULL != ShortHeader.FromNick) -		DebugLog(DecodeFile,"<Decoded from-nick>%s</Decoded)\n",ShortHeader.FromNick); +		DebugLog(DecodeFile, "<Decoded from-nick>%s</Decoded)\n", ShortHeader.FromNick);  	if (NULL != ShortHeader.ReturnPath) -		DebugLog(DecodeFile,"<Decoded return-path>%s</Decoded)\n",ShortHeader.ReturnPath); +		DebugLog(DecodeFile, "<Decoded return-path>%s</Decoded)\n", ShortHeader.ReturnPath);  	if (NULL != ShortHeader.ReturnPathNick) -		DebugLog(DecodeFile,"<Decoded return-path nick>%s</Decoded)\n",ShortHeader.ReturnPathNick); +		DebugLog(DecodeFile, "<Decoded return-path nick>%s</Decoded)\n", ShortHeader.ReturnPathNick);  	if (NULL != ShortHeader.Subject) -		DebugLog(DecodeFile,"<Decoded subject>%s</Decoded)\n",ShortHeader.Subject); +		DebugLog(DecodeFile, "<Decoded subject>%s</Decoded)\n", ShortHeader.Subject);  	if (NULL != ShortHeader.Date) -		DebugLog(DecodeFile,"<Decoded date>%s</Decoded)\n",ShortHeader.Date); -	DebugLog(DecodeFile,"</Extracting header>\n"); -	DebugLog(DecodeFile,"<Convert>\n"); -	#endif +		DebugLog(DecodeFile, "<Decoded date>%s</Decoded)\n", ShortHeader.Date); +	DebugLog(DecodeFile, "</Extracting header>\n"); +	DebugLog(DecodeFile, "<Convert>\n"); +#endif -	ConvertCodedStringToUnicode(ShortHeader.From,&head->From,CP,MIME_PLAIN); +	ConvertCodedStringToUnicode(ShortHeader.From, &head->From, CP, MIME_PLAIN); -	#ifdef DEBUG_DECODE +#ifdef DEBUG_DECODE  	if (NULL != head->From) -		DebugLogW(DecodeFile,L"<Converted from>%s</Converted>\n",head->From); -	#endif -	ConvertCodedStringToUnicode(ShortHeader.FromNick,&head->FromNick,CP,MIME_MAIL); -	#ifdef DEBUG_DECODE +		DebugLogW(DecodeFile, L"<Converted from>%s</Converted>\n", head->From); +#endif +	ConvertCodedStringToUnicode(ShortHeader.FromNick, &head->FromNick, CP, MIME_MAIL); +#ifdef DEBUG_DECODE  	if (NULL != head->FromNick) -		DebugLogW(DecodeFile,L"<Converted from-nick>%s</Converted>\n",head->FromNick); -	#endif -	ConvertCodedStringToUnicode(ShortHeader.ReturnPath,&head->ReturnPath,CP,MIME_PLAIN); -	#ifdef DEBUG_DECODE +		DebugLogW(DecodeFile, L"<Converted from-nick>%s</Converted>\n", head->FromNick); +#endif +	ConvertCodedStringToUnicode(ShortHeader.ReturnPath, &head->ReturnPath, CP, MIME_PLAIN); +#ifdef DEBUG_DECODE  	if (NULL != head->ReturnPath) -		DebugLogW(DecodeFile,L"<Converted return-path>%s</Converted>\n",head->ReturnPath); -	#endif -	ConvertCodedStringToUnicode(ShortHeader.ReturnPathNick,&head->ReturnPathNick,CP,MIME_MAIL); -	#ifdef DEBUG_DECODE +		DebugLogW(DecodeFile, L"<Converted return-path>%s</Converted>\n", head->ReturnPath); +#endif +	ConvertCodedStringToUnicode(ShortHeader.ReturnPathNick, &head->ReturnPathNick, CP, MIME_MAIL); +#ifdef DEBUG_DECODE  	if (NULL != head->ReturnPathNick) -		DebugLogW(DecodeFile,L"<Converted return-path nick>%s</Converted>\n",head->ReturnPathNick); -	#endif -	ConvertCodedStringToUnicode(ShortHeader.Subject,&head->Subject,CP,MIME_PLAIN); -	#ifdef DEBUG_DECODE +		DebugLogW(DecodeFile, L"<Converted return-path nick>%s</Converted>\n", head->ReturnPathNick); +#endif +	ConvertCodedStringToUnicode(ShortHeader.Subject, &head->Subject, CP, MIME_PLAIN); +#ifdef DEBUG_DECODE  	if (NULL != head->Subject) -		DebugLogW(DecodeFile,L"<Converted subject>%s</Converted>\n",head->Subject); -	#endif -	ConvertCodedStringToUnicode(ShortHeader.Date,&head->Date,CP,MIME_PLAIN); -	#ifdef DEBUG_DECODE +		DebugLogW(DecodeFile, L"<Converted subject>%s</Converted>\n", head->Subject); +#endif +	ConvertCodedStringToUnicode(ShortHeader.Date, &head->Date, CP, MIME_PLAIN); +#ifdef DEBUG_DECODE  	if (NULL != head->Date) -		DebugLogW(DecodeFile,L"<Converted date>%s</Converted>\n",head->Date); -	#endif +		DebugLogW(DecodeFile, L"<Converted date>%s</Converted>\n", head->Date); +#endif -	ConvertCodedStringToUnicode(ShortHeader.Body,&head->Body,CP,MIME_PLAIN); -	#ifdef DEBUG_DECODE +	ConvertCodedStringToUnicode(ShortHeader.Body, &head->Body, CP, MIME_PLAIN); +#ifdef DEBUG_DECODE  	if (NULL != head->Body) -		DebugLogW(DecodeFile,L"<Converted Body>%s</Converted>\n",head->Body); -	#endif +		DebugLogW(DecodeFile, L"<Converted Body>%s</Converted>\n", head->Body); +#endif -	#ifdef DEBUG_DECODE -	DebugLog(DecodeFile,"</Convert>\n"); -	#endif +#ifdef DEBUG_DECODE +	DebugLog(DecodeFile, "</Convert>\n"); +#endif  	DeleteShortHeaderContent(&ShortHeader); -//	head->From=L"Frommmm"; -//	head->Subject=L"Subject"; +	//	head->From=L"Frommmm"; +	//	head->Subject=L"Subject";  	return;  } @@ -450,32 +432,32 @@ void DeleteHeaderContent(struct CHeader *head)  	if (head->Bcc != nullptr) DeleteNames(head->Bcc);  } -void DeleteNames(PYAMN_MIMENAMES Names) +void DeleteNames(CMimeNames *Names)  { -	PYAMN_MIMENAMES Parser=Names,Old; -	for (;Parser != nullptr;Parser=Parser->Next) -	{ +	CMimeNames *Parser = Names; +	for (; Parser != nullptr; Parser = Parser->Next) {  		if (Parser->Value != nullptr)  			delete[] Parser->Value;  		if (Parser->ValueNick != nullptr)  			delete[] Parser->ValueNick; -		Old=Parser; -		Parser=Parser->Next; +		 +		CMimeNames *Old = Parser; +		Parser = Parser->Next;  		delete Old;  	}  } -void DeleteShortNames(PYAMN_MIMESHORTNAMES Names) +void DeleteShortNames(CShortNames *Names)  { -	PYAMN_MIMESHORTNAMES Parser=Names,Old; -	for (;Parser != nullptr;Parser=Parser->Next) -	{ +	CShortNames *Parser = Names; +	for (; Parser != nullptr; Parser = Parser->Next) {  		if (Parser->Value != nullptr)  			delete[] Parser->Value;  		if (Parser->ValueNick != nullptr)  			delete[] Parser->ValueNick; -		Old=Parser; -		Parser=Parser->Next; +		 +		CShortNames *Old = Parser; +		Parser = Parser->Next;  		delete Old;  	}  } @@ -483,8 +465,8 @@ void DeleteShortNames(PYAMN_MIMESHORTNAMES Names)  void inline ToLower(char *string)  { -	for (;*string != 0;string++) -		if (*string>='A' && *string<='Z') *string=*string-'A'+'a'; +	for (; *string != 0; string++) +		if (*string >= 'A' && *string <= 'Z') *string = *string - 'A' + 'a';  }  #define TE_UNKNOWN @@ -506,47 +488,46 @@ struct APartDataType  void ParseAPart(APartDataType *data)  {  	size_t len = mir_strlen(data->Src); -	try -	{ -		char *finder=data->Src; -		char *prev1,*prev2,*prev3; +	try { +		char *finder = data->Src; +		char *prev1, *prev2, *prev3; -		while(finder<=(data->Src+len)) -		{ -			while(ENDLINEWS(finder)) finder++; +		while (finder <= (data->Src + len)) { +			while (ENDLINEWS(finder)) finder++;  			//at the start of line -			if (finder>data->Src) { -				if (*(finder-2)=='\r' || *(finder-2)=='\n')  -					*(finder-2)=0; -				if (*(finder-1)=='\r' || *(finder-1)=='\n')  -					*(finder-1)=0; +			if (finder > data->Src) { +				if (*(finder - 2) == '\r' || *(finder - 2) == '\n') +					*(finder - 2) = 0; +				if (*(finder - 1) == '\r' || *(finder - 1) == '\n') +					*(finder - 1) = 0;  			} -			prev1=finder; +			prev1 = finder; -			while(*finder != ':' && !EOS(finder) && !ENDLINE(finder)) finder++; -			if (ENDLINE(finder)||EOS(finder)) { +			while (*finder != ':' && !EOS(finder) && !ENDLINE(finder)) finder++; +			if (ENDLINE(finder) || EOS(finder)) {  				// no ":" in the line? here the body begins;  				data->body = prev1;  				break;  			} -			prev2=finder++; +			prev2 = finder++; -			while(WS(finder) && !EOS(finder)) finder++; +			while (WS(finder) && !EOS(finder)) finder++;  			if (!EOS(finder)) -				prev3=finder; +				prev3 = finder;  			else  				break; -			do -			{ -				if (ENDLINEWS(finder)) finder+=2;						//after endline information continues -				while(!ENDLINE(finder) && !EOS(finder)) finder++; -			}while(ENDLINEWS(finder)); +			do { +				if (ENDLINEWS(finder)) finder += 2;						//after endline information continues +				while (!ENDLINE(finder) && !EOS(finder)) finder++; +			} +			while (ENDLINEWS(finder)); -			if (!_strnicmp(prev1,"Content-type",prev2-prev1)) { +			if (!_strnicmp(prev1, "Content-type", prev2 - prev1)) {  				data->ContType = prev3; -			} else if (!_strnicmp(prev1,"Content-Transfer-Encoding",prev2-prev1)) { +			} +			else if (!_strnicmp(prev1, "Content-Transfer-Encoding", prev2 - prev1)) {  				data->TransEnc = prev3;  			} @@ -557,19 +538,19 @@ void ParseAPart(APartDataType *data)  				finder++;  				if (ENDLINE(finder)) {  					// end of headers. message body begins -					if (finder>data->Src) { -						if (*(finder-2)=='\r' || *(finder-2)=='\n')  -							*(finder-2)=0; -						if (*(finder-1)=='\r' || *(finder-1)=='\n')  -							*(finder-1)=0; +					if (finder > data->Src) { +						if (*(finder - 2) == '\r' || *(finder - 2) == '\n') +							*(finder - 2) = 0; +						if (*(finder - 1) == '\r' || *(finder - 1) == '\n') +							*(finder - 1) = 0;  					}  					finder++;  					if (ENDLINE(finder))finder++;  					prev1 = finder; -					while (!EOS(finder+1))finder++; +					while (!EOS(finder + 1))finder++;  					if (ENDLINE(finder))finder--;  					prev2 = finder; -					if (prev2>prev1) { // yes, we have body +					if (prev2 > prev1) { // yes, we have body  						data->body = prev1;  					}  					break; // there is nothing else @@ -577,17 +558,16 @@ void ParseAPart(APartDataType *data)  			}  		}  	} -	catch(...) -	{ +	catch (...) {  		MessageBox(nullptr, TranslateT("Translate header error"), L"", 0);  	}  	if (data->body) data->bodyLen = (int)mir_strlen(data->body);  }  //from decode.cpp -int DecodeQuotedPrintable(char *Src,char *Dst,int DstLen, BOOL isQ); -int DecodeBase64(char *Src,char *Dst,int DstLen); -int ConvertStringToUnicode(char *stream,unsigned int cp,WCHAR **out); +int DecodeQuotedPrintable(char *Src, char *Dst, int DstLen, BOOL isQ); +int DecodeBase64(char *Src, char *Dst, int DstLen); +int ConvertStringToUnicode(char *stream, unsigned int cp, WCHAR **out);  WCHAR *ParseMultipartBody(char *src, char *bond)  { @@ -597,68 +577,69 @@ WCHAR *ParseMultipartBody(char *src, char *bond)  	int i;  	char *courbond = srcback;  	WCHAR *dest; -	for (;(courbond=strstr(courbond,bond));numparts++,courbond+=sizebond); +	for (; (courbond = strstr(courbond, bond)); numparts++, courbond += sizebond);  	APartDataType *partData = new APartDataType[numparts];  	memset(partData, 0, sizeof(APartDataType)*numparts);  	partData[0].Src = courbond = srcback; -	for (i=1;(courbond=strstr(courbond,bond));i++,courbond+=sizebond) { -		*(courbond-2) = 0; -		partData[i].Src = courbond+sizebond; +	for (i = 1; (courbond = strstr(courbond, bond)); i++, courbond += sizebond) { +		*(courbond - 2) = 0; +		partData[i].Src = courbond + sizebond;  		while (ENDLINE(partData[i].Src)) partData[i].Src++;  	} -	size_t resultSize=0; -	for (i=0;i<numparts;i++) { +	size_t resultSize = 0; +	for (i = 0; i < numparts; i++) {  		ParseAPart(&partData[i]);  		if (partData[i].body) {  			if (partData[i].TransEnc) { -				if (!_stricmp(partData[i].TransEnc,"base64")) partData[i].TransEncType=TE_BASE64; -				else if (!_stricmp(partData[i].TransEnc,"quoted-printable"))partData[i].TransEncType=TE_QUOTEDPRINTABLE; +				if (!_stricmp(partData[i].TransEnc, "base64")) partData[i].TransEncType = TE_BASE64; +				else if (!_stricmp(partData[i].TransEnc, "quoted-printable"))partData[i].TransEncType = TE_QUOTEDPRINTABLE;  			}  			if (partData[i].ContType) {  				char *CharSetStr; -				if (nullptr != (CharSetStr=ExtractFromContentType(partData[i].ContType,"charset="))) -				{ -					partData[i].CodePage=GetCharsetFromString(CharSetStr,mir_strlen(CharSetStr)); +				if (nullptr != (CharSetStr = ExtractFromContentType(partData[i].ContType, "charset="))) { +					partData[i].CodePage = GetCharsetFromString(CharSetStr, mir_strlen(CharSetStr));  					delete[] CharSetStr;  				}  			} -			if (partData[i].ContType && !_strnicmp(partData[i].ContType,"text",4)) { -				char *localBody=nullptr; +			if (partData[i].ContType && !_strnicmp(partData[i].ContType, "text", 4)) { +				char *localBody = nullptr;  				switch (partData[i].TransEncType) { -					case TE_BASE64: +				case TE_BASE64:  					{ -						int size =partData[i].bodyLen*3/4+5; -						localBody = new char[size+1]; -						DecodeBase64(partData[i].body,localBody,size);  +						int size = partData[i].bodyLen * 3 / 4 + 5; +						localBody = new char[size + 1]; +						DecodeBase64(partData[i].body, localBody, size);  					}break; -					case TE_QUOTEDPRINTABLE: +				case TE_QUOTEDPRINTABLE:  					{ -						int size = partData[i].bodyLen+2; -						localBody = new char[size+1]; -						DecodeQuotedPrintable(partData[i].body,localBody,size,FALSE);  +						int size = partData[i].bodyLen + 2; +						localBody = new char[size + 1]; +						DecodeQuotedPrintable(partData[i].body, localBody, size, FALSE);  					}break;  				} -				ConvertStringToUnicode(localBody?localBody:partData[i].body,partData[i].CodePage,&partData[i].wBody); +				ConvertStringToUnicode(localBody ? localBody : partData[i].body, partData[i].CodePage, &partData[i].wBody);  				if (localBody) delete[] localBody; -			} else if (partData[i].ContType && !_strnicmp(partData[i].ContType,"multipart/",10)) { +			} +			else if (partData[i].ContType && !_strnicmp(partData[i].ContType, "multipart/", 10)) {  				//Multipart in mulitipart recursive? should be SPAM. Ah well -				char *bondary=nullptr; -				if (nullptr != (bondary=ExtractFromContentType(partData[i].ContType,"boundary="))) -				{ -					partData[i].wBody = ParseMultipartBody(partData[i].body,bondary); +				char *bondary = nullptr; +				if (nullptr != (bondary = ExtractFromContentType(partData[i].ContType, "boundary="))) { +					partData[i].wBody = ParseMultipartBody(partData[i].body, bondary);  					delete[] bondary; -				} else goto FailBackRaw; //multipart with no boundary? badly formatted messages. -			} else { +				} +				else goto FailBackRaw; //multipart with no boundary? badly formatted messages. +			} +			else {  FailBackRaw: -				ConvertStringToUnicode(partData[i].body,partData[i].CodePage,&partData[i].wBody); +				ConvertStringToUnicode(partData[i].body, partData[i].CodePage, &partData[i].wBody);  			}  			resultSize += mir_wstrlen(partData[i].wBody);  		}// if (partData[i].body) -		resultSize += 100+4+3; //cr+nl+100+ 3*bullet +		resultSize += 100 + 4 + 3; //cr+nl+100+ 3*bullet  	} -	dest = new WCHAR[resultSize+1]; +	dest = new WCHAR[resultSize + 1];  	size_t destpos = 0; -	for (i=0;i<numparts;i++) { +	for (i = 0; i < numparts; i++) {  		if (i) { // part before first boudary should not have headers  			char infoline[1024]; size_t linesize = 0;  			mir_snprintf(infoline, "%s %d", Translate("Part"), i); @@ -668,18 +649,18 @@ FailBackRaw:  				linesize = mir_strlen(infoline);  			}  			if (partData[i].ContType) { -				char *CharSetStr=strchr(partData[i].ContType,';'); +				char *CharSetStr = strchr(partData[i].ContType, ';');  				if (CharSetStr) { -					CharSetStr[0]=0; +					CharSetStr[0] = 0;  					mir_snprintf(infoline + linesize, _countof(infoline) - linesize, "; %s", partData[i].ContType);  					linesize = mir_strlen(infoline); -					partData[i].ContType=CharSetStr+1; -					if (nullptr != (CharSetStr=ExtractFromContentType(partData[i].ContType,"charset="))) { +					partData[i].ContType = CharSetStr + 1; +					if (nullptr != (CharSetStr = ExtractFromContentType(partData[i].ContType, "charset="))) {  						mir_snprintf(infoline + linesize, _countof(infoline) - linesize, "; %s", CharSetStr);  						linesize = mir_strlen(infoline);  						delete[] CharSetStr;  					} -					if (nullptr != (CharSetStr=ExtractFromContentType(partData[i].ContType,"name="))) { +					if (nullptr != (CharSetStr = ExtractFromContentType(partData[i].ContType, "name="))) {  						mir_snprintf(infoline + linesize, _countof(infoline) - linesize, "; \"%s\"", CharSetStr);  						linesize = mir_strlen(infoline);  						delete[] CharSetStr; @@ -692,12 +673,12 @@ FailBackRaw:  			}  			mir_snprintf(infoline + linesize, _countof(infoline) - linesize, ".\r\n");  			{ -				WCHAR *temp=nullptr; -				dest[destpos] = dest[destpos+1] = dest[destpos+2] = 0x2022; // bullet; +				WCHAR *temp = nullptr; +				dest[destpos] = dest[destpos + 1] = dest[destpos + 2] = 0x2022; // bullet;  				destpos += 3; -				ConvertStringToUnicode(infoline,CP_ACP,&temp); +				ConvertStringToUnicode(infoline, CP_ACP, &temp);  				size_t wsize = mir_wstrlen(temp); -				mir_wstrcpy(&dest[destpos],temp); +				mir_wstrcpy(&dest[destpos], temp);  				destpos += wsize;  				delete[] temp;  			} @@ -705,13 +686,13 @@ FailBackRaw:  		if (partData[i].wBody) {  			size_t wsize = mir_wstrlen(partData[i].wBody); -			mir_wstrcpy(&dest[destpos],partData[i].wBody); +			mir_wstrcpy(&dest[destpos], partData[i].wBody);  			destpos += wsize;  			delete[] partData[i].wBody;  		}  	} -	free (srcback); +	free(srcback);  	delete[] partData;  	dest[resultSize] = 0;//just in case  	return dest; diff --git a/protocols/YAMN/src/main.cpp b/protocols/YAMN/src/main.cpp index 75a7ea1896..9bdbf83504 100644 --- a/protocols/YAMN/src/main.cpp +++ b/protocols/YAMN/src/main.cpp @@ -250,12 +250,11 @@ int CMPlugin::Load()  	// Enumerate all the code pages available for the System Locale  	EnumSystemCodePages(EnumSystemCodePagesProc, CP_INSTALLED);  	CodePageNamesSupp = new _tcptable[CPLENSUPP]; -	for (int i = 0, k = 0; i < CPLENALL; i++) { +	for (int i = 0, k = 0; i < CPLENALL; i++)  		if (CodePageNamesAll[i].isValid) {  			CodePageNamesSupp[k] = CodePageNamesAll[i];  			k++;  		} -	}  	if (nullptr == (NoWriterEV = CreateEvent(nullptr, TRUE, TRUE, nullptr)))  		return 1; diff --git a/protocols/YAMN/src/proto/pop3/pop3comm.cpp b/protocols/YAMN/src/proto/pop3/pop3comm.cpp index dad9ee1e28..4d85a94f0c 100644 --- a/protocols/YAMN/src/proto/pop3/pop3comm.cpp +++ b/protocols/YAMN/src/proto/pop3/pop3comm.cpp @@ -20,13 +20,13 @@ HANDLE hNetLib = nullptr;  PSCOUNTER CPOP3Account::AccountWriterSO = nullptr;  //Creates new CPOP3Account structure -HACCOUNT WINAPI CreatePOP3Account(HYAMNPROTOPLUGIN Plugin, DWORD CAccountVersion); +CAccount *WINAPI CreatePOP3Account(HYAMNPROTOPLUGIN Plugin, DWORD CAccountVersion);  //Deletes CPOP3Account structure -void WINAPI DeletePOP3Account(HACCOUNT Which); +void WINAPI DeletePOP3Account(CAccount *Which);  //Sets stop flag to account -void WINAPI StopPOP3Account(HACCOUNT Which); +void WINAPI StopPOP3Account(CAccount *Which);  //Function registers standard functions for YAMN  int RegisterPOP3Plugin(WPARAM, LPARAM); @@ -38,13 +38,13 @@ DWORD WINAPI UnLoadPOP3(void *);  DWORD WINAPI WritePOP3Accounts();  //Function stores plugin's data for account to file -DWORD WINAPI WritePOP3Options(HANDLE, HACCOUNT); +DWORD WINAPI WritePOP3Options(HANDLE, CAccount *);  //Function reads plugin's data for account from file -DWORD WINAPI ReadPOP3Options(HACCOUNT, char **, char *); +DWORD WINAPI ReadPOP3Options(CAccount *, char **, char *);  //Creates new mail for an account -HYAMNMAIL WINAPI CreatePOP3Mail(HACCOUNT Account, DWORD CMimeMailVersion); +HYAMNMAIL WINAPI CreatePOP3Mail(CAccount *Account, DWORD CMimeMailVersion);  //Function does all needed work when connection failed or any error occured  //Creates structure containing error code, closes internet session, runs "bad connect" function @@ -145,7 +145,7 @@ CPOP3Account::CPOP3Account()  	InternetQueries = new SCOUNTER;  	AbilityFlags = YAMN_ACC_BROWSE | YAMN_ACC_POPUP; -	SetAccountStatus((HACCOUNT)this, TranslateT("Disconnected")); +	SetAccountStatus((CAccount *)this, TranslateT("Disconnected"));  }  CPOP3Account::~CPOP3Account() @@ -155,7 +155,7 @@ CPOP3Account::~CPOP3Account()  		delete InternetQueries;  } -HACCOUNT WINAPI CreatePOP3Account(HYAMNPROTOPLUGIN, DWORD) +CAccount *WINAPI CreatePOP3Account(HYAMNPROTOPLUGIN, DWORD)  {  	//First, we should check whether CAccountVersion matches.  	//But this is internal plugin, so YAMN's CAccount structure and our CAccount structure are @@ -164,15 +164,15 @@ HACCOUNT WINAPI CreatePOP3Account(HYAMNPROTOPLUGIN, DWORD)  	//	if (CAccountVersion != YAMN_ACCOUNTVERSION) return NULL;  	//Now it is needed to construct our POP3 account and return its handle -	return (HACCOUNT)new struct CPOP3Account(); +	return (CAccount *)new struct CPOP3Account();  } -void WINAPI DeletePOP3Account(HACCOUNT Which) +void WINAPI DeletePOP3Account(CAccount *Which)  {  	delete (HPOP3ACCOUNT)Which;  } -void WINAPI StopPOP3Account(HACCOUNT Which) +void WINAPI StopPOP3Account(CAccount *Which)  {  	((HPOP3ACCOUNT)Which)->Client.Stopped = TRUE;  	if (((HPOP3ACCOUNT)Which)->Client.NetClient != nullptr)			//we should inform also network client. Usefull only when network client implements this feature @@ -244,7 +244,7 @@ int RegisterPOP3Plugin(WPARAM, LPARAM)  	//Then, we read all mails for accounts.  	//You must first register account, before using this function as YAMN must use CreatePOP3Account function to add new accounts -	//But if CreatePOP3Account is not implemented (equals to NULL), YAMN creates account as YAMN's standard HACCOUNT +	//But if CreatePOP3Account is not implemented (equals to NULL), YAMN creates account as YAMN's standard CAccount *  	if (FileName) CallService(MS_YAMN_DELETEFILENAME, (WPARAM)FileName, 0);	//shoud not happen (only for secure)  	FileName = (wchar_t *)CallService(MS_YAMN_GETFILENAME, (WPARAM)L"pop3", 0); @@ -277,7 +277,7 @@ int RegisterPOP3Plugin(WPARAM, LPARAM)  		break;  	} -	HACCOUNT Finder; +	CAccount *Finder;  	DBVARIANT dbv;  	for (Finder = POP3Plugin->FirstAccount; Finder != nullptr; Finder = Finder->Next) { @@ -348,7 +348,7 @@ DWORD WINAPI WritePOP3Accounts()  	return ReturnValue;  } -DWORD WINAPI WritePOP3Options(HANDLE File, HACCOUNT Which) +DWORD WINAPI WritePOP3Options(HANDLE File, CAccount *Which)  {  	DWORD WrittenBytes;  	DWORD Ver = POP3_FILEVERSION; @@ -359,7 +359,7 @@ DWORD WINAPI WritePOP3Options(HANDLE File, HACCOUNT Which)  	return 0;  } -DWORD WINAPI ReadPOP3Options(HACCOUNT Which, char **Parser, char *End) +DWORD WINAPI ReadPOP3Options(CAccount *Which, char **Parser, char *End)  {  	DWORD Ver;  #ifdef DEBUG_FILEREAD @@ -383,7 +383,7 @@ DWORD WINAPI ReadPOP3Options(HACCOUNT Which, char **Parser, char *End)  	return 0;  } -HYAMNMAIL WINAPI CreatePOP3Mail(HACCOUNT Account, DWORD) +HYAMNMAIL WINAPI CreatePOP3Mail(CAccount *Account, DWORD)  {  	HYAMNMAIL NewMail;  	//First, we should check whether MAILDATA matches. @@ -396,7 +396,7 @@ HYAMNMAIL WINAPI CreatePOP3Mail(HACCOUNT Account, DWORD)  	if (nullptr == (NewMail = new YAMNMAIL))  		return nullptr; -	if (nullptr == (NewMail->MailData = new MAILDATA)) +	if (nullptr == (NewMail->MailData = new CMailData()))  	{  		delete NewMail;  		return nullptr; @@ -405,7 +405,7 @@ HYAMNMAIL WINAPI CreatePOP3Mail(HACCOUNT Account, DWORD)  	return (HYAMNMAIL)NewMail;  } -static void SetContactStatus(HACCOUNT account, int status) +static void SetContactStatus(CAccount *account, int status)  {  	if ((account->hContact) && (account->NewMailN.Flags & YAMN_ACC_CONT))  		g_plugin.setWord(account->hContact, "Status", status); diff --git a/protocols/YAMN/src/services.cpp b/protocols/YAMN/src/services.cpp index e9ba7b0aaf..3ddae133c6 100644 --- a/protocols/YAMN/src/services.cpp +++ b/protocols/YAMN/src/services.cpp @@ -71,7 +71,7 @@ static INT_PTR ContactApplication(WPARAM wParam, LPARAM)  	if (g_plugin.getString(wParam, "Id", &dbv))  		return 0; -	HACCOUNT ActualAccount = (HACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal); +	CAccount *ActualAccount = (CAccount *)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal);  	if (ActualAccount != nullptr) {  		STARTUPINFOW si = { 0 };  		si.cb = sizeof(si); @@ -121,7 +121,7 @@ DWORD WINAPI SWMRGWaitToRead(PSWMRG pSWMRG, DWORD dwTimeout);  static INT_PTR AccountMailCheck(WPARAM wParam, LPARAM lParam)  {  	//This service will check/sincronize the account pointed by wParam -	HACCOUNT ActualAccount = (HACCOUNT)wParam; +	CAccount *ActualAccount = (CAccount *)wParam;  	// copy/paste make mistakes  	if (ActualAccount != nullptr) {  		//we use event to signal, that running thread has all needed stack parameters copied @@ -173,7 +173,7 @@ static INT_PTR ContactMailCheck(WPARAM hContact, LPARAM)  	if (g_plugin.getString(hContact, "Id", &dbv))  		return 0; -	HACCOUNT ActualAccount = (HACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal); +	CAccount *ActualAccount = (CAccount *)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal);  	if (ActualAccount != nullptr) {  		//we use event to signal, that running thread has all needed stack parameters copied  		HANDLE ThreadRunningEV; @@ -225,7 +225,7 @@ static INT_PTR ContactMailCheck(WPARAM hContact, LPARAM)  	if (g_plugin.getString(wParam, "Id", &dbv))  		return; -	HACCOUNT ActualAccount = (HACCOUNT)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal); +	CAccount *ActualAccount = (CAccount *)CallService(MS_YAMN_FINDACCOUNTBYNAME, (WPARAM)POP3Plugin, (LPARAM)dbv.pszVal);  	if (ActualAccount != nullptr) {  #ifdef DEBUG_SYNCHRO  		DebugLog(SynchroFile, "Service_ContactDoubleclicked:ActualAccountSO-read wait\n"); @@ -430,7 +430,7 @@ void CreateServiceFunctions(void)  //Function to put all enabled contact to the Online status  void RefreshContact(void)  { -	HACCOUNT Finder; +	CAccount *Finder;  	for (Finder = POP3Plugin->FirstAccount; Finder != nullptr; Finder = Finder->Next) {  		if (Finder->hContact != NULL) {  			if ((Finder->Flags & YAMN_ACC_ENA) && (Finder->NewMailN.Flags & YAMN_ACC_CONT)) diff --git a/protocols/YAMN/src/stdafx.h b/protocols/YAMN/src/stdafx.h index 246e9468fa..f0919e24b8 100644 --- a/protocols/YAMN/src/stdafx.h +++ b/protocols/YAMN/src/stdafx.h @@ -79,9 +79,9 @@ extern struct YAMNExportedFcns *pYAMNFcn;  // From account.cpp  INT_PTR CreatePluginAccountSvc(WPARAM wParam, LPARAM lParam);  INT_PTR DeletePluginAccountSvc(WPARAM wParam, LPARAM); -int InitAccount(HACCOUNT Which); -void DeInitAccount(HACCOUNT Which); -void StopSignalFcn(HACCOUNT Which); +int InitAccount(CAccount *Which); +void DeInitAccount(CAccount *Which); +void StopSignalFcn(CAccount *Which);  void CodeDecodeString(char *Dest, BOOL Encrypt);  DWORD FileToMemory(wchar_t *FileName, char **MemFile, char **End); @@ -89,15 +89,15 @@ DWORD FileToMemory(wchar_t *FileName, char **MemFile, char **End);  DWORD ReadStringFromMemory(char **Parser,char *End,char **StoreTo,char *DebugString);  #endif  DWORD ReadStringFromMemory(char **Parser, char *End, char **StoreTo); -DWORD ReadMessagesFromMemory(HACCOUNT Which, char **Parser, char *End); -DWORD ReadAccountFromMemory(HACCOUNT Which, char **Parser, wchar_t *End); +DWORD ReadMessagesFromMemory(CAccount *Which, char **Parser, char *End); +DWORD ReadAccountFromMemory(CAccount *Which, char **Parser, wchar_t *End);  INT_PTR AddAccountsFromFileSvc(WPARAM wParam, LPARAM lParam);  DWORD WriteStringToFile(HANDLE File, char *Source);  DWORD WriteStringToFileW(HANDLE File, WCHAR *Source); -DWORD WriteMessagesToFile(HANDLE File, HACCOUNT Which); +DWORD WriteMessagesToFile(HANDLE File, CAccount *Which);  DWORD WINAPI WritePOP3Accounts();  INT_PTR WriteAccountsToFileSvc(WPARAM wParam, LPARAM lParam);  INT_PTR FindAccountByNameSvc(WPARAM wParam, LPARAM lParam); @@ -109,8 +109,8 @@ int StopAccounts(HYAMNPROTOPLUGIN Plugin);  int WaitForAllAccounts(HYAMNPROTOPLUGIN Plugin, BOOL GetAccountBrowserAccess = FALSE);  int DeleteAccounts(HYAMNPROTOPLUGIN Plugin); -void WINAPI GetStatusFcn(HACCOUNT Which, wchar_t *Value); -void WINAPI SetStatusFcn(HACCOUNT Which, wchar_t *Value); +void WINAPI GetStatusFcn(CAccount *Which, wchar_t *Value); +void WINAPI SetStatusFcn(CAccount *Which, wchar_t *Value);  INT_PTR UnregisterProtoPlugins();  INT_PTR RegisterProtocolPluginSvc(WPARAM, LPARAM); @@ -182,7 +182,7 @@ HANDLE WINAPI g_GetIconHandle(int idx);  HICON  WINAPI g_LoadIconEx(int idx, bool big = false);  //From synchro.cpp -void  WINAPI DeleteMessagesToEndFcn(HACCOUNT Account, HYAMNMAIL From); +void  WINAPI DeleteMessagesToEndFcn(CAccount *Account, HYAMNMAIL From);  DWORD WINAPI WaitToWriteFcn(PSWMRG SObject, PSCOUNTER SCounter = nullptr);  void  WINAPI WriteDoneFcn(PSWMRG SObject, PSCOUNTER SCounter = nullptr);  DWORD WINAPI WaitToReadFcn(PSWMRG SObject); @@ -209,7 +209,7 @@ char *ExtractFromContentType(char *ContentType, char *value);  WCHAR *ParseMultipartBody(char *src, char *bond);  //From account.cpp -void WINAPI GetStatusFcn(HACCOUNT Which, wchar_t *Value); +void WINAPI GetStatusFcn(CAccount *Which, wchar_t *Value);  extern HYAMNPROTOPLUGIN POP3Plugin; diff --git a/protocols/YAMN/src/yamn.cpp b/protocols/YAMN/src/yamn.cpp index e45e22f06e..982c1abb5c 100644 --- a/protocols/YAMN/src/yamn.cpp +++ b/protocols/YAMN/src/yamn.cpp @@ -96,7 +96,7 @@ INT_PTR GetVariablesSvc(WPARAM wParam, LPARAM)  void CALLBACK TimerProc(HWND, UINT, UINT_PTR, DWORD)  { -	HACCOUNT ActualAccount; +	CAccount *ActualAccount;  	DWORD Status, tid;  //	we use event to signal, that running thread has all needed stack parameters copied @@ -252,7 +252,7 @@ ChangeIsCountingStatusLabel:  INT_PTR ForceCheckSvc(WPARAM, LPARAM)  { -	HACCOUNT ActualAccount; +	CAccount *ActualAccount;  	DWORD tid;  	//we use event to signal, that running thread has all needed stack parameters copied  | 
