From: s_kawamoto Date: Sat, 5 Nov 2011 07:47:43 +0000 (+0900) Subject: Add support for UTF-8 without BOM under ASCII mode transfer. X-Git-Url: http://git.osdn.net/view?p=ffftp%2Fffftp.git;a=commitdiff_plain;h=refs%2Fheads%2F1.98c Add support for UTF-8 without BOM under ASCII mode transfer. Change size and layout of the window. --- diff --git a/FFFTP_Eng_Release/FFFTP.exe b/FFFTP_Eng_Release/FFFTP.exe index e6a7d9a..24437ec 100644 Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ diff --git a/Release/FFFTP.exe b/Release/FFFTP.exe index 3d9ac67..6a6dce3 100644 Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ diff --git a/Resource/FFFTP.rc b/Resource/FFFTP.rc index ff7a0e1..5c3e610 100644 --- a/Resource/FFFTP.rc +++ b/Resource/FFFTP.rc @@ -726,13 +726,14 @@ hset_code_dlg DIALOGEX 0, 0, 207, 139 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION FONT 9, "‚l‚r ‚oƒSƒVƒbƒN", 0, 0, 0x0 BEGIN - GROUPBOX "ƒzƒXƒg‚ÌŠ¿ŽšƒR[ƒh(&K)",-1,7,7,98,94,WS_GROUP + GROUPBOX "ƒzƒXƒg‚ÌŠ¿ŽšƒR[ƒh(&K)",-1,7,7,98,106,WS_GROUP CONTROL "–³•ÏŠ·",HSET_NO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,12,21,81,10 CONTROL "Shift_JIS",HSET_SJIS_CNV,"Button",BS_AUTORADIOBUTTON,12,33,81,10 CONTROL "JIS",HSET_JIS_CNV,"Button",BS_AUTORADIOBUTTON,12,45,41,10 CONTROL "EUC",HSET_EUC_CNV,"Button",BS_AUTORADIOBUTTON,12,57,41,10 CONTROL "UTF-8",HSET_UTF8N_CNV,"Button",BS_AUTORADIOBUTTON,12,69,41,10 - CONTROL "”¼ŠpƒJƒi‚ð‘SŠp‚É•ÏŠ·",HSET_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,86,87,10 + CONTROL "UTF-8 BOM",HSET_UTF8BOM_CNV,"Button",BS_AUTORADIOBUTTON,12,81,81,10 + CONTROL "”¼ŠpƒJƒi‚ð‘SŠp‚É•ÏŠ·",HSET_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,98,87,10 GROUPBOX "ƒtƒ@ƒCƒ‹–¼‚ÌŠ¿ŽšƒR[ƒh(&N)",-1,110,7,90,115,WS_GROUP CONTROL "Ž©“®",HSET_FN_AUTO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,114,21,65,10 CONTROL "Shift_JIS",HSET_FN_SJIS_CNV,"Button",BS_AUTORADIOBUTTON,114,33,65,10 @@ -2121,6 +2122,7 @@ BEGIN BUTTON ID_BUTTON40156 BUTTON ID_BUTTON40173 BUTTON ID_BUTTON40174 + BUTTON ID_BUTTON40175 END remote_toolbar_bmp TOOLBAR 16, 16 diff --git a/Resource/resource.h b/Resource/resource.h index c954fa9..73f48fe 100644 --- a/Resource/resource.h +++ b/Resource/resource.h @@ -429,6 +429,7 @@ #define HSET_PRIVATE_KEY 1203 #define HSET_THREAD_COUNT 1204 #define HSET_THREAD_COUNT_SPN 1205 +#define HSET_UTF8BOM_CNV 1206 #define MENU_END 40001 #define MENU_EXIT 40001 #define MENU_CONNECT 40003 @@ -484,21 +485,21 @@ #define MENU_KNJ_EUC 40044 #define MENU_KNJ_JIS 40045 #define MENU_KNJ_UTF8N 40046 -#define MENU_KNJ_NONE 40047 -#define MENU_L_KNJ_SJIS 40048 -#define MENU_L_KNJ_EUC 40049 -#define MENU_L_KNJ_JIS 40050 -#define MENU_L_KNJ_UTF8N 40051 -#define MENU_UPDIR 40052 -#define MENU_DCLICK 40053 -#define MENU_SELECT 40054 -#define MENU_SELECT_ALL 40055 -#define MENU_FIND 40056 -#define MENU_FINDNEXT 40057 -#define MENU_DOTFILE 40058 -#define MENU_IMPORT_WS 40059 -#define ID_BUTTON40060 40060 -#define ID_BUTTON40061 40061 +#define MENU_KNJ_UTF8BOM 40047 +#define MENU_KNJ_NONE 40048 +#define MENU_L_KNJ_SJIS 40049 +#define MENU_L_KNJ_EUC 40050 +#define MENU_L_KNJ_JIS 40051 +#define MENU_L_KNJ_UTF8N 40052 +#define MENU_L_KNJ_UTF8BOM 40053 +#define MENU_UPDIR 40054 +#define MENU_DCLICK 40055 +#define MENU_SELECT 40056 +#define MENU_SELECT_ALL 40057 +#define MENU_FIND 40058 +#define MENU_FINDNEXT 40059 +#define MENU_DOTFILE 40060 +#define MENU_IMPORT_WS 40061 #define ID_BUTTON40062 40062 #define ID_BUTTON40063 40063 #define ID_BUTTON40064 40064 @@ -605,6 +606,7 @@ #define MENU_CHANGEPASSWD 40172 #define ID_BUTTON40173 40173 #define ID_BUTTON40174 40174 +#define ID_BUTTON40175 40175 #define FSNOTIFY_TITLE 65535 #define HOST_SIZEGRIP 65535 @@ -613,8 +615,8 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 191 -#define _APS_NEXT_COMMAND_VALUE 40175 -#define _APS_NEXT_CONTROL_VALUE 1206 +#define _APS_NEXT_COMMAND_VALUE 40176 +#define _APS_NEXT_CONTROL_VALUE 1207 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/Resource/toolbar1.bmp b/Resource/toolbar1.bmp index 7ab3cde..a1df42c 100644 Binary files a/Resource/toolbar1.bmp and b/Resource/toolbar1.bmp differ diff --git a/Resource_eng/FFFTP-eng.rc b/Resource_eng/FFFTP-eng.rc index 78c52cb..a56ad4f 100644 --- a/Resource_eng/FFFTP-eng.rc +++ b/Resource_eng/FFFTP-eng.rc @@ -733,13 +733,14 @@ hset_code_dlg DIALOGEX 0, 0, 207, 139 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION FONT 9, "MS Sans Serif", 0, 0, 0x0 BEGIN - GROUPBOX "&Japanese Kanji Code",-1,7,7,98,94,WS_GROUP + GROUPBOX "&Japanese Kanji Code",-1,7,7,98,106,WS_GROUP CONTROL "No conversion",HSET_NO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,12,21,91,10 CONTROL "Shift_JIS",HSET_SJIS_CNV,"Button",BS_AUTORADIOBUTTON,12,33,81,10 CONTROL "JIS",HSET_JIS_CNV,"Button",BS_AUTORADIOBUTTON,12,45,41,10 CONTROL "EUC",HSET_EUC_CNV,"Button",BS_AUTORADIOBUTTON,12,57,41,10 CONTROL "UTF-8",HSET_UTF8N_CNV,"Button",BS_AUTORADIOBUTTON,12,69,41,10 - CONTROL "Hankaku to Zenkaku",HSET_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,96,90,10 + CONTROL "UTF-8 BOM",HSET_UTF8BOM_CNV,"Button",BS_AUTORADIOBUTTON,12,81,81,10 + CONTROL "Hankaku to Zenkaku",HSET_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,98,90,10 GROUPBOX "&Filename Kanji Code",-1,107,7,97,116,WS_GROUP CONTROL "Automatic",HSET_FN_AUTO_CNV,"Button",BS_AUTORADIOBUTTON | WS_GROUP,111,21,65,10 CONTROL "Shift_JIS",HSET_FN_SJIS_CNV,"Button",BS_AUTORADIOBUTTON,111,33,65,10 @@ -1371,7 +1372,8 @@ hset_crypt_dlg DIALOG 0, 0, 207, 139 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION FONT 9, "MS Sans Serif" BEGIN - CONTROL "Allow to connect without encryption",HSET_NO_ENCRYPTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,148,10 + CONTROL "Allow to connect without encryption",HSET_NO_ENCRYPTION, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,148,10 CONTROL "Connect with FTPS (Explicit)",HSET_FTPES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,21,148,10 CONTROL "Connect with FTPS (Implicit)",HSET_FTPIS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,35,148,10 CONTROL "Connect with SFTP",HSET_SFTP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,49,148,10 @@ -2143,6 +2145,7 @@ BEGIN BUTTON ID_BUTTON40156 BUTTON ID_BUTTON40173 BUTTON ID_BUTTON40174 + BUTTON ID_BUTTON40175 END remote_toolbar_bmp TOOLBAR 16, 16 diff --git a/Resource_eng/resource.h b/Resource_eng/resource.h index 6fe26a3..9bcbdd2 100644 --- a/Resource_eng/resource.h +++ b/Resource_eng/resource.h @@ -429,6 +429,7 @@ #define HSET_PRIVATE_KEY 1203 #define HSET_THREAD_COUNT 1204 #define HSET_THREAD_COUNT_SPN 1205 +#define HSET_UTF8BOM_CNV 1206 #define MENU_END 40001 #define MENU_EXIT 40001 #define MENU_CONNECT 40003 @@ -484,21 +485,21 @@ #define MENU_KNJ_EUC 40044 #define MENU_KNJ_JIS 40045 #define MENU_KNJ_UTF8N 40046 -#define MENU_KNJ_NONE 40047 -#define MENU_L_KNJ_SJIS 40048 -#define MENU_L_KNJ_EUC 40049 -#define MENU_L_KNJ_JIS 40050 -#define MENU_L_KNJ_UTF8N 40051 -#define MENU_UPDIR 40052 -#define MENU_DCLICK 40053 -#define MENU_SELECT 40054 -#define MENU_SELECT_ALL 40055 -#define MENU_FIND 40056 -#define MENU_FINDNEXT 40057 -#define MENU_DOTFILE 40058 -#define MENU_IMPORT_WS 40059 -#define ID_BUTTON40060 40060 -#define ID_BUTTON40061 40061 +#define MENU_KNJ_UTF8BOM 40047 +#define MENU_KNJ_NONE 40048 +#define MENU_L_KNJ_SJIS 40049 +#define MENU_L_KNJ_EUC 40050 +#define MENU_L_KNJ_JIS 40051 +#define MENU_L_KNJ_UTF8N 40052 +#define MENU_L_KNJ_UTF8BOM 40053 +#define MENU_UPDIR 40054 +#define MENU_DCLICK 40055 +#define MENU_SELECT 40056 +#define MENU_SELECT_ALL 40057 +#define MENU_FIND 40058 +#define MENU_FINDNEXT 40059 +#define MENU_DOTFILE 40060 +#define MENU_IMPORT_WS 40061 #define ID_BUTTON40062 40062 #define ID_BUTTON40063 40063 #define ID_BUTTON40064 40064 @@ -605,6 +606,7 @@ #define MENU_CHANGEPASSWD 40172 #define ID_BUTTON40173 40173 #define ID_BUTTON40174 40174 +#define ID_BUTTON40175 40175 #define FSNOTIFY_TITLE 65535 #define HOST_SIZEGRIP 65535 @@ -613,8 +615,8 @@ #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 191 -#define _APS_NEXT_COMMAND_VALUE 40175 -#define _APS_NEXT_CONTROL_VALUE 1206 +#define _APS_NEXT_COMMAND_VALUE 40176 +#define _APS_NEXT_CONTROL_VALUE 1207 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/Resource_eng/toolbar1.bmp b/Resource_eng/toolbar1.bmp index 7ab3cde..a1df42c 100644 Binary files a/Resource_eng/toolbar1.bmp and b/Resource_eng/toolbar1.bmp differ diff --git a/common.h b/common.h index f890e74..e736d1a 100644 --- a/common.h +++ b/common.h @@ -687,9 +687,12 @@ LIST_UNIX_70 #define KANJI_SMB_HEX 3 /* Samba-HEX */ #define KANJI_SMB_CAP 4 /* Samba-CAP */ #define KANJI_UTF8N 5 /* UTF-8 */ +// UTF-8対応 +#define KANJI_UTF8BOM 6 /* UTF-8 BOM */ #define KANJI_NOCNV -1 /* 漢字コード変換なし */ +// UTF-8対応 #define KANJI_AUTO -1 /*===== サウンド =====*/ diff --git a/doc/eng/FFFTP.txt b/doc/eng/FFFTP.txt index fcb353e..6863775 100644 --- a/doc/eng/FFFTP.txt +++ b/doc/eng/FFFTP.txt @@ -49,6 +49,11 @@ Changes in Ver.1.98c -- Fixed bugs of handling multi-byte character filenames on hosts whose Kanji code of filenames are Shift_JIS. +-- Added support for UTF-8 (without BOM) conversion under ASCII mode transfer. + UTF-8 added in 1.98 was renamed UTF-8 BOM. + +-- Changed size and layout of the window at the first run. + Outline ------- diff --git a/doc/eng/history.txt b/doc/eng/history.txt index 7fe4417..5c3a058 100644 --- a/doc/eng/history.txt +++ b/doc/eng/history.txt @@ -21,6 +21,11 @@ Changes in Ver.1.98c -- Fixed bugs of handling multi-byte character filenames on hosts whose Kanji code of filenames are Shift_JIS. +-- Added support for UTF-8 (without BOM) conversion under ASCII mode transfer. + UTF-8 added in 1.98 was renamed UTF-8 BOM. + +-- Changed size and layout of the window at the first run. + Changes in Ver.1.98b -------------------- diff --git a/doc/jpn/FFFTP.txt b/doc/jpn/FFFTP.txt index 204564f..4d9b516 100644 --- a/doc/jpn/FFFTP.txt +++ b/doc/jpn/FFFTP.txt @@ -52,6 +52,13 @@ Ver 1.98c EƒzƒXƒg‚̃tƒ@ƒCƒ‹–¼‚ÌŠ¿ŽšƒR[ƒh‚ªShift_JIS‚̏ꍇ‚Ɉꕔ“ú–{Œê‚ðŠÜ‚Þ @ƒtƒ@ƒCƒ‹–¼‚ðˆµ‚¦‚È‚¢ƒoƒO‚ðC³‚µ‚Ü‚µ‚½B +EƒAƒXƒL[ƒ‚[ƒh“]‘—‚̍ۂɍs‚í‚ê‚銿ŽšƒR[ƒh•ÏŠ·‚ŐV‚½‚ÉUTF-8 +@iBOM‚È‚µj‚Ö‚Ì•ÏŠ·‚ðƒTƒ|[ƒg‚µ‚Ü‚µ‚½B1.98‚ŒljÁ‚³‚ꂽUTF-8‚ð +@UTF-8 BOM‚Æ‚¢‚¤–¼Ì‚ɕύX‚µ‚Ü‚µ‚½B + +E‰‰ñ‹N“®Žž‚̃EƒBƒ“ƒhƒE‚̃TƒCƒY‚ƃŒƒCƒAƒEƒg‚ð•ÏX‚µ‚Ü‚µ‚½iˆÈ‘O‚Ì +@ƒo[ƒWƒ‡ƒ“‚̐ݒ肪Žc‚Á‚Ä‚¢‚éê‡‚Í‚»‚̐ݒ肪“K—p‚³‚ê‚Ü‚·jB + Ver 1.96dˆÈ‘O‚Ö–ß‚·ê‡ ----------------------- diff --git a/doc/jpn/history.txt b/doc/jpn/history.txt index 6952a81..9a7d968 100644 --- a/doc/jpn/history.txt +++ b/doc/jpn/history.txt @@ -24,6 +24,13 @@ FFFTP EƒzƒXƒg‚̃tƒ@ƒCƒ‹–¼‚ÌŠ¿ŽšƒR[ƒh‚ªShift_JIS‚̏ꍇ‚Ɉꕔ“ú–{Œê‚ðŠÜ‚Þ @ƒtƒ@ƒCƒ‹–¼‚ðˆµ‚¦‚È‚¢ƒoƒO‚ðC³‚µ‚Ü‚µ‚½B +EƒAƒXƒL[ƒ‚[ƒh“]‘—‚̍ۂɍs‚í‚ê‚銿ŽšƒR[ƒh•ÏŠ·‚ŐV‚½‚ÉUTF-8 +@iBOM‚È‚µj‚Ö‚Ì•ÏŠ·‚ðƒTƒ|[ƒg‚µ‚Ü‚µ‚½B1.98‚ŒljÁ‚³‚ꂽUTF-8‚ð +@UTF-8 BOM‚Æ‚¢‚¤–¼Ì‚ɕύX‚µ‚Ü‚µ‚½B + +E‰‰ñ‹N“®Žž‚̃EƒBƒ“ƒhƒE‚̃TƒCƒY‚ƃŒƒCƒAƒEƒg‚ð•ÏX‚µ‚Ü‚µ‚½iˆÈ‘O‚Ì +@ƒo[ƒWƒ‡ƒ“‚̐ݒ肪Žc‚Á‚Ä‚¢‚éê‡‚Í‚»‚̐ݒ肪“K—p‚³‚ê‚Ü‚·jB + ¡Ver 1.98b EM—Š‚Å‚«‚È‚¢DLL‚̓ǂݍž‚Ý‚ð–h‚®‹@”\‚ð’ljÁ‚µ‚Ü‚µ‚½BMicrosoft‚̏–¼‚ª diff --git a/getput.c b/getput.c index 2f0094a..e29d9a7 100644 --- a/getput.c +++ b/getput.c @@ -1635,6 +1635,11 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc cInfo2.OutLen = cInfo.OutLen; break; case KANJI_UTF8N: + Continue = ConvSJIStoUTF8N(&cInfo); + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; + case KANJI_UTF8BOM: if(ProcessedBOM == NO) { memcpy(Buf3, "\xEF\xBB\xBF", 3); @@ -1678,6 +1683,14 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc ConvSJIStoEUC(&cInfo2); break; case KANJI_UTF8N: + Continue = ConvJIStoSJIS(&cInfo); + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoUTF8N(&cInfo2); + break; + case KANJI_UTF8BOM: if(ProcessedBOM == NO) { memcpy(Buf3, "\xEF\xBB\xBF", 3); @@ -1724,6 +1737,14 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc ConvSJIStoEUC(&cInfo2); break; case KANJI_UTF8N: + Continue = ConvEUCtoSJIS(&cInfo); + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoUTF8N(&cInfo2); + break; + case KANJI_UTF8BOM: if(ProcessedBOM == NO) { memcpy(Buf3, "\xEF\xBB\xBF", 3); @@ -1742,6 +1763,50 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc } break; case KANJI_UTF8N: + switch(Pkt->KanjiCodeDesired) + { + case KANJI_SJIS: + Continue = ConvUTF8NtoSJIS(&cInfo); + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; + case KANJI_JIS: + Continue = ConvUTF8NtoSJIS(&cInfo); + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoJIS(&cInfo2); + break; + case KANJI_EUC: + Continue = ConvUTF8NtoSJIS(&cInfo); + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoEUC(&cInfo2); + break; + case KANJI_UTF8N: + memcpy(Buf3, cInfo.Str, cInfo.StrLen); + cInfo2.OutLen = cInfo.StrLen; + Continue = NO; + break; + case KANJI_UTF8BOM: + if(ProcessedBOM == NO) + { + memcpy(Buf3, "\xEF\xBB\xBF", 3); + cInfo2.OutLen = 3; + Continue = YES; + ProcessedBOM = YES; + break; + } + memcpy(Buf3, cInfo.Str, cInfo.StrLen); + cInfo2.OutLen = cInfo.StrLen; + Continue = NO; + break; + } + break; + case KANJI_UTF8BOM: if(ProcessedBOM == NO) { if(memcmp(Buf, "\xEF\xBB\xBF", 3) == 0) @@ -1752,7 +1817,7 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc cInfo2.OutLen = 0; switch(Pkt->KanjiCodeDesired) { - case KANJI_UTF8N: + case KANJI_UTF8BOM: memcpy(Buf3, "\xEF\xBB\xBF", 3); cInfo2.OutLen = 3; break; @@ -1789,6 +1854,11 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc cInfo2.OutLen = cInfo.StrLen; Continue = NO; break; + case KANJI_UTF8BOM: + memcpy(Buf3, cInfo.Str, cInfo.StrLen); + cInfo2.OutLen = cInfo.StrLen; + Continue = NO; + break; } break; } @@ -1850,6 +1920,10 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc memcpy(Buf3, cInfo.Buf, cInfo.OutLen); cInfo2.OutLen = cInfo.OutLen; break; + case KANJI_UTF8BOM: + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; } break; case KANJI_JIS: @@ -1881,6 +1955,13 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc cInfo2.BufSize = (BUFSIZE + 3) * 4; ConvSJIStoUTF8N(&cInfo2); break; + case KANJI_UTF8BOM: + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoUTF8N(&cInfo2); + break; } break; case KANJI_EUC: @@ -1912,6 +1993,13 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc cInfo2.BufSize = (BUFSIZE + 3) * 4; ConvSJIStoUTF8N(&cInfo2); break; + case KANJI_UTF8BOM: + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoUTF8N(&cInfo2); + break; } break; case KANJI_UTF8N: @@ -1939,6 +2027,41 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc memcpy(Buf3, cInfo.Buf, cInfo.OutLen); cInfo2.OutLen = cInfo.OutLen; break; + case KANJI_UTF8BOM: + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; + } + break; + case KANJI_UTF8BOM: + switch(Pkt->KanjiCodeDesired) + { + case KANJI_SJIS: + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; + case KANJI_JIS: + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoJIS(&cInfo2); + break; + case KANJI_EUC: + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoEUC(&cInfo2); + break; + case KANJI_UTF8N: + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; + case KANJI_UTF8BOM: + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; } break; } @@ -2647,6 +2770,11 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt) cInfo2.OutLen = cInfo.OutLen; break; case KANJI_UTF8N: + Continue = ConvSJIStoUTF8N(&cInfo); + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; + case KANJI_UTF8BOM: if(ProcessedBOM == NO) { memcpy(Buf3, "\xEF\xBB\xBF", 3); @@ -2690,6 +2818,14 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt) ConvSJIStoEUC(&cInfo2); break; case KANJI_UTF8N: + Continue = ConvJIStoSJIS(&cInfo); + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoUTF8N(&cInfo2); + break; + case KANJI_UTF8BOM: if(ProcessedBOM == NO) { memcpy(Buf3, "\xEF\xBB\xBF", 3); @@ -2736,6 +2872,14 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt) ConvSJIStoEUC(&cInfo2); break; case KANJI_UTF8N: + Continue = ConvEUCtoSJIS(&cInfo); + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoUTF8N(&cInfo2); + break; + case KANJI_UTF8BOM: if(ProcessedBOM == NO) { memcpy(Buf3, "\xEF\xBB\xBF", 3); @@ -2754,6 +2898,50 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt) } break; case KANJI_UTF8N: + switch(Pkt->KanjiCode) + { + case KANJI_SJIS: + Continue = ConvUTF8NtoSJIS(&cInfo); + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; + case KANJI_JIS: + Continue = ConvUTF8NtoSJIS(&cInfo); + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoJIS(&cInfo2); + break; + case KANJI_EUC: + Continue = ConvUTF8NtoSJIS(&cInfo); + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoEUC(&cInfo2); + break; + case KANJI_UTF8N: + memcpy(Buf3, cInfo.Str, cInfo.StrLen); + cInfo2.OutLen = cInfo.StrLen; + Continue = NO; + break; + case KANJI_UTF8BOM: + if(ProcessedBOM == NO) + { + memcpy(Buf3, "\xEF\xBB\xBF", 3); + cInfo2.OutLen = 3; + Continue = YES; + ProcessedBOM = YES; + break; + } + memcpy(Buf3, cInfo.Str, cInfo.StrLen); + cInfo2.OutLen = cInfo.StrLen; + Continue = NO; + break; + } + break; + case KANJI_UTF8BOM: if(ProcessedBOM == NO) { if(memcmp(Buf, "\xEF\xBB\xBF", 3) == 0) @@ -2764,7 +2952,7 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt) cInfo2.OutLen = 0; switch(Pkt->KanjiCode) { - case KANJI_UTF8N: + case KANJI_UTF8BOM: memcpy(Buf3, "\xEF\xBB\xBF", 3); cInfo2.OutLen = 3; break; @@ -2801,6 +2989,11 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt) cInfo2.OutLen = cInfo.StrLen; Continue = NO; break; + case KANJI_UTF8BOM: + memcpy(Buf3, cInfo.Str, cInfo.StrLen); + cInfo2.OutLen = cInfo.StrLen; + Continue = NO; + break; } break; } @@ -2868,6 +3061,10 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt) memcpy(Buf3, cInfo.Buf, cInfo.OutLen); cInfo2.OutLen = cInfo.OutLen; break; + case KANJI_UTF8BOM: + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; } break; case KANJI_JIS: @@ -2899,6 +3096,13 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt) cInfo2.BufSize = (BUFSIZE + 3) * 4; ConvSJIStoUTF8N(&cInfo2); break; + case KANJI_UTF8BOM: + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoUTF8N(&cInfo2); + break; } break; case KANJI_EUC: @@ -2930,6 +3134,13 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt) cInfo2.BufSize = (BUFSIZE + 3) * 4; ConvSJIStoUTF8N(&cInfo2); break; + case KANJI_UTF8BOM: + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoUTF8N(&cInfo2); + break; } break; case KANJI_UTF8N: @@ -2957,6 +3168,41 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt) memcpy(Buf3, cInfo.Buf, cInfo.OutLen); cInfo2.OutLen = cInfo.OutLen; break; + case KANJI_UTF8BOM: + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; + } + break; + case KANJI_UTF8BOM: + switch(Pkt->KanjiCode) + { + case KANJI_SJIS: + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; + case KANJI_JIS: + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoJIS(&cInfo2); + break; + case KANJI_EUC: + cInfo2.Str = cInfo.Buf; + cInfo2.StrLen = cInfo.OutLen; + cInfo2.Buf = Buf3; + cInfo2.BufSize = (BUFSIZE + 3) * 4; + ConvSJIStoEUC(&cInfo2); + break; + case KANJI_UTF8N: + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; + case KANJI_UTF8BOM: + memcpy(Buf3, cInfo.Buf, cInfo.OutLen); + cInfo2.OutLen = cInfo.OutLen; + break; } break; } @@ -3382,6 +3628,8 @@ static void DispTransFileInfo(TRANSPACKET *Pkt, char *Title, int SkipButton, int SendDlgItemMessage(Pkt->hWndTrans, TRANS_KANJI, WM_SETTEXT, 0, (LPARAM)MSGJPN123); else if(Pkt->KanjiCode == KANJI_UTF8N) SendDlgItemMessage(Pkt->hWndTrans, TRANS_KANJI, WM_SETTEXT, 0, (LPARAM)MSGJPN306); + else if(Pkt->KanjiCode == KANJI_UTF8BOM) + SendDlgItemMessage(Pkt->hWndTrans, TRANS_KANJI, WM_SETTEXT, 0, (LPARAM)MSGJPN329); } else { diff --git a/hostman.c b/hostman.c index ff51b98..83f6b3a 100644 --- a/hostman.c +++ b/hostman.c @@ -1864,7 +1864,8 @@ static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP { HSET_SJIS_CNV, KANJI_SJIS }, { HSET_JIS_CNV, KANJI_JIS }, { HSET_EUC_CNV, KANJI_EUC }, - { HSET_UTF8N_CNV, KANJI_UTF8N } + { HSET_UTF8N_CNV, KANJI_UTF8N }, + { HSET_UTF8BOM_CNV, KANJI_UTF8BOM } }; #define KANJIBUTTONS (sizeof(KanjiButton)/sizeof(RADIOBUTTON)) @@ -1912,6 +1913,7 @@ static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP case WM_COMMAND : switch(GET_WM_COMMAND_ID(wParam, lParam)) { + case HSET_SJIS_CNV : case HSET_JIS_CNV : case HSET_EUC_CNV : EnableWindow(GetDlgItem(hDlg, HSET_HANCNV), TRUE); @@ -1920,10 +1922,10 @@ static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP // UTF-8対応 case HSET_NO_CNV : case HSET_UTF8N_CNV : + case HSET_UTF8BOM_CNV : EnableWindow(GetDlgItem(hDlg, HSET_HANCNV), FALSE); break; - case HSET_SJIS_CNV : case HSET_FN_JIS_CNV : case HSET_FN_EUC_CNV : EnableWindow(GetDlgItem(hDlg, HSET_FN_HANCNV), TRUE); diff --git a/main.c b/main.c index 36e3d1d..bcde07a 100644 --- a/main.c +++ b/main.c @@ -135,12 +135,20 @@ HWND hHelpWin = NULL; /* 設定値 */ int WinPosX = CW_USEDEFAULT; int WinPosY = 0; -int WinWidth = 630; -int WinHeight = 393; -int LocalWidth = 309; -int TaskHeight = 50; -int LocalTabWidth[4] = { 120, 90, 60, 37 }; -int RemoteTabWidth[6] = { 120, 90, 60, 37, 60, 60 }; +// 機能が増えたためサイズ変更 +// VGAサイズに収まるようになっていたのをSVGAサイズに引き上げ +//int WinWidth = 630; +//int WinHeight = 393; +//int LocalWidth = 309; +//int TaskHeight = 50; +//int LocalTabWidth[4] = { 120, 90, 60, 37 }; +//int RemoteTabWidth[6] = { 120, 90, 60, 37, 60, 60 }; +int WinWidth = 790; +int WinHeight = 513; +int LocalWidth = 389; +int TaskHeight = 100; +int LocalTabWidth[4] = { 160, 110, 60, 37 }; +int RemoteTabWidth[6] = { 160, 110, 60, 37, 60, 60 }; char UserMailAdrs[USER_MAIL_LEN+1] = { "who@example.com" }; char ViewerName[VIEWERS][FMAX_PATH+1] = { { "notepad" }, { "" }, { "" } }; HFONT ListFont = NULL; @@ -1148,6 +1156,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA case MENU_KNJ_EUC : case MENU_KNJ_JIS : case MENU_KNJ_UTF8N : + case MENU_KNJ_UTF8BOM : case MENU_KNJ_NONE : SetHostKanjiCode(LOWORD(wParam)); break; @@ -1156,6 +1165,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA case MENU_L_KNJ_EUC : case MENU_L_KNJ_JIS : case MENU_L_KNJ_UTF8N : + case MENU_L_KNJ_UTF8BOM : SetLocalKanjiCode(LOWORD(wParam)); break; @@ -1446,6 +1456,10 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA lpttt->lpszText = MSGJPN308; break; + case MENU_KNJ_UTF8BOM : + lpttt->lpszText = MSGJPN330; + break; + case MENU_KNJ_NONE : lpttt->lpszText = MSGJPN173; break; @@ -1466,6 +1480,10 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA lpttt->lpszText = MSGJPN312; break; + case MENU_L_KNJ_UTF8BOM : + lpttt->lpszText = MSGJPN331; + break; + case MENU_KANACNV : lpttt->lpszText = MSGJPN174; break; diff --git a/mesg-eng.h b/mesg-eng.h index 5c19de7..24eacb5 100644 --- a/mesg-eng.h +++ b/mesg-eng.h @@ -326,3 +326,6 @@ #define MSGJPN326 "Choose 'Yes' if you trust this certificate and continue.\r\nCN is identical: %s\r\nVerified successfully: %s\r\n\r\n%s" #define MSGJPN327 "Yes" #define MSGJPN328 "No" +#define MSGJPN329 "UTF-8 BOM" +#define MSGJPN330 "UTF-8 BOM Kanji Code" +#define MSGJPN331 "UTF-8 BOM Kanji Code (Local)" diff --git a/mesg-eng.old.h b/mesg-eng.old.h index 9a47091..86bbb4f 100644 --- a/mesg-eng.old.h +++ b/mesg-eng.old.h @@ -326,3 +326,6 @@ #define MSGJPN326 "Choose 'Yes' if you trust this certificate and continue.\r\nCN is identical: %s\r\nVerified successfully: %s\r\n\r\n%s" #define MSGJPN327 "Yes" #define MSGJPN328 "No" +#define MSGJPN329 "UTF-8 BOM" +#define MSGJPN330 "UTF-8 BOM Kanji Code" +#define MSGJPN331 "UTF-8 BOM Kanji Code (Local)" diff --git a/mesg-jpn.h b/mesg-jpn.h index 979bcb0..6e0bef2 100644 --- a/mesg-jpn.h +++ b/mesg-jpn.h @@ -326,3 +326,6 @@ #define MSGJPN326 "\xE3\x81\x93\xE3\x81\xAE\xE8\xA8\xBC\xE6\x98\x8E\xE6\x9B\xB8\xE3\x82\x92\xE4\xBF\xA1\xE9\xA0\xBC\xE3\x81\x97,\xE9\x80\x9A\xE4\xBF\xA1\xE3\x82\x92\xE7\xB6\x9A\xE8\xA1\x8C\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\xAF\xE3\x81\x84\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\r\nCN\xE3\x81\xAE\xE4\xB8\x80\xE8\x87\xB4: %s\r\n\xE6\xA4\x9C\xE8\xA8\xBC\xE3\x81\xAB\xE6\x88\x90\xE5\x8A\x9F: %s\r\n\r\n%s" #define MSGJPN327 "\xE3\x81\xAF\xE3\x81\x84" #define MSGJPN328 "\xE3\x81\x84\xE3\x81\x84\xE3\x81\x88" +#define MSGJPN329 "UTF-8 BOM" +#define MSGJPN330 "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAFUTF-8 BOM" +#define MSGJPN331 "\xE3\x83\xAD\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xAB\xE3\x81\xAE\xE6\xBC\xA2\xE5\xAD\x97\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAFUTF-8 BOM" diff --git a/mesg-jpn.old.h b/mesg-jpn.old.h index c65ec2a..c73e228 100644 --- a/mesg-jpn.old.h +++ b/mesg-jpn.old.h @@ -326,3 +326,6 @@ #define MSGJPN326 "‚±‚̏ؖ¾‘‚ðM—Š‚µ,’ʐM‚𑱍s‚·‚é‚ɂ́u‚Í‚¢v‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢.\r\nCN‚̈ê’v: %s\r\nŒŸØ‚ɐ¬Œ÷: %s\r\n\r\n%s" #define MSGJPN327 "‚Í‚¢" #define MSGJPN328 "‚¢‚¢‚¦" +#define MSGJPN329 "UTF-8 BOM" +#define MSGJPN330 "ƒzƒXƒg‚ÌŠ¿ŽšƒR[ƒh‚ÍUTF-8 BOM" +#define MSGJPN331 "ƒ[ƒJƒ‹‚ÌŠ¿ŽšƒR[ƒh‚ÍUTF-8 BOM" diff --git a/registory.c b/registory.c index 2d5b07e..931c89f 100644 --- a/registory.c +++ b/registory.c @@ -877,6 +877,12 @@ int LoadRegistory(void) ReadIntValueFromReg(hKey5, "Port", &Host.Port); ReadIntValueFromReg(hKey5, "Anonymous", &Host.Anonymous); ReadIntValueFromReg(hKey5, "Kanji", &Host.KanjiCode); + // 1.98b以前のUTF-8はBOMあり + if(Version < 1983) + { + if(Host.KanjiCode == KANJI_UTF8N) + Host.KanjiCode = KANJI_UTF8BOM; + } ReadIntValueFromReg(hKey5, "KanaCnv", &Host.KanaCnv); ReadIntValueFromReg(hKey5, "NameKanji", &Host.NameKanjiCode); ReadIntValueFromReg(hKey5, "NameKana", &Host.NameKanaCnv); diff --git a/toolmenu.c b/toolmenu.c index a9d56f1..786a754 100644 --- a/toolmenu.c +++ b/toolmenu.c @@ -140,11 +140,13 @@ static TBBUTTON TbarDataMain[] = { { 20, MENU_L_KNJ_EUC, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 21, MENU_L_KNJ_JIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 28, MENU_L_KNJ_UTF8N, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, + { 29, MENU_L_KNJ_UTF8BOM, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 }, { 27, MENU_KNJ_SJIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 20, MENU_KNJ_EUC, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 21, MENU_KNJ_JIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 28, MENU_KNJ_UTF8N, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, + { 29, MENU_KNJ_UTF8BOM, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 22, MENU_KNJ_NONE, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 }, { 23, MENU_KANACNV, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0 }, @@ -195,8 +197,8 @@ static const int HideMenus[] = { MENU_HELP, MENU_HELP_TROUBLE, MENU_ABOUT, MENU_REGINIT, MENU_TEXT, MENU_BINARY, MENU_AUTO, - MENU_KNJ_SJIS, MENU_KNJ_EUC, MENU_KNJ_JIS, MENU_KNJ_UTF8N, MENU_KNJ_NONE, - MENU_L_KNJ_SJIS, MENU_L_KNJ_EUC, MENU_L_KNJ_JIS, MENU_L_KNJ_UTF8N, + MENU_KNJ_SJIS, MENU_KNJ_EUC, MENU_KNJ_JIS, MENU_KNJ_UTF8N, MENU_KNJ_UTF8BOM, MENU_KNJ_NONE, + MENU_L_KNJ_SJIS, MENU_L_KNJ_EUC, MENU_L_KNJ_JIS, MENU_L_KNJ_UTF8N, MENU_L_KNJ_UTF8BOM, MENU_KANACNV, MENU_LOCAL_UPDIR, MENU_LOCAL_CHDIR, MENU_REMOTE_UPDIR, MENU_REMOTE_CHDIR, @@ -1028,6 +1030,10 @@ void SetHostKanjiCode(int Type) TmpHostKanjiCode = KANJI_UTF8N; break; + case MENU_KNJ_UTF8BOM : + TmpHostKanjiCode = KANJI_UTF8BOM; + break; + default : TmpHostKanjiCode = KANJI_NOCNV; break; @@ -1068,6 +1074,10 @@ void DispHostKanjiCode(void) SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0)); break; + case KANJI_UTF8BOM : + SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_UTF8BOM, MAKELONG(TRUE, 0)); + break; + default : SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0)); break; @@ -1110,6 +1120,7 @@ void HideHostKanjiButton(void) SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(FALSE, 0)); + SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8BOM, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0)); break; @@ -1119,6 +1130,7 @@ void HideHostKanjiButton(void) SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(TRUE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(TRUE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0)); + SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8BOM, MAKELONG(TRUE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0)); // if(TmpHostKanjiCode != KANJI_NOCNV) // SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0)); @@ -1179,6 +1191,10 @@ void SetLocalKanjiCode(int Type) case MENU_L_KNJ_UTF8N : TmpLocalKanjiCode = KANJI_UTF8N; break; + + case MENU_L_KNJ_UTF8BOM : + TmpLocalKanjiCode = KANJI_UTF8BOM; + break; } DispLocalKanjiCode(); HideLocalKanjiButton(); @@ -1205,6 +1221,10 @@ void DispLocalKanjiCode(void) case KANJI_UTF8N : SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0)); break; + + case KANJI_UTF8BOM : + SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_UTF8BOM, MAKELONG(TRUE, 0)); + break; } return; } @@ -1224,6 +1244,7 @@ void HideLocalKanjiButton(void) SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(FALSE, 0)); + SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8BOM, MAKELONG(FALSE, 0)); break; default : @@ -1231,6 +1252,7 @@ void HideLocalKanjiButton(void) SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0)); + SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8BOM, MAKELONG(TRUE, 0)); // 現在カナ変換はShift_JIS、JIS、EUC間でのみ機能する SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0)); switch(TmpHostKanjiCode)