4 // most of the methods are allocate buffer by new[], so use delete[] for free memoy.
\r
6 //////////////////////////////////
\r
7 // Native <-> Unicode Conversion
\r
8 //////////////////////////////////
\r
10 LPTSTR ConvSJIS2Unicode(const char *p);
\r
11 char *ConvUnicode2SJIS(LPCTSTR p);
\r
13 //////////////////////////////////
\r
14 // TCHAR/WCHAR version of strdup
\r
15 //////////////////////////////////
\r
16 // not use malloc but use new[].
\r
18 LPTSTR StringDup(LPCTSTR pStr);
\r
19 LPWSTR StringDupW(LPCWSTR pStr);
\r
20 char *StringDupA(const char *pStr);
\r
22 //////////////////////////////////
\r
24 //////////////////////////////////
\r
26 // count number of MBCS strings. return value are number of letters insted of bytes.
\r
27 DWORD CountMBStrings(const char *pStr, DWORD nBytes);
\r
29 // count number of UNICODE bytes. return value are number of bytes when pStr converts to MBCS.
\r
30 DWORD CountWCBytes(LPCTSTR pStr, DWORD nChar);
\r
33 //////////////////////////////////
\r
34 // LPTSTR <-> LPWSTR conversion
\r
35 //////////////////////////////////
\r
36 // On CE platform, same as StringDup.
\r
37 // On Windows platform, MBCS <-> WBCS conversion.
\r
39 LPWSTR ConvTCharToWChar(LPCTSTR p);
\r
40 LPTSTR ConvWCharToTChar(LPCWSTR p);
\r
42 //////////////////////////////////
\r
44 //////////////////////////////////
\r
46 char *ConvTCharToUTF8(LPCTSTR p);
\r
47 LPTSTR ConvUTF8ToTChar(const char *p);
\r
49 //////////////////////////////////
\r
51 //////////////////////////////////
\r
53 LPWSTR ConvUTF8ToUCS2(const char *pUTFData);
\r
54 char *ConvUCS2ToUTF8(LPCWSTR pStr);
\r
56 DWORD ConvUTF8PosToUCSPos(const char *pUTF, DWORD nUTFPos);
\r
57 DWORD ConvUCSPosToUTF8Pos(const char *pUTF, DWORD nUCSPos);
\r
59 char *EscapeXMLStr(LPCTSTR pStr);
\r
61 //////////////////////////////////
\r
63 //////////////////////////////////
\r
64 // pOut
\82Í
\8dÅ
\92á
\82Å
\82àpIn
\82Æ
\93¯
\82¶
\91å
\82«
\82³
\82ð
\8e\9d\82Â
\95K
\97v
\82ª
\82 \82é
\81B
\r
66 void ConvJIS2SJIS(const char *pIn, char *pOut);
\r
68 //////////////////////////////////
\r
70 //////////////////////////////////
\r
71 //
\97Ì
\88æ
\82Í
\93®
\93I
\82É
\8am
\95Û
\82³
\82ê
\82é
\82½
\82ß
\81A
\95s
\97v
\82É
\82È
\82Á
\82½
\8e\9e\93_
\82Å delete[]
\82·
\82é
\95K
\97v
\82ª
\82 \82é
\81B
\r
73 char *ConvSJIS2JIS(char *pStr);
\r
75 //////////////////////////////////
\r
76 //
\8a¿
\8e\9a\95¶
\8e\9a\97ñ
\82Ìstrncp
\r
77 //////////////////////////////////
\r
78 // nLen
\82ª
\8a¿
\8e\9a\82Ì2
\83o
\83C
\83g
\96Ú
\82ð
\90Ø
\82é
\8fê
\8d\87\81A1
\83o
\83C
\83g
\96Ú
\82à
\83R
\83s
\81[
\82µ
\82È
\82¢
\81B
\r
79 //
\82»
\82Ì
\82½
\82ß
\81ASJIS
\82Ì
\95¶
\8e\9a\97ñ
\82Æ
\82µ
\82Ä
\8fí
\82É
\97L
\8cø
\82È
\95¶
\8e\9a\97ñ
\82Æ
\82È
\82é
\81B
\r
81 void CopyKanjiString(LPTSTR pDst, LPCTSTR pSrc, DWORD nLen);
\r
84 //////////////////////////////////
\r
86 //////////////////////////////////
\r
90 char *Base64Encode(const LPBYTE pBinary, DWORD nSrcLen);
\r
91 LPBYTE Base64Decode(const char *pM64str, LPDWORD pDataSize);
\r
95 //////////////////////////////////
\r
97 //////////////////////////////////
\r
99 BOOL MimeDec(char *pDst, const char *pSrc);
\r
101 //////////////////////////////////////////////////
\r
103 //////////////////////////////////////////////////
\r
105 //
\8ae
\83G
\83\93\83R
\81[
\83h
\92P
\88Ê
\82Í75
\95¶
\8e\9a\82É
\90§
\8cÀ
\82³
\82ê
\82é
\82½
\82ß
\81A
\83G
\83\93\83R
\81[
\83h
\8cã
\82Ì
\95¶
\8e\9a\97ñ
\82Í
\95¡
\90\94\8ds
\82É
\93n
\82é
\89Â
\94\
\90«
\82ª
\82 \82é
\81B
\r
106 //
\82±
\82ê
\82ð
\8eó
\82¯
\82Ä
\81A
\83G
\83\93\83R
\81[
\83h
\8c\8b\89Ê
\82Í
\95¶
\8e\9a\97ñ
\82Ì
\83\8a\83X
\83g
\82Æ
\82µ
\82Ä
\8eÀ
\8c»
\82µ
\82Ä
\82¢
\82é
\81B
\r
107 //
\82»
\82Ì
\82½
\82ß
\81A
\97Ì
\88æ
\8aÇ
\97\9d\8fã
\81A
\83G
\83\93\83R
\81[
\83_
\82Í
\83N
\83\89\83X
\82Æ
\82µ
\82Ä
\8eÀ
\91\95\82·
\82é
\81B
\r
109 //
\8am
\95Û
\82µ
\82½
\97Ì
\88æ
\82ÍBase64Encoder
\82ª
\8aÇ
\97\9d\82·
\82é
\82½
\82ß
\81A
\8aJ
\95ú
\82Ì
\95K
\97v
\82Í
\82È
\82¢
\81B
\r
111 //
\83G
\83\93\83R
\81[
\83h
\82Í
\8d¡
\82Ì
\82Æ
\82±
\82ëISO-2022-JP(JIS)
\82Ì
\82Ý
\81B
\91¼
\82Ì
\83R
\81[
\83h
\83Z
\83b
\83g
\82É
\82Â
\82¢
\82Ä
\82Í
\82í
\82©
\82ç
\82È
\82¢
\82Ì
\82Å(^^;
\8dl
\97¶
\82µ
\82Ä
\82¢
\82È
\82¢
\81B
\r
112 // 2byte
\95¶
\8e\9a\82Å
\82 \82ê
\82Î
\81A
\91½
\8f
\82Ì
\8fC
\90³
\82Å
\89½
\82Æ
\82©
\82È
\82é
\82Æ
\82Í
\8ev
\82¤
\82Ì
\82¾
\82ª
\81c
\r
114 //
\82Ü
\82½
\81ABase64Encoder
\82É
\90H
\82í
\82¹
\82½
\95¶
\8e\9a\97ñ
\82ÍASCII
\82Å
\82 \82Á
\82Ä
\82à
\83G
\83\93\83R
\81[
\83h
\82·
\82é
\81B
\r
115 //
\83G
\83\93\83R
\81[
\83h
\82µ
\82½
\95¶
\8e\9a\97ñ
\82ª
\91S
\95\94ASCII
\82Å
\82 \82Á
\82Ä
\82à
\83R
\81[
\83h
\83Z
\83b
\83g
\82Í2022-JP
\82Æ
\82È
\82é
\81B(
\82¿
\82å
\82Á
\82Æ
\82¾
\82³
\82¢)
\r
117 //
\83G
\83\93\83R
\81[
\83h
\82·
\82é
\82½
\82ß
\82É
\82Í
\81ABase64Encoder::Encode()
\82ð
\8cÄ
\82Ô
\81B
\r
118 //
\83G
\83\93\83R
\81[
\83h
\82³
\82ê
\82½
\95¶
\8e\9a\97ñ
\82ð
\8eæ
\93¾
\82·
\82é
\8dÛ
\82É
\82Í
\81A Base64Encoder::Item *p;
\82ð
\90é
\8c¾
\82µ
\82Ä
\82¨
\82¢
\82Ä
\81A
\r
119 // p->Next()
\82Å
\83\8b\81[
\83v
\82³
\82¹
\82é
\81B
\8eÀ
\8dÛ
\82Ì
\8ds
\8fî
\95ñ
\82Íp->Value()
\82Å
\8eæ
\93¾
\82Å
\82«
\82é
\81B
\r
121 class Base64Encoder{
\r
127 friend class Base64Encoder;
\r
129 Item *Next() { return (pNext && *(pNext->pLine) == 0) ? NULL : pNext; }
\r
130 const char *Line() { return pLine;}
\r
139 // pStr
\82ð
\83G
\83\93\83R
\81[
\83h
\82µ
\82ÄpBuf
\82É
\8ai
\94[
\81B
\r
140 // pSize
\82Í
\8cÄ
\82Ñ
\8fo
\82µ
\8e\9e\82ÍpBuf
\82Ì
\83T
\83C
\83Y
\81B
\96ß
\82è
\8e\9e\82É
\82Í
\96¢
\8eg
\97p
\97Ì
\88æ
\82Ì
\88Ê
\92u
\r
141 BOOL EncodeBuf(char *pBuf, DWORD *pSize, char *pStr);
\r
143 DWORD GetToken(char *p, BOOL *pKanji, DWORD *pType);
\r
145 // pStr
\82ðpLine
\82Ö
\83G
\83\93\83R
\81[
\83h
\82·
\82é
\81B
\r
146 //
\93ü
\82è
\82«
\82ç
\82È
\82©
\82Á
\82½
\8fê
\8d\87\81A
\96ß
\82è
\92l
\82Æ
\82µ
\82Ä
\83G
\83\93\83R
\81[
\83h
\96¢
\97¹
\97Ì
\88æ
\82Ì
\90æ
\93ª
\82ð
\95Ô
\82·
\81B
\r
147 char *EncodeLine(char *pStr, char *pLine, BOOL *pKanji);
\r
151 Base64Encoder() : head(NULL), tail(NULL) {}
\r
154 BOOL Encode(char *str);
\r
156 Item *First() { return head; }
\r
160 //////////////////////////////////
\r
161 //
\95¶
\8e\9a\8eí
\94»
\95Ê
\97p
\83}
\83N
\83\8d\r
162 //////////////////////////////////
\r
164 #if defined(TOMBO_LANG_ENGLISH)
\r
165 #define iskanji(c) (0)
\r
166 #define iskanji2(c) (0)
\r
168 #define iskanji(c) (((unsigned char)c) >= 0x81 && ((unsigned char)c) <= 0x9F || ((unsigned char)c)>=0xE0 && ((unsigned char)c) <= 0xFC)
\r
169 #define iskanji2(c) (((unsigned char)c) >= 0x40 && ((unsigned char)c) <= 0xFC && ((unsigned char)c) != 0x7F)
\r
172 //////////////////////////////////
\r
173 // helper functions
\r
174 //////////////////////////////////
\r
177 // ex. aa\xx\ -> aa\xx
\r
178 void ChopFileSeparator(LPTSTR pBuf);
\r
180 void TrimRight(LPTSTR pBuf);
\r
182 // Eliminate letters "\\/:,;*?<>\"\t" from pSrc.
\r
183 // pDst has at least same size of pSrc
\r
184 void DropInvalidFileChar(LPTSTR pDst, LPCTSTR pSrc);
\r
186 LPCTSTR GetNextDirSeparator(LPCTSTR pStart);
\r
188 // chop file name and leave path.
\r
189 // ex. C:\foo\bar\baz.txt -> C:\foo\bar\
\r
190 void GetFilePath(LPTSTR pPath, LPCTSTR pFullPath);
\r
192 //////////////////////////////////
\r
195 // These function clear buffer to zero before release memory.
\r
197 void WipeOutAndDelete(LPTSTR pMemo);
\r
199 void WipeOutAndDelete(char *pMemo);
\r
202 //////////////////////////////////
\r
204 // before deleting, write contents to zero.
\r
206 BOOL WipeOutAndDeleteFile(LPCTSTR pFile);
\r