From b61ba851da0157ace3bdfc1ebbf87156b0b76413 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Wed, 6 Jun 2012 08:58:27 +0000 Subject: protocols plugins moved to protocols git-svn-id: http://svn.miranda-ng.org/main/trunk@327 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/YAMN/mails/decode.cpp | 558 ------------------------------------------ 1 file changed, 558 deletions(-) delete mode 100644 plugins/YAMN/mails/decode.cpp (limited to 'plugins/YAMN/mails/decode.cpp') diff --git a/plugins/YAMN/mails/decode.cpp b/plugins/YAMN/mails/decode.cpp deleted file mode 100644 index 867ed7ff25..0000000000 --- a/plugins/YAMN/mails/decode.cpp +++ /dev/null @@ -1,558 +0,0 @@ -/* - * This code implements decoding encoded MIME header in style - * =?iso-8859-2?Q? "User using email in central Europe characters such as =E9" ?= - * - * (c) majvan 2002-2004 - */ -#include "../yamn.h" -//-------------------------------------------------------------------------------------------------- -//-------------------------------------------------------------------------------------------------- - -struct _tcptable CodePageNamesAll[]= -{ - { "ANSI", "",TRUE,CP_ACP}, - { "WINDOWS-1", "250",0,1250}, - { "WINDOWS-1", "251",0,1251}, - { "WINDOWS-1", "252",0,1252}, - { "WINDOWS-1", "253",0,1253}, - { "WINDOWS-1", "254",0,1254}, - { "WINDOWS-1", "255",0,1255}, - { "WINDOWS-1", "256",0,1256}, - { "WINDOWS-1", "257",0,1257}, - { "WINDOWS-1", "258",0,1258}, - { "CP1", "250",0,1250}, - { "CP1", "251",0,1251}, - { "CP1", "252",0,1252}, - { "CP1", "253",0,1253}, - { "CP1", "254",0,1254}, - { "CP1", "255",0,1255}, - { "CP1", "256",0,1256}, - { "CP1", "257",0,1257}, - { "CP1", "258",0,1258}, - { "ANSI-1", "250",0,1250}, - { "ANSI-1", "251",0,1251}, - { "ANSI-1", "252",0,1252}, - { "ANSI-1", "253",0,1253}, - { "ANSI-1", "254",0,1254}, - { "ANSI-1", "255",0,1255}, - { "ANSI-1", "256",0,1256}, - { "ANSI-1", "257",0,1257}, - { "ANSI-1", "258",0,1258}, - { "KOI8", "-R",0,20866}, - { "KOI8", "",0,20866}, - { "KOI8", "-U",0,21866}, - { "KOI8", "-RU",0,21866}, - { "US-", "ASCII",0,20127}, - { "CP", "367",0,20127}, - { "ASCII", "",0,20127}, - { "ASCII", "7",0,20127}, - { "ISO-8859", "-1",0,28591}, - { "ISO-8859", "-2",0,28592}, - { "ISO-8859", "-3",0,28593}, - { "ISO-8859", "-4",0,28594}, - { "ISO-8859", "-5",0,28595}, - { "ISO-8859", "-6",0,28596}, - { "ISO-8859", "-7",0,28597}, - { "ISO-8859", "-8",0,28598}, - { "ISO-8859", "-9",0,28599}, - { "ISO-8859", "-15",0,28605}, - { "ISO_8859", "-1",0,28591}, - { "ISO_8859", "-2",0,28592}, - { "ISO_8859", "-3",0,28593}, - { "ISO_8859", "-4",0,28594}, - { "ISO_8859", "-5",0,28595}, - { "ISO_8859", "-6",0,28596}, - { "ISO_8859", "-7",0,28597}, - { "ISO_8859", "-8",0,28598}, - { "ISO_8859", "-9",0,28599}, - { "ISO_8859", "-15",0,28605}, - { "ISO-", "10646-USC2",0,1200}, - { "ISO-2022", "/2-JP",0,50220}, - { "ISO-2022", "-JP",0,50221}, - { "ISO-2022", "/JIS-JP",0,50222}, - { "ISO-2022", "-KR",0,50225}, - { "ISO-2022", "-CH(SP)",0,50227}, - { "ISO-2022", "-CH(TR)",0,50229}, - { "UTF-", "7",0,65000}, - { "UTF-", "8",0,65001}, - { "ARAB-", "TRANSPARENT",0,710}, - { "ASMO-", "TRANSPARENT",0,720}, - { "ASMO-", "449",0,709}, - { "ASMO-", "708",0,708}, - { "BIG5", "",0,950}, - { "EUC-", "CH(SP)",0,51936}, - { "EUC-", "CH(TR)",0,51950}, - { "EUC-", "JP",0,51932}, - { "EUC-", "KR",0,51949}, - { "GB-", "2312",0,20936}, - { "GB", "2312",0,20936}, - { "HZGB-", "2312",0,52936}, - { "IBM-", "037",0,37}, - { "IBM-", "290",0,290}, - { "IBM-", "437",0,437}, - { "IBM-", "500",0,500}, - { "IBM-", "775",0,775}, - { "IBM-", "850",0,850}, - { "IBM-", "852",0,852}, - { "IBM-", "855",0,855}, - { "IBM-", "857",0,857}, - { "IBM-", "860",0,860}, - { "IBM-", "861",0,861}, - { "IBM-", "862",0,862}, - { "IBM-", "863",0,863}, - { "IBM-", "864",0,864}, - { "IBM-", "865",0,865}, - { "IBM-", "866",0,866}, - { "IBM-", "869",0,869}, - { "IBM-", "870",0,870}, - { "IBM-", "875",0,875}, - { "IBM-", "1026",0,1026}, - { "IBM-", "273",0,20273}, - { "IBM-", "277",0,20277}, - { "IBM-", "278",0,20278}, - { "IBM-", "280",0,20280}, - { "IBM-", "284",0,20284}, - { "IBM-", "285",0,20285}, - { "IBM-", "290",0,20290}, - { "IBM-", "297",0,20297}, - { "IBM-", "420",0,20420}, - { "IBM-", "423",0,20423}, - { "IBM-", "871",0,20871}, - { "IBM-", "880",0,20880}, - { "IBM-", "905",0,20905}, - { "IBM-", "THAI",0,20838}, - { "ISCII-", "DEVANAGARI",0,57002}, - { "ISCII-", "BENGALI",0,57003}, - { "ISCII-", "TAMIL",0,57004}, - { "ISCII-", "TELUGU",0,57005}, - { "ISCII-", "ASSAMESE",0,57006}, - { "ISCII-", "ORIYA",0,57007}, - { "ISCII-", "KANNADA",0,57008}, - { "ISCII-", "MALAYALAM",0,57009}, - { "ISCII-", "GUJARATI",0,57010}, - { "ISCII-", "PUNJABI",0,57011}, - { "KOR-", "JOHAB",0,1361}, - { "KSC-", "5601",0,1361}, - { "MAC-", "ROMAN",0,10000}, - { "MAC-", "JP",0,10001}, - { "MAC-", "CH(SP)(BIG5)",0,10002}, - { "MAC-", "KR",0,10003}, - { "MAC-", "AR",0,10004}, - { "MAC-", "HW",0,10005}, - { "MAC-", "GR",0,10006}, - { "MAC-", "CY",0,10007}, - { "MAC-", "CH(SP)(GB2312)",0,10008}, - { "MAC-", "ROMANIA",0,10010}, - { "MAC-", "UA",0,10017}, - { "MAC-", "TH",0,10021}, - { "MAC-", "LAT2",0,10029}, - { "MAC-", "ICE",0,10079}, - { "MAC-", "TR",0,10081}, - { "MAC-", "CR",0,10082} -}; - -int CPLENALL = (sizeof(CodePageNamesAll)/sizeof(CodePageNamesAll[0])); -struct _tcptable *CodePageNamesSupp; -int CPLENSUPP = 1; - -//Gets codepage ID from string representing charset such as "iso-8859-1" -// input- the string -// size- max length of input string -int GetCharsetFromString(char *input,size_t size); - -//HexValue to DecValue ('a' to 10) -// HexValue- hexa value ('a') -// DecValue- poiner where to store dec value -// returns 0 if not success -int FromHexa(char HexValue,char *DecValue); - -//Decodes a char from Base64 -// Base64Value- input char in Base64 -// DecValue- pointer where to store the result -// returns 0 if not success -int FromBase64(char Base64Value,char *DecValue); - -//Decodes string in quoted printable -// Src- input string -// Dst- where to store output string -// DstLen- how max long should be output string -// isQ- if is "Q-encoding" modification. should be TRUE in headers -// always returns 1 -int DecodeQuotedPrintable(char *Src,char *Dst,int DstLen, BOOL isQ); - -//Decodes string in base64 -// Src- input string -// Dst- where to store output string -// DstLen- how max long should be output string -// returns 0 if string was not properly decoded -int DecodeBase64(char *Src,char *Dst,int DstLen); - -//Converts string to unicode from string with specified codepage -// stream- input string -// cp- codepage of input string -// out- pointer to new allocated memory that contains unicode string -int ConvertStringToUnicode(char *stream,unsigned int cp,WCHAR **out); - -//Converts string from MIME header to unicode -// stream- input string -// cp- codepage of input string -// storeto- pointer to memory that contains unicode string -// mode- MIME_PLAIN or MIME_MAIL (MIME_MAIL deletes '"' from start and end of string) -void ConvertCodedStringToUnicode(char *stream,WCHAR **storeto,DWORD cp,int mode); - -//-------------------------------------------------------------------------------------------------- -//-------------------------------------------------------------------------------------------------- - -int GetCharsetFromString(char *input,size_t size) -//"ISO-8859-1" to ID from table -{ - char *pin=input; - char *pout,*parser; - - if ((size<1) || (parser=pout=new char[size+1])==NULL) - return -1; - while((*pin!=0) && (pin-input< (INT_PTR)size)) - { - if ((*pin>='a') && (*pin<='z')) - *parser++=*(pin++)-('a'-'A'); // make it capital - //else if (*pin=='\"') // this is already done in ExtractFromContentType - // *pin++; //skip the quotes if any - else - *parser++=*pin++; - } - - *parser=(char)0; - -#ifdef DEBUG_DECODECODEPAGE - DebugLog(DecodeFile,"%s",pout); -#endif - for (int i=0;i='0' && HexValue<='9') - { - *DecValue=HexValue-'0'; - return 1; - } - if (HexValue>='A' && HexValue<='F') - { - *DecValue=HexValue-'A'+10; - return 1; - } - if (HexValue>='a' && HexValue<='f') - { - *DecValue=HexValue-'a'+10; - return 1; - } - return 0; -} - -int FromBase64(char Base64Value,char *DecValue) -{ - if (Base64Value>='A' && Base64Value<='Z') - { - *DecValue=Base64Value-'A'; - return 1; - } - if (Base64Value>='a' && Base64Value<='z') - { - *DecValue=Base64Value-'a'+26; - return 1; - } - if (Base64Value>='0' && Base64Value<='9') - { - *DecValue=Base64Value-'0'+52; - return 1; - } - if (Base64Value=='+') - { - *DecValue=Base64Value-'+'+62; - return 1; - } - if (Base64Value=='/') - { - *DecValue=Base64Value-'/'+63; - return 1; - } - if (Base64Value=='=') - { - *DecValue=0; - return 1; - } - return 0; -} - -int DecodeQuotedPrintable(char *Src,char *Dst,int DstLen, BOOL isQ) -{ -#ifdef DEBUG_DECODEQUOTED - char *DstTemp=Dst; - DebugLog(DecodeFile,"%s",Src); -#endif - for (int Counter=0;((char)*Src!=0) && DstLen && (Counter++%s",DstTemp); -#endif - return 1; -} - -int DecodeBase64(char *Src,char *Dst,int DstLen) -{ - int Result=0; - char Locator=0,MiniResult[4]; - char *End=Dst+DstLen; - - MiniResult[0]=MiniResult[1]=MiniResult[2]=MiniResult[3]=0; - -#ifdef DEBUG_DECODEBASE64 - char *DstTemp=Dst; - DebugLog(DecodeFile,"\n%s\n\n",Src); -#endif - while(*Src!=0 && DstLen && Dst!=End) - { - if ((*Src==0x0D)||(*Src==0x0A)) { - Src++; - continue; - } - if ((!(Result=FromBase64(*Src,MiniResult+Locator)) && (*Src==0)) || Locator++==3) //end_of_str || end_of_4_bytes - { - Locator=0; //next write to the first byte - *Dst++=(char)((MiniResult[0]<<2) | (MiniResult[1]>>4)); - if (Dst==End) goto end; //DstLen exceeded? - *Dst++=(char)((MiniResult[1]<<4) | (MiniResult[2]>>2)); - if (Dst==End) goto end; //someones don't like goto, but not me - *Dst++=(char)((MiniResult[2]<<6) | MiniResult[3]); - if (!Result && (*Src==0)) goto end; //end of string? - MiniResult[0]=MiniResult[1]=MiniResult[2]=MiniResult[3]=0; //zero 4byte buffer for next loop - } - if (!Result) return 0; //unrecognised character occured - Src++; - } -end: - *Dst=0; -#ifdef DEBUG_DECODEBASE64 - DebugLog(DecodeFile,"\n%s\n",DstTemp); -#endif - return 1; -} - - - -int ConvertStringToUnicode(char *stream,unsigned int cp,WCHAR **out) -{ - CPINFO CPInfo; - WCHAR *temp,*src=*out,*dest; - size_t outlen; - int streamlen,Index; - - //codepages, which require to have set 0 in dwFlags parameter when calling MultiByteToWideChar - DWORD CodePagesZeroFlags[]={50220,50221,50222,50225,50227,50229,52936,54936,57002,57003,57004,57005,57006,57007,57008,57009,57010,57011,65000,65001}; - - if ((cp!=CP_ACP) && (cp!=CP_OEMCP) && (cp!=CP_MACCP) && (cp!=CP_THREAD_ACP) && (cp!=CP_SYMBOL) && (cp!=CP_UTF7) && (cp!=CP_UTF8) && !GetCPInfo(cp,&CPInfo)) - cp=CP_ACP; -#ifdef DEBUG_DECODECODEPAGE - DebugLog(DecodeFile,"%d",cp); -#endif - - for (Index=0;Index tempstoreLength) break; - start++; - } - } - tempstore[outind] = 0; - *storeto = tempstore; -} -- cgit v1.2.3