LPSTR __cdecl pgp_decode(HANDLE context, LPCSTR szEncMsg) { pCNTX ptr = get_context_on_id(context); if (!ptr) return NULL; mir_free(ptr->tmp); LPSTR szNewMsg = NULL; LPSTR szOldMsg = pgp_decrypt(ptr, szEncMsg); if (szOldMsg) { if (!is_7bit_string(szOldMsg) && !is_utf8_string(szOldMsg)) { szNewMsg = mir_utf8encode(szOldMsg); } else szNewMsg = mir_strdup(szOldMsg); } return ptr->tmp = szNewMsg; }
LPSTR __cdecl pgp_decode(HANDLE context, LPCSTR szEncMsg) { pCNTX ptr = get_context_on_id(context); if(!ptr) return NULL; LPSTR szNewMsg = NULL; LPSTR szOldMsg = pgp_decrypt(ptr, szEncMsg); if(szOldMsg) { if( !is_7bit_string(szOldMsg) && !is_utf8_string(szOldMsg) ) { int slen = strlen(szOldMsg)+1; LPWSTR wszMsg = (LPWSTR) alloca(slen*sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, szOldMsg, -1, wszMsg, slen*sizeof(WCHAR)); szNewMsg = _strdup(utf8encode(wszMsg)); } else { szNewMsg = _strdup(szOldMsg); } } SAFE_FREE(ptr->tmp); ptr->tmp = szNewMsg; return szNewMsg; }