OSDN Git Service

Fix bugs of text encoding routines.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Fri, 9 Sep 2011 09:07:23 +0000 (18:07 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Fri, 9 Sep 2011 09:07:23 +0000 (18:07 +0900)
Fix bugs of UTF-8 to UTF-16 API bridge.
Recover compatibility of registry settings.
Fix bugs of behavior of toolbar buttons.
Add support for JIS and EUC text mode transfer.

12 files changed:
FFFTP.exe
codecnv.c
common.h
getput.c
main.c
mbswrapper.c
mbswrapper.h
mesg-eng.h
mesg-eng.old.h
mesg-jpn.h
mesg-jpn.old.h
toolmenu.c

index 2214070..b17506b 100644 (file)
Binary files a/FFFTP.exe and b/FFFTP.exe differ
index 006e843..13d6b91 100644 (file)
--- a/codecnv.c
+++ b/codecnv.c
@@ -366,6 +366,8 @@ void InitCodeConvInfo(CODECONVINFO *cInfo)
        cInfo->KanjiFst = 0;\r
        cInfo->KanaPrev = 0;\r
        cInfo->KanaProc = NULL;\r
+       // UTF-8\91Î\89\9e\r
+       cInfo->EscUTF8Len = 0;\r
        return;\r
 }\r
 \r
@@ -397,6 +399,9 @@ int FlushRestData(CODECONVINFO *cInfo)
                *Put++ = cInfo->EscCode[0];\r
        if(cInfo->EscProc == 2)\r
                *Put++ = cInfo->EscCode[1];\r
+       // UTF-8\91Î\89\9e\r
+       memcpy(Put, cInfo->EscUTF8, sizeof(char) * cInfo->EscUTF8Len);\r
+       Put += cInfo->EscUTF8Len;\r
 \r
        cInfo->OutLen = Put - cInfo->Buf;\r
 \r
@@ -1478,75 +1483,133 @@ int ConvUTF8NtoSJIS(CODECONVINFO *cInfo)
 {\r
        int Continue;\r
 \r
-       char temp_string[2048];\r
+//     char temp_string[2048];\r
        int string_length;\r
 \r
+       // \91å\82«\82¢\83T\83C\83Y\82É\91Î\89\9e\r
+       // \8fI\92[\82ÌNULL\82ð\8aÜ\82Þ\83o\83O\82ð\8fC\90³\r
+       int SrcLength;\r
+       char* pSrc;\r
+       wchar_t* pUTF16;\r
+       int UTF16Length;\r
+       int Count;\r
+\r
        Continue = NO;\r
 \r
        // \90\90¬\82³\82ê\82é\92\86\8aÔ\83R\81[\83h\82Ì\83T\83C\83Y\82ð\92²\82×\82é\r
-       string_length = MultiByteToWideChar(\r
-                                               CP_UTF8,                // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
-                                               0,                              // \83t\83\89\83O(0:\82È\82µ)\r
-                                               cInfo->Str,             // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
-                                               -1,                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-                                               NULL,                   // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-                                               0                               // \8ai\94[\90æ\83T\83C\83Y\r
-                                       );\r
+//     string_length = MultiByteToWideChar(\r
+//                                             CP_UTF8,                // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
+//                                             0,                              // \83t\83\89\83O(0:\82È\82µ)\r
+//                                             cInfo->Str,             // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
+//                                             -1,                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
+//                                             NULL,                   // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
+//                                             0                               // \8ai\94[\90æ\83T\83C\83Y\r
+//                                     );\r
+       // \91O\89ñ\82Ì\95Ï\8a·\95s\94\\82È\8ec\82è\82Ì\95\8e\9a\97ñ\82ð\93ü\97Í\82Ì\90æ\93ª\82É\8c\8b\8d\87\r
+       SrcLength = cInfo->StrLen + cInfo->EscUTF8Len;\r
+       if(!(pSrc = (char*)malloc(sizeof(char) * (SrcLength + 1))))\r
+       {\r
+               *(cInfo->Buf) = '\0';\r
+               cInfo->BufSize = 0;\r
+               return Continue;\r
+       }\r
+       memcpy(pSrc, cInfo->EscUTF8, sizeof(char) * cInfo->EscUTF8Len);\r
+       memcpy(pSrc + cInfo->EscUTF8Len, cInfo->Str, sizeof(char) * cInfo->StrLen);\r
+       *(pSrc + SrcLength) = '\0';\r
+       // UTF-8\82Ì\8fê\8d\87\81A\95s\8a®\91S\82È\95\8e\9a\82Í\8fí\82É\95Ï\8a·\82³\82ê\82È\82¢\r
+       UTF16Length = MultiByteToWideChar(CP_UTF8, 0, pSrc, SrcLength, NULL, 0);\r
 \r
        // \83T\83C\83Y0 or \83o\83b\83t\83@\83T\83C\83Y\82æ\82è\91å\82«\82¢\8fê\8d\87\82Í\r
        // cInfo->Buf\82Ì\8dÅ\8f\89\82É'\0'\82ð\93ü\82ê\82Ä\81A\r
        // cInfo->BufSize\82É0\82ð\93ü\82ê\82Ä\95Ô\82·\81B\r
-       if( string_length == 0 ||\r
-               string_length >= 1024 ){\r
+//     if( string_length == 0 ||\r
+//             string_length >= 1024 ){\r
+//             *(cInfo->Buf) = '\0';\r
+//             cInfo->BufSize = 0;\r
+//             return(Continue);\r
+//     }\r
+       if(!(pUTF16 = (wchar_t*)malloc(sizeof(wchar_t) * UTF16Length)))\r
+       {\r
+               free(pSrc);\r
                *(cInfo->Buf) = '\0';\r
                cInfo->BufSize = 0;\r
-               return(Continue);\r
+               return Continue;\r
        }\r
 \r
        // \92\86\8aÔ\83R\81[\83h(unicode)\82É\95Ï\8a·\r
-       MultiByteToWideChar(\r
-               CP_UTF8,                                                // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
-               0,                                                              // \83t\83\89\83O(0:\82È\82µ)\r
-               cInfo->Str,                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
-               -1,                                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-               (unsigned short *)temp_string,  // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-               1024                                                    // \8ai\94[\90æ\83T\83C\83Y\r
-       );\r
+//     MultiByteToWideChar(\r
+//             CP_UTF8,                                                // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
+//             0,                                                              // \83t\83\89\83O(0:\82È\82µ)\r
+//             cInfo->Str,                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
+//             -1,                                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
+//             (unsigned short *)temp_string,  // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
+//             1024                                                    // \8ai\94[\90æ\83T\83C\83Y\r
+//     );\r
+       MultiByteToWideChar(CP_UTF8, 0, pSrc, SrcLength, pUTF16, UTF16Length);\r
 \r
        // \90\90¬\82³\82ê\82éUTF-8\83R\81[\83h\82Ì\83T\83C\83Y\82ð\92²\82×\82é\r
-       string_length = WideCharToMultiByte(\r
-                                               CP_ACP,                 // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
-                                               0,                              // \83t\83\89\83O(0:\82È\82µ)\r
-                                               (unsigned short *)temp_string,  // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
-                                               -1,                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-                                               NULL,                   // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-                                               0,                              // \8ai\94[\90æ\83T\83C\83Y\r
-                                               NULL,NULL\r
-                                       );\r
+//     string_length = WideCharToMultiByte(\r
+//                                             CP_ACP,                 // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
+//                                             0,                              // \83t\83\89\83O(0:\82È\82µ)\r
+//                                             (unsigned short *)temp_string,  // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
+//                                             -1,                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
+//                                             NULL,                   // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
+//                                             0,                              // \8ai\94[\90æ\83T\83C\83Y\r
+//                                             NULL,NULL\r
+//                                     );\r
+       string_length = WideCharToMultiByte(CP_ACP, 0, pUTF16, UTF16Length, NULL, 0, NULL, NULL);\r
 \r
        // \83T\83C\83Y0 or \8fo\97Í\83o\83b\83t\83@\83T\83C\83Y\82æ\82è\91å\82«\82¢\8fê\8d\87\82Í\81A\r
        // cInfo->Buf\82Ì\8dÅ\8f\89\82É'\0'\82ð\93ü\82ê\82Ä\81A\r
        // cInfo->BufSize\82É0\82ð\93ü\82ê\82Ä\95Ô\82·\81B\r
-       if( string_length == 0 ||\r
-               string_length >= cInfo->BufSize ){\r
-               *(cInfo->Buf) = '\0';\r
-               cInfo->BufSize = 0;\r
-               return(Continue);\r
-       }\r
+//     if( string_length == 0 ||\r
+//             string_length >= cInfo->BufSize ){\r
+//             *(cInfo->Buf) = '\0';\r
+//             cInfo->BufSize = 0;\r
+//             return(Continue);\r
+//     }\r
 \r
        // \8fo\97Í\83T\83C\83Y\82ð\90Ý\92è\r
-       cInfo->OutLen = string_length;\r
+//     cInfo->OutLen = string_length;\r
 \r
        // UTF-8\83R\81[\83h\82É\95Ï\8a·\r
-       WideCharToMultiByte(\r
-               CP_ACP,                                                 // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
-               0,                                                              // \83t\83\89\83O(0:\82È\82µ)\r
-               (unsigned short *)temp_string,  // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
-               -1,                                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-               cInfo->Buf,                                             // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ(BOM:3bytes)\r
-               cInfo->BufSize,                                 // \8ai\94[\90æ\83T\83C\83Y\r
-               NULL,NULL\r
-       );\r
+//     WideCharToMultiByte(\r
+//             CP_ACP,                                                 // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
+//             0,                                                              // \83t\83\89\83O(0:\82È\82µ)\r
+//             (unsigned short *)temp_string,  // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
+//             -1,                                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
+//             cInfo->Buf,                                             // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ(BOM:3bytes)\r
+//             cInfo->BufSize,                                 // \8ai\94[\90æ\83T\83C\83Y\r
+//             NULL,NULL\r
+//     );\r
+       cInfo->OutLen = WideCharToMultiByte(CP_ACP, 0, pUTF16, UTF16Length, cInfo->Buf, cInfo->BufSize, NULL, NULL);\r
+       // \83o\83b\83t\83@\82É\8eû\82Ü\82ç\82È\82¢\82½\82ß\95Ï\8a·\95\8e\9a\90\94\82ð\94¼\8c¸\r
+       while(cInfo->OutLen == 0 && UTF16Length > 0)\r
+       {\r
+               UTF16Length = UTF16Length / 2;\r
+               cInfo->OutLen = WideCharToMultiByte(CP_ACP, 0, pUTF16, UTF16Length, cInfo->Buf, cInfo->BufSize, NULL, NULL);\r
+       }\r
+       // \95Ï\8a·\82³\82ê\82½\8c³\82Ì\95\8e\9a\97ñ\82Å\82Ì\95\8e\9a\90\94\82ð\8eæ\93¾\r
+       Count = WideCharToMultiByte(CP_UTF8, 0, pUTF16, UTF16Length, NULL, 0, NULL, NULL);\r
+       // \95Ï\8a·\89Â\94\\82È\8ec\82è\82Ì\95\8e\9a\90\94\82ð\8eæ\93¾\r
+       UTF16Length = MultiByteToWideChar(CP_UTF8, 0, pSrc + Count, SrcLength - Count, NULL, 0);\r
+       cInfo->Str += Count - cInfo->EscUTF8Len;\r
+       cInfo->StrLen -= Count - cInfo->EscUTF8Len;\r
+       cInfo->EscUTF8Len = 0;\r
+       if(UTF16Length > 0)\r
+               Continue = YES;\r
+       else\r
+       {\r
+               // \95Ï\8a·\95s\94\\82È\82½\82ß\8e\9f\82Ì\93ü\97Í\82Ì\90æ\93ª\82É\8c\8b\8d\87\r
+               memcpy(cInfo->EscUTF8, cInfo->Str, sizeof(char) * cInfo->StrLen);\r
+               cInfo->EscUTF8Len = cInfo->StrLen;\r
+               cInfo->Str += cInfo->StrLen;\r
+               cInfo->StrLen = 0;\r
+               Continue = NO;\r
+       }\r
+\r
+       free(pSrc);\r
+       free(pUTF16);\r
 \r
        return(Continue);\r
 }\r
@@ -1566,64 +1629,112 @@ int ConvSJIStoUTF8N(CODECONVINFO *cInfo)
 {\r
        int Continue;\r
 \r
-       char temp_string[2048];\r
+//     char temp_string[2048];\r
        int string_length;\r
 \r
+       // \91å\82«\82¢\83T\83C\83Y\82É\91Î\89\9e\r
+       // \8fI\92[\82ÌNULL\82ð\8aÜ\82Þ\83o\83O\82ð\8fC\90³\r
+       int SrcLength;\r
+       char* pSrc;\r
+       wchar_t* pUTF16;\r
+       int UTF16Length;\r
+       int Count;\r
+\r
        Continue = NO;\r
 \r
        // \90\90¬\82³\82ê\82é\92\86\8aÔ\83R\81[\83h\82Ì\83T\83C\83Y\82ð\92²\82×\82é\r
-       string_length = MultiByteToWideChar(\r
-                                               CP_ACP,                 // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
-                                               0,                              // \83t\83\89\83O(0:\82È\82µ)\r
-                                               cInfo->Str,             // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
-                                               -1,                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-                                               NULL,                   // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-                                               0                               // \8ai\94[\90æ\83T\83C\83Y\r
-                                       );\r
+//     string_length = MultiByteToWideChar(\r
+//                                             CP_ACP,                 // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
+//                                             0,                              // \83t\83\89\83O(0:\82È\82µ)\r
+//                                             cInfo->Str,             // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
+//                                             -1,                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
+//                                             NULL,                   // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
+//                                             0                               // \8ai\94[\90æ\83T\83C\83Y\r
+//                                     );\r
+       // \91O\89ñ\82Ì\95Ï\8a·\95s\94\\82È\8ec\82è\82Ì\95\8e\9a\97ñ\82ð\93ü\97Í\82Ì\90æ\93ª\82É\8c\8b\8d\87\r
+       SrcLength = cInfo->StrLen + cInfo->EscUTF8Len;\r
+       if(!(pSrc = (char*)malloc(sizeof(char) * (SrcLength + 1))))\r
+       {\r
+               *(cInfo->Buf) = '\0';\r
+               cInfo->BufSize = 0;\r
+               return Continue;\r
+       }\r
+       memcpy(pSrc, cInfo->EscUTF8, sizeof(char) * cInfo->EscUTF8Len);\r
+       memcpy(pSrc + cInfo->EscUTF8Len, cInfo->Str, sizeof(char) * cInfo->StrLen);\r
+       *(pSrc + SrcLength) = '\0';\r
+       // Shift_JIS\82Ì\8fê\8d\87\81A\95s\8a®\91S\82È\95\8e\9a\82Å\82à\95Ï\8a·\82³\82ê\82é\82±\82Æ\82ª\82 \82é\82½\82ß\81A\96\96\94ö\82Ì\95s\8a®\91S\82È\95\94\95ª\82ð\8dí\82é\r
+       Count = 0;\r
+       while(Count < SrcLength)\r
+       {\r
+               if(((unsigned char)*(pSrc + Count) >= 0x81 && (unsigned char)*(pSrc + Count) <= 0x9f) || (unsigned char)*(pSrc + Count) >= 0xe0)\r
+               {\r
+                       if((unsigned char)*(pSrc + Count + 1) >= 0x40)\r
+                               Count += 2;\r
+                       else\r
+                       {\r
+                               if(Count + 2 > SrcLength)\r
+                                       break;\r
+                               Count += 1;\r
+                       }\r
+               }\r
+               else\r
+                       Count += 1;\r
+       }\r
+       SrcLength = Count;\r
+       UTF16Length = MultiByteToWideChar(CP_ACP, 0, pSrc, SrcLength, NULL, 0);\r
 \r
        // \83T\83C\83Y0 or \83o\83b\83t\83@\83T\83C\83Y\82æ\82è\91å\82«\82¢\8fê\8d\87\82Í\81A\r
        // cInfo->Buf\82Ì\8dÅ\8f\89\82É'\0'\82ð\93ü\82ê\82Ä\81A\r
        // cInfo->BufSize\82É0\82ð\93ü\82ê\82Ä\95Ô\82·\81B\r
-       if( string_length == 0 ||\r
-               string_length >= 1024 ){\r
+//     if( string_length == 0 ||\r
+//             string_length >= 1024 ){\r
+//             *(cInfo->Buf) = '\0';\r
+//             cInfo->BufSize = 0;\r
+//             return(Continue);\r
+//     }\r
+       if(!(pUTF16 = (wchar_t*)malloc(sizeof(wchar_t) * UTF16Length)))\r
+       {\r
+               free(pSrc);\r
                *(cInfo->Buf) = '\0';\r
                cInfo->BufSize = 0;\r
-               return(Continue);\r
+               return Continue;\r
        }\r
 \r
        // \92\86\8aÔ\83R\81[\83h(unicode)\82É\95Ï\8a·\r
-       MultiByteToWideChar(\r
-               CP_ACP,                                                 // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
-               0,                                                              // \83t\83\89\83O(0:\82È\82µ)\r
-               cInfo->Str,                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
-               -1,                                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-               (unsigned short *)temp_string,  // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-               1024                                                    // \8ai\94[\90æ\83T\83C\83Y\r
-       );\r
+//     MultiByteToWideChar(\r
+//             CP_ACP,                                                 // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
+//             0,                                                              // \83t\83\89\83O(0:\82È\82µ)\r
+//             cInfo->Str,                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
+//             -1,                                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
+//             (unsigned short *)temp_string,  // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
+//             1024                                                    // \8ai\94[\90æ\83T\83C\83Y\r
+//     );\r
+       MultiByteToWideChar(CP_ACP, 0, pSrc, SrcLength, pUTF16, UTF16Length);\r
 \r
        // \90\90¬\82³\82ê\82éUTF-8\83R\81[\83h\82Ì\83T\83C\83Y\82ð\92²\82×\82é\r
-       string_length = WideCharToMultiByte(\r
-                                               CP_UTF8,                // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
-                                               0,                              // \83t\83\89\83O(0:\82È\82µ)\r
-                                               (unsigned short *)temp_string,  // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
-                                               -1,                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-                                               NULL,                   // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
-                                               0,                              // \8ai\94[\90æ\83T\83C\83Y\r
-                                               NULL,NULL\r
-                                       );\r
+//     string_length = WideCharToMultiByte(\r
+//                                             CP_UTF8,                // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
+//                                             0,                              // \83t\83\89\83O(0:\82È\82µ)\r
+//                                             (unsigned short *)temp_string,  // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
+//                                             -1,                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
+//                                             NULL,                   // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ\r
+//                                             0,                              // \8ai\94[\90æ\83T\83C\83Y\r
+//                                             NULL,NULL\r
+//                                     );\r
+       string_length = WideCharToMultiByte(CP_UTF8, 0, pUTF16, UTF16Length, NULL, 0, NULL, NULL);\r
 \r
        // \83T\83C\83Y0 or \8fo\97Í\83o\83b\83t\83@\83T\83C\83Y\82æ\82è\91å\82«\82¢\8fê\8d\87\82Í\81A\r
        // cInfo->Buf\82Ì\8dÅ\8f\89\82É'\0'\82ð\93ü\82ê\82Ä\81A\r
        // cInfo->BufSize\82É0\82ð\93ü\82ê\82Ä\95Ô\82·\81B\r
-       if( string_length == 0 ||\r
-               string_length >= cInfo->BufSize ){\r
-               *(cInfo->Buf) = '\0';\r
-               cInfo->BufSize = 0;\r
-               return(Continue);\r
-       }\r
+//     if( string_length == 0 ||\r
+//             string_length >= cInfo->BufSize ){\r
+//             *(cInfo->Buf) = '\0';\r
+//             cInfo->BufSize = 0;\r
+//             return(Continue);\r
+//     }\r
 \r
        // \8fo\97Í\83T\83C\83Y\82ð\90Ý\92è\r
-       cInfo->OutLen = string_length;\r
+//     cInfo->OutLen = string_length;\r
 \r
        /*\r
        // \81«\95t\82¯\82¿\82á\82¾\82ß \83R\83}\83\93\83h\82É\82à\92Ç\89Á\82³\82ê\82Ä\82µ\82Ü\82¤\r
@@ -1634,15 +1745,43 @@ int ConvSJIStoUTF8N(CODECONVINFO *cInfo)
        */\r
 \r
        // UTF-8\83R\81[\83h\82É\95Ï\8a·\r
-       WideCharToMultiByte(\r
-               CP_UTF8,                                                // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
-               0,                                                              // \83t\83\89\83O(0:\82È\82µ)\r
-               (unsigned short *)temp_string,  // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
-               -1,                                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
-               cInfo->Buf,                                     // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ(BOM:3bytes)\r
-               cInfo->BufSize,                                 // \8ai\94[\90æ\83T\83C\83Y\r
-               NULL,NULL\r
-       );\r
+//     WideCharToMultiByte(\r
+//             CP_UTF8,                                                // \95Ï\8a·\90æ\95\8e\9a\83R\81[\83h\r
+//             0,                                                              // \83t\83\89\83O(0:\82È\82µ)\r
+//             (unsigned short *)temp_string,  // \95Ï\8a·\8c³\95\8e\9a\97ñ\r
+//             -1,                                                             // \95Ï\8a·\8c³\95\8e\9a\97ñ\83o\83C\83g\90\94(-1:\8e©\93®)\r
+//             cInfo->Buf,                                     // \95Ï\8a·\82µ\82½\95\8e\9a\97ñ\82Ì\8ai\94[\90æ(BOM:3bytes)\r
+//             cInfo->BufSize,                                 // \8ai\94[\90æ\83T\83C\83Y\r
+//             NULL,NULL\r
+//     );\r
+       cInfo->OutLen = WideCharToMultiByte(CP_UTF8, 0, pUTF16, UTF16Length, cInfo->Buf, cInfo->BufSize, NULL, NULL);\r
+       // \83o\83b\83t\83@\82É\8eû\82Ü\82ç\82È\82¢\82½\82ß\95Ï\8a·\95\8e\9a\90\94\82ð\94¼\8c¸\r
+       while(cInfo->OutLen == 0 && UTF16Length > 0)\r
+       {\r
+               UTF16Length = UTF16Length / 2;\r
+               cInfo->OutLen = WideCharToMultiByte(CP_UTF8, 0, pUTF16, UTF16Length, cInfo->Buf, cInfo->BufSize, NULL, NULL);\r
+       }\r
+       // \95Ï\8a·\82³\82ê\82½\8c³\82Ì\95\8e\9a\97ñ\82Å\82Ì\95\8e\9a\90\94\82ð\8eæ\93¾\r
+       Count = WideCharToMultiByte(CP_ACP, 0, pUTF16, UTF16Length, NULL, 0, NULL, NULL);\r
+       // \95Ï\8a·\89Â\94\\82È\8ec\82è\82Ì\95\8e\9a\90\94\82ð\8eæ\93¾\r
+       UTF16Length = MultiByteToWideChar(CP_ACP, 0, pSrc + Count, SrcLength - Count, NULL, 0);\r
+       cInfo->Str += Count - cInfo->EscUTF8Len;\r
+       cInfo->StrLen -= Count - cInfo->EscUTF8Len;\r
+       cInfo->EscUTF8Len = 0;\r
+       if(UTF16Length > 0)\r
+               Continue = YES;\r
+       else\r
+       {\r
+               // \95Ï\8a·\95s\94\\82È\82½\82ß\8e\9f\82Ì\93ü\97Í\82Ì\90æ\93ª\82É\8c\8b\8d\87\r
+               memcpy(cInfo->EscUTF8, cInfo->Str, sizeof(char) * cInfo->StrLen);\r
+               cInfo->EscUTF8Len = cInfo->StrLen;\r
+               cInfo->Str += cInfo->StrLen;\r
+               cInfo->StrLen = 0;\r
+               Continue = NO;\r
+       }\r
+\r
+       free(pSrc);\r
+       free(pUTF16);\r
 \r
        return(Continue);\r
 }\r
index 2f76bb6..c661dad 100644 (file)
--- a/common.h
+++ b/common.h
@@ -669,16 +669,16 @@ LIST_UNIX_70
 \r
 /*===== \8a¿\8e\9a\83R\81[\83h\95Ï\8a· =====*/\r
 \r
-#define KANJI_SJIS             1               /* SJIS */\r
-#define KANJI_JIS              2               /* JIS */\r
-#define KANJI_EUC              3               /* EUC */\r
-#define KANJI_SMB_HEX  4               /* Samba-HEX */\r
-#define KANJI_SMB_CAP  5               /* Samba-CAP */\r
-#define KANJI_UTF8N            6               /* UTF-8N */\r
+#define KANJI_SJIS             0               /* SJIS */\r
+#define KANJI_JIS              1               /* JIS */\r
+#define KANJI_EUC              2               /* EUC */\r
+#define KANJI_SMB_HEX  3               /* Samba-HEX */\r
+#define KANJI_SMB_CAP  4               /* Samba-CAP */\r
+#define KANJI_UTF8N            5               /* UTF-8N */\r
 \r
-#define KANJI_NOCNV                          /* \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\82È\82µ */\r
+#define KANJI_NOCNV            -1              /* \8a¿\8e\9a\83R\81[\83h\95Ï\8a·\82È\82µ */\r
 \r
-#define KANJI_AUTO             0\r
+#define KANJI_AUTO             -1\r
 \r
 /*===== \83T\83E\83\93\83h =====*/\r
 \r
@@ -1003,6 +1003,8 @@ typedef struct codeconvinfo {
        char KanjiFst;          /* \8a¿\8e\9a\83R\81[\83h\82P\83o\83C\83g\96Ú\95Û\91\97p (\93à\95\94\8f\88\97\9d\97p\83\8f\81[\83N) */\r
        char KanaPrev;          /* \94¼\8ap\83J\83^\83J\83i\95Û\91\97p (\93à\95\94\8f\88\97\9d\97p\83\8f\81[\83N) */\r
        funcptr KanaProc;       /* \94¼\8ap\83J\83^\83J\83i\8f\88\97\9d\83\8b\81[\83`\83\93 (\93à\95\94\8f\88\97\9d\97p\83\8f\81[\83N) */\r
+       char EscUTF8[8];\r
+       int EscUTF8Len;\r
 } CODECONVINFO;\r
 \r
 \r
@@ -1234,10 +1236,6 @@ void SetHostKanjiCode(int Type);
 void DispHostKanjiCode(void);\r
 int AskHostKanjiCode(void);\r
 void HideHostKanjiButton(void);\r
-void SetHostKanaCnvImm(int Mode);\r
-void SetHostKanaCnv(void);\r
-void DispHostKanaCnv(void);\r
-int AskHostKanaCnv(void);\r
 // \83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\r
 void SetLocalKanjiCodeImm(int Mode);\r
 void SetLocalKanjiCode(int Type);\r
@@ -1245,6 +1243,10 @@ void DispLocalKanjiCode(void);
 int AskLocalKanjiCode(void);\r
 void HideLocalKanjiButton(void);\r
 // \82±\82±\82Ü\82Å\r
+void SetHostKanaCnvImm(int Mode);\r
+void SetHostKanaCnv(void);\r
+void DispHostKanaCnv(void);\r
+int AskHostKanaCnv(void);\r
 void SetSortTypeImm(int LFsort, int LDsort, int RFsort, int RDsort);\r
 void SetSortTypeByColumn(int Win, int Tab);\r
 int AskSortType(int Name);\r
index 7cf67a2..cf28616 100644 (file)
--- a/getput.c
+++ b/getput.c
@@ -1179,6 +1179,8 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
        if((iFileHandle = CreateFile(Pkt->LocalFile, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, &Sec, CreateMode, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)\r
        {\r
                // UTF-8\91Î\89\9e\r
+               char Buf3[(BUFSIZE + 3) * 4];\r
+               CODECONVINFO cInfo2;\r
                int ProcessedBOM = NO;\r
                if(CreateMode == OPEN_ALWAYS)\r
                        SetFilePointer(iFileHandle, 0, 0, FILE_END);\r
@@ -1192,6 +1194,9 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
                InitCodeConvInfo(&cInfo);\r
                cInfo.KanaCnv = Pkt->KanaCnv;\r
 \r
+               InitCodeConvInfo(&cInfo2);\r
+               cInfo2.KanaCnv = Pkt->KanaCnv;\r
+\r
                /*===== \83t\83@\83C\83\8b\82ð\8eó\90M\82·\82é\83\8b\81[\83v =====*/\r
                while((Pkt->Abort == ABORT_NONE) && (ForceAbort == NO))\r
                {\r
@@ -1262,13 +1267,26 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
                                                switch(Pkt->KanjiCodeDesired)\r
                                                {\r
                                                case KANJI_SJIS:\r
-                                                       memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
-                                                       cInfo2.OutLen = cInfo.StrLen;\r
-                                                       Continue = NO;\r
+//                                                     memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
+//                                                     cInfo2.OutLen = cInfo.StrLen;\r
+//                                                     Continue = NO;\r
+                                                       // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                                       Continue = ConvSJIStoJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvJIStoSJIS(&cInfo2);\r
                                                        break;\r
                                                case KANJI_JIS:\r
+                                                       Continue = ConvSJIStoJIS(&cInfo);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                                       cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                case KANJI_EUC:\r
+                                                       Continue = ConvSJIStoEUC(&cInfo);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                                       cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                case KANJI_UTF8N:\r
                                                        if(ProcessedBOM == NO)\r
@@ -1280,7 +1298,7 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
                                                                break;\r
                                                        }\r
                                                        Continue = ConvSJIStoUTF8N(&cInfo);\r
-                                                       memcpy(Buf3, Buf2, cInfo.OutLen);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
                                                        cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                }\r
@@ -1290,15 +1308,28 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
                                                {\r
                                                case KANJI_SJIS:\r
                                                        Continue = ConvJIStoSJIS(&cInfo);\r
-                                                       memcpy(Buf3, Buf2, cInfo.OutLen);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
                                                        cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                case KANJI_JIS:\r
-                                                       memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
-                                                       cInfo2.OutLen = cInfo.StrLen;\r
-                                                       Continue = NO;\r
+//                                                     memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
+//                                                     cInfo2.OutLen = cInfo.StrLen;\r
+//                                                     Continue = NO;\r
+                                                       // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                                       Continue = ConvJIStoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoJIS(&cInfo2);\r
                                                        break;\r
                                                case KANJI_EUC:\r
+                                                       Continue = ConvJIStoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoEUC(&cInfo2);\r
                                                        break;\r
                                                case KANJI_UTF8N:\r
                                                        if(ProcessedBOM == NO)\r
@@ -1310,8 +1341,6 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
                                                                break;\r
                                                        }\r
                                                        Continue = ConvJIStoSJIS(&cInfo);\r
-                                                       InitCodeConvInfo(&cInfo2);\r
-                                                       cInfo2.KanaCnv = NO;\r
                                                        cInfo2.Str = cInfo.Buf;\r
                                                        cInfo2.StrLen = cInfo.OutLen;\r
                                                        cInfo2.Buf = Buf3;\r
@@ -1325,15 +1354,28 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
                                                {\r
                                                case KANJI_SJIS:\r
                                                        Continue = ConvEUCtoSJIS(&cInfo);\r
-                                                       memcpy(Buf3, Buf2, cInfo.OutLen);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
                                                        cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                case KANJI_JIS:\r
+                                                       Continue = ConvEUCtoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoJIS(&cInfo2);\r
                                                        break;\r
                                                case KANJI_EUC:\r
-                                                       memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
-                                                       cInfo2.OutLen = cInfo.StrLen;\r
-                                                       Continue = NO;\r
+//                                                     memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
+//                                                     cInfo2.OutLen = cInfo.StrLen;\r
+//                                                     Continue = NO;\r
+                                                       // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                                       Continue = ConvEUCtoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoEUC(&cInfo2);\r
                                                        break;\r
                                                case KANJI_UTF8N:\r
                                                        if(ProcessedBOM == NO)\r
@@ -1345,8 +1387,6 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
                                                                break;\r
                                                        }\r
                                                        Continue = ConvEUCtoSJIS(&cInfo);\r
-                                                       InitCodeConvInfo(&cInfo2);\r
-                                                       cInfo2.KanaCnv = NO;\r
                                                        cInfo2.Str = cInfo.Buf;\r
                                                        cInfo2.StrLen = cInfo.OutLen;\r
                                                        cInfo2.Buf = Buf3;\r
@@ -1379,12 +1419,24 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
                                                {\r
                                                case KANJI_SJIS:\r
                                                        Continue = ConvUTF8NtoSJIS(&cInfo);\r
-                                                       memcpy(Buf3, Buf2, cInfo.OutLen);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
                                                        cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                case KANJI_JIS:\r
+                                                       Continue = ConvUTF8NtoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoJIS(&cInfo2);\r
                                                        break;\r
                                                case KANJI_EUC:\r
+                                                       Continue = ConvUTF8NtoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoEUC(&cInfo2);\r
                                                        break;\r
                                                case KANJI_UTF8N:\r
                                                        memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
@@ -1425,7 +1477,130 @@ static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
                        cInfo.Buf = Buf2;\r
                        cInfo.BufSize = BUFSIZE+3;\r
                        FlushRestData(&cInfo);\r
-                       if(WriteFile(iFileHandle, Buf2, cInfo.OutLen, &Writed, NULL) == FALSE)\r
+                       switch(Pkt->KanjiCode)\r
+                       {\r
+                       case KANJI_SJIS:\r
+                               switch(Pkt->KanjiCodeDesired)\r
+                               {\r
+                               case KANJI_SJIS:\r
+                                       // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                       cInfo2.Str = cInfo.Buf;\r
+                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                       cInfo2.Buf = Buf3;\r
+                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                       ConvJIStoSJIS(&cInfo2);\r
+                                       break;\r
+                               case KANJI_JIS:\r
+                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                       cInfo2.OutLen = cInfo.OutLen;\r
+                                       break;\r
+                               case KANJI_EUC:\r
+                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                       cInfo2.OutLen = cInfo.OutLen;\r
+                                       break;\r
+                               case KANJI_UTF8N:\r
+                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                       cInfo2.OutLen = cInfo.OutLen;\r
+                                       break;\r
+                               }\r
+                               break;\r
+                       case KANJI_JIS:\r
+                               switch(Pkt->KanjiCodeDesired)\r
+                               {\r
+                               case KANJI_SJIS:\r
+                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                       cInfo2.OutLen = cInfo.OutLen;\r
+                                       break;\r
+                               case KANJI_JIS:\r
+                                       // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                       cInfo2.Str = cInfo.Buf;\r
+                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                       cInfo2.Buf = Buf3;\r
+                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                       ConvSJIStoJIS(&cInfo2);\r
+                                       break;\r
+                               case KANJI_EUC:\r
+                                       cInfo2.Str = cInfo.Buf;\r
+                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                       cInfo2.Buf = Buf3;\r
+                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                       ConvSJIStoEUC(&cInfo2);\r
+                                       break;\r
+                               case KANJI_UTF8N:\r
+                                       cInfo2.Str = cInfo.Buf;\r
+                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                       cInfo2.Buf = Buf3;\r
+                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                       ConvSJIStoUTF8N(&cInfo2);\r
+                                       break;\r
+                               }\r
+                               break;\r
+                       case KANJI_EUC:\r
+                               switch(Pkt->KanjiCodeDesired)\r
+                               {\r
+                               case KANJI_SJIS:\r
+                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                       cInfo2.OutLen = cInfo.OutLen;\r
+                                       break;\r
+                               case KANJI_JIS:\r
+                                       cInfo2.Str = cInfo.Buf;\r
+                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                       cInfo2.Buf = Buf3;\r
+                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                       ConvSJIStoJIS(&cInfo2);\r
+                                       break;\r
+                               case KANJI_EUC:\r
+                                       // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                       cInfo2.Str = cInfo.Buf;\r
+                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                       cInfo2.Buf = Buf3;\r
+                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                       ConvSJIStoEUC(&cInfo2);\r
+                                       break;\r
+                               case KANJI_UTF8N:\r
+                                       cInfo2.Str = cInfo.Buf;\r
+                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                       cInfo2.Buf = Buf3;\r
+                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                       ConvSJIStoUTF8N(&cInfo2);\r
+                                       break;\r
+                               }\r
+                               break;\r
+                       case KANJI_UTF8N:\r
+                               switch(Pkt->KanjiCodeDesired)\r
+                               {\r
+                               case KANJI_SJIS:\r
+                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                       cInfo2.OutLen = cInfo.OutLen;\r
+                                       break;\r
+                               case KANJI_JIS:\r
+                                       cInfo2.Str = cInfo.Buf;\r
+                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                       cInfo2.Buf = Buf3;\r
+                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                       ConvSJIStoJIS(&cInfo2);\r
+                                       break;\r
+                               case KANJI_EUC:\r
+                                       cInfo2.Str = cInfo.Buf;\r
+                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                       cInfo2.Buf = Buf3;\r
+                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                       ConvSJIStoEUC(&cInfo2);\r
+                                       break;\r
+                               case KANJI_UTF8N:\r
+                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                       cInfo2.OutLen = cInfo.OutLen;\r
+                                       break;\r
+                               }\r
+                               break;\r
+                       }\r
+//                     if(WriteFile(iFileHandle, Buf2, cInfo.OutLen, &Writed, NULL) == FALSE)\r
+                       if(WriteFile(iFileHandle, Buf3, cInfo2.OutLen, &Writed, NULL) == FALSE)\r
+                               Pkt->Abort = ABORT_DISKFULL;\r
+                       cInfo2.Buf = Buf3;\r
+                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                       FlushRestData(&cInfo2);\r
+                       if(WriteFile(iFileHandle, Buf3, cInfo2.OutLen, &Writed, NULL) == FALSE)\r
                                Pkt->Abort = ABORT_DISKFULL;\r
                }\r
 \r
@@ -1981,6 +2156,8 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
                FILE_SHARE_READ|FILE_SHARE_WRITE, &Sec, OPEN_EXISTING, 0, NULL)) != INVALID_HANDLE_VALUE)\r
        {\r
                // UTF-8\91Î\89\9e\r
+               char Buf3[(BUFSIZE + 3) * 4];\r
+               CODECONVINFO cInfo2;\r
                int ProcessedBOM = NO;\r
                if(Pkt->hWndTrans != NULL)\r
                {\r
@@ -2000,6 +2177,9 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
                cInfo.KanaCnv = Pkt->KanaCnv;\r
                InitTermCodeConvInfo(&tInfo);\r
 \r
+               InitCodeConvInfo(&cInfo2);\r
+               cInfo2.KanaCnv = Pkt->KanaCnv;\r
+\r
                /*===== \83t\83@\83C\83\8b\82ð\91\97\90M\82·\82é\83\8b\81[\83v =====*/\r
                while((Pkt->Abort == ABORT_NONE) &&\r
                          (ForceAbort == NO) &&\r
@@ -2031,21 +2211,32 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
 //                                             Continue = ConvSJIStoJIS(&cInfo);\r
 //                                     else\r
 //                                             Continue = ConvSJIStoEUC(&cInfo);\r
-                                       char Buf3[(BUFSIZE + 3) * 4];\r
-                                       CODECONVINFO cInfo2;\r
                                        switch(Pkt->KanjiCodeDesired)\r
                                        {\r
                                        case KANJI_SJIS:\r
                                                switch(Pkt->KanjiCode)\r
                                                {\r
                                                case KANJI_SJIS:\r
-                                                       memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
-                                                       cInfo2.OutLen = cInfo.StrLen;\r
-                                                       Continue = NO;\r
+//                                                     memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
+//                                                     cInfo2.OutLen = cInfo.StrLen;\r
+//                                                     Continue = NO;\r
+                                                       // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                                       Continue = ConvSJIStoJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvJIStoSJIS(&cInfo2);\r
                                                        break;\r
                                                case KANJI_JIS:\r
+                                                       Continue = ConvSJIStoJIS(&cInfo);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                                       cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                case KANJI_EUC:\r
+                                                       Continue = ConvSJIStoEUC(&cInfo);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                                       cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                case KANJI_UTF8N:\r
                                                        if(ProcessedBOM == NO)\r
@@ -2057,7 +2248,7 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
                                                                break;\r
                                                        }\r
                                                        Continue = ConvSJIStoUTF8N(&cInfo);\r
-                                                       memcpy(Buf3, cInfo.Str, cInfo.OutLen);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
                                                        cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                }\r
@@ -2067,15 +2258,28 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
                                                {\r
                                                case KANJI_SJIS:\r
                                                        Continue = ConvJIStoSJIS(&cInfo);\r
-                                                       memcpy(Buf3, Buf2, cInfo.OutLen);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
                                                        cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                case KANJI_JIS:\r
-                                                       memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
-                                                       cInfo2.OutLen = cInfo.StrLen;\r
-                                                       Continue = NO;\r
+//                                                     memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
+//                                                     cInfo2.OutLen = cInfo.StrLen;\r
+//                                                     Continue = NO;\r
+                                                       // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                                       Continue = ConvJIStoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoJIS(&cInfo2);\r
                                                        break;\r
                                                case KANJI_EUC:\r
+                                                       Continue = ConvJIStoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoEUC(&cInfo2);\r
                                                        break;\r
                                                case KANJI_UTF8N:\r
                                                        if(ProcessedBOM == NO)\r
@@ -2087,8 +2291,6 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
                                                                break;\r
                                                        }\r
                                                        Continue = ConvJIStoSJIS(&cInfo);\r
-                                                       InitCodeConvInfo(&cInfo2);\r
-                                                       cInfo2.KanaCnv = NO;\r
                                                        cInfo2.Str = cInfo.Buf;\r
                                                        cInfo2.StrLen = cInfo.OutLen;\r
                                                        cInfo2.Buf = Buf3;\r
@@ -2102,15 +2304,28 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
                                                {\r
                                                case KANJI_SJIS:\r
                                                        Continue = ConvEUCtoSJIS(&cInfo);\r
-                                                       memcpy(Buf3, Buf2, cInfo.OutLen);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
                                                        cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                case KANJI_JIS:\r
+                                                       Continue = ConvEUCtoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoJIS(&cInfo2);\r
                                                        break;\r
                                                case KANJI_EUC:\r
-                                                       memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
-                                                       cInfo2.OutLen = cInfo.StrLen;\r
-                                                       Continue = NO;\r
+//                                                     memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
+//                                                     cInfo2.OutLen = cInfo.StrLen;\r
+//                                                     Continue = NO;\r
+                                                       // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                                       Continue = ConvEUCtoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoEUC(&cInfo2);\r
                                                        break;\r
                                                case KANJI_UTF8N:\r
                                                        if(ProcessedBOM == NO)\r
@@ -2122,8 +2337,6 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
                                                                break;\r
                                                        }\r
                                                        Continue = ConvEUCtoSJIS(&cInfo);\r
-                                                       InitCodeConvInfo(&cInfo2);\r
-                                                       cInfo2.KanaCnv = NO;\r
                                                        cInfo2.Str = cInfo.Buf;\r
                                                        cInfo2.StrLen = cInfo.OutLen;\r
                                                        cInfo2.Buf = Buf3;\r
@@ -2156,12 +2369,24 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
                                                {\r
                                                case KANJI_SJIS:\r
                                                        Continue = ConvUTF8NtoSJIS(&cInfo);\r
-                                                       memcpy(Buf3, Buf2, cInfo.OutLen);\r
+                                                       memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
                                                        cInfo2.OutLen = cInfo.OutLen;\r
                                                        break;\r
                                                case KANJI_JIS:\r
+                                                       Continue = ConvUTF8NtoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoJIS(&cInfo2);\r
                                                        break;\r
                                                case KANJI_EUC:\r
+                                                       Continue = ConvUTF8NtoSJIS(&cInfo);\r
+                                                       cInfo2.Str = cInfo.Buf;\r
+                                                       cInfo2.StrLen = cInfo.OutLen;\r
+                                                       cInfo2.Buf = Buf3;\r
+                                                       cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                                       ConvSJIStoEUC(&cInfo2);\r
                                                        break;\r
                                                case KANJI_UTF8N:\r
                                                        memcpy(Buf3, cInfo.Str, cInfo.StrLen);\r
@@ -2206,8 +2431,131 @@ static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
                                cInfo.Buf = Buf2;\r
                                cInfo.BufSize = BUFSIZE+3;\r
                                FlushRestData(&cInfo);\r
+                               switch(Pkt->KanjiCodeDesired)\r
+                               {\r
+                               case KANJI_SJIS:\r
+                                       switch(Pkt->KanjiCode)\r
+                                       {\r
+                                       case KANJI_SJIS:\r
+                                               // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                               cInfo2.Str = cInfo.Buf;\r
+                                               cInfo2.StrLen = cInfo.OutLen;\r
+                                               cInfo2.Buf = Buf3;\r
+                                               cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                               ConvJIStoSJIS(&cInfo2);\r
+                                               break;\r
+                                       case KANJI_JIS:\r
+                                               memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                               cInfo2.OutLen = cInfo.OutLen;\r
+                                               break;\r
+                                       case KANJI_EUC:\r
+                                               memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                               cInfo2.OutLen = cInfo.OutLen;\r
+                                               break;\r
+                                       case KANJI_UTF8N:\r
+                                               memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                               cInfo2.OutLen = cInfo.OutLen;\r
+                                               break;\r
+                                       }\r
+                                       break;\r
+                               case KANJI_JIS:\r
+                                       switch(Pkt->KanjiCode)\r
+                                       {\r
+                                       case KANJI_SJIS:\r
+                                               memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                               cInfo2.OutLen = cInfo.OutLen;\r
+                                               break;\r
+                                       case KANJI_JIS:\r
+                                               // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                               cInfo2.Str = cInfo.Buf;\r
+                                               cInfo2.StrLen = cInfo.OutLen;\r
+                                               cInfo2.Buf = Buf3;\r
+                                               cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                               ConvSJIStoJIS(&cInfo2);\r
+                                               break;\r
+                                       case KANJI_EUC:\r
+                                               cInfo2.Str = cInfo.Buf;\r
+                                               cInfo2.StrLen = cInfo.OutLen;\r
+                                               cInfo2.Buf = Buf3;\r
+                                               cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                               ConvSJIStoEUC(&cInfo2);\r
+                                               break;\r
+                                       case KANJI_UTF8N:\r
+                                               cInfo2.Str = cInfo.Buf;\r
+                                               cInfo2.StrLen = cInfo.OutLen;\r
+                                               cInfo2.Buf = Buf3;\r
+                                               cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                               ConvSJIStoUTF8N(&cInfo2);\r
+                                               break;\r
+                                       }\r
+                                       break;\r
+                               case KANJI_EUC:\r
+                                       switch(Pkt->KanjiCode)\r
+                                       {\r
+                                       case KANJI_SJIS:\r
+                                               memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                               cInfo2.OutLen = cInfo.OutLen;\r
+                                               break;\r
+                                       case KANJI_JIS:\r
+                                               cInfo2.Str = cInfo.Buf;\r
+                                               cInfo2.StrLen = cInfo.OutLen;\r
+                                               cInfo2.Buf = Buf3;\r
+                                               cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                               ConvSJIStoJIS(&cInfo2);\r
+                                               break;\r
+                                       case KANJI_EUC:\r
+                                               // \83J\83i\95Ï\8a·\82Ì\82½\82ß\r
+                                               cInfo2.Str = cInfo.Buf;\r
+                                               cInfo2.StrLen = cInfo.OutLen;\r
+                                               cInfo2.Buf = Buf3;\r
+                                               cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                               ConvSJIStoEUC(&cInfo2);\r
+                                               break;\r
+                                       case KANJI_UTF8N:\r
+                                               cInfo2.Str = cInfo.Buf;\r
+                                               cInfo2.StrLen = cInfo.OutLen;\r
+                                               cInfo2.Buf = Buf3;\r
+                                               cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                               ConvSJIStoUTF8N(&cInfo2);\r
+                                               break;\r
+                                       }\r
+                                       break;\r
+                               case KANJI_UTF8N:\r
+                                       switch(Pkt->KanjiCode)\r
+                                       {\r
+                                       case KANJI_SJIS:\r
+                                               memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                               cInfo2.OutLen = cInfo.OutLen;\r
+                                               break;\r
+                                       case KANJI_JIS:\r
+                                               cInfo2.Str = cInfo.Buf;\r
+                                               cInfo2.StrLen = cInfo.OutLen;\r
+                                               cInfo2.Buf = Buf3;\r
+                                               cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                               ConvSJIStoJIS(&cInfo2);\r
+                                               break;\r
+                                       case KANJI_EUC:\r
+                                               cInfo2.Str = cInfo.Buf;\r
+                                               cInfo2.StrLen = cInfo.OutLen;\r
+                                               cInfo2.Buf = Buf3;\r
+                                               cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                                               ConvSJIStoEUC(&cInfo2);\r
+                                               break;\r
+                                       case KANJI_UTF8N:\r
+                                               memcpy(Buf3, cInfo.Buf, cInfo.OutLen);\r
+                                               cInfo2.OutLen = cInfo.OutLen;\r
+                                               break;\r
+                                       }\r
+                                       break;\r
+                               }\r
 \r
-                               if(TermCodeConvAndSend(&tInfo, dSkt, Buf2, cInfo.OutLen, Pkt->Type) == FAIL)\r
+//                             if(TermCodeConvAndSend(&tInfo, dSkt, Buf2, cInfo.OutLen, Pkt->Type) == FAIL)\r
+                               if(TermCodeConvAndSend(&tInfo, dSkt, Buf3, cInfo2.OutLen, Pkt->Type) == FAIL)\r
+                                       Pkt->Abort = ABORT_ERROR;\r
+                               cInfo2.Buf = Buf3;\r
+                               cInfo2.BufSize = (BUFSIZE + 3) * 4;\r
+                               FlushRestData(&cInfo2);\r
+                               if(TermCodeConvAndSend(&tInfo, dSkt, Buf3, cInfo2.OutLen, Pkt->Type) == FAIL)\r
                                        Pkt->Abort = ABORT_ERROR;\r
                        }\r
 \r
@@ -2571,12 +2919,17 @@ static void DispTransFileInfo(TRANSPACKET *Pkt, char *Title, int SkipButton, int
                        else if(Pkt->Type == TYPE_A)\r
                                SendDlgItemMessage(Pkt->hWndTrans, TRANS_MODE, WM_SETTEXT, 0, (LPARAM)MSGJPN120);\r
 \r
+                       // UTF-8\91Î\89\9e\r
                        if(Pkt->KanjiCode == KANJI_NOCNV)\r
                                SendDlgItemMessage(Pkt->hWndTrans, TRANS_KANJI, WM_SETTEXT, 0, (LPARAM)MSGJPN121);\r
+                       else if(Pkt->KanjiCode == KANJI_SJIS)\r
+                               SendDlgItemMessage(Pkt->hWndTrans, TRANS_KANJI, WM_SETTEXT, 0, (LPARAM)MSGJPN305);\r
                        else if(Pkt->KanjiCode == KANJI_JIS)\r
                                SendDlgItemMessage(Pkt->hWndTrans, TRANS_KANJI, WM_SETTEXT, 0, (LPARAM)MSGJPN122);\r
                        else if(Pkt->KanjiCode == KANJI_EUC)\r
                                SendDlgItemMessage(Pkt->hWndTrans, TRANS_KANJI, WM_SETTEXT, 0, (LPARAM)MSGJPN123);\r
+                       else if(Pkt->KanjiCode == KANJI_UTF8N)\r
+                               SendDlgItemMessage(Pkt->hWndTrans, TRANS_KANJI, WM_SETTEXT, 0, (LPARAM)MSGJPN306);\r
                }\r
                else\r
                {\r
@@ -2668,14 +3021,28 @@ static int IsSpecialDevice(char *Fname)
        int Sts;\r
 \r
        Sts = NO;\r
-       if((_stricmp(Fname, "CON") == 0) ||\r
-          (_stricmp(Fname, "PRN") == 0) ||\r
-          (_stricmp(Fname, "AUX") == 0) ||\r
-          (_strnicmp(Fname, "CON.", 4) == 0) ||\r
-          (_strnicmp(Fname, "PRN.", 4) == 0) ||\r
-          (_strnicmp(Fname, "AUX.", 4) == 0))\r
+       // \83o\83O\8fC\90³\r
+//     if((_stricmp(Fname, "CON") == 0) ||\r
+//        (_stricmp(Fname, "PRN") == 0) ||\r
+//        (_stricmp(Fname, "AUX") == 0) ||\r
+//        (_strnicmp(Fname, "CON.", 4) == 0) ||\r
+//        (_strnicmp(Fname, "PRN.", 4) == 0) ||\r
+//        (_strnicmp(Fname, "AUX.", 4) == 0))\r
+//     {\r
+//             Sts = YES;\r
+//     }\r
+       if(_strnicmp(Fname, "AUX", 3) == 0|| _strnicmp(Fname, "CON", 3) == 0 || _strnicmp(Fname, "NUL", 3) == 0 || _strnicmp(Fname, "PRN", 3) == 0)\r
+       {\r
+               if(*(Fname + 3) == '\0' || *(Fname + 3) == '.')\r
+                       Sts = YES;\r
+       }\r
+       else if(_strnicmp(Fname, "COM", 3) == 0 || _strnicmp(Fname, "LPT", 3) == 0)\r
        {\r
-               Sts = YES;\r
+               if(isdigit(*(Fname + 3)) != 0)\r
+               {\r
+                       if(*(Fname + 4) == '\0' || *(Fname + 4) == '.')\r
+                               Sts = YES;\r
+               }\r
        }\r
        return(Sts);\r
 }\r
diff --git a/main.c b/main.c
index eaef74f..8aebef3 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1308,7 +1308,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                                        break;\r
 \r
                                                case MENU_KNJ_SJIS :\r
-                                                       lpttt->lpszText = MSGJPN305;\r
+                                                       lpttt->lpszText = MSGJPN307;\r
                                                        break;\r
 \r
                                                case MENU_KNJ_EUC :\r
@@ -1320,7 +1320,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                                        break;\r
 \r
                                                case MENU_KNJ_UTF8N :\r
-                                                       lpttt->lpszText = MSGJPN306;\r
+                                                       lpttt->lpszText = MSGJPN308;\r
                                                        break;\r
 \r
                                                case MENU_KNJ_NONE :\r
@@ -1328,19 +1328,19 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                                        break;\r
 \r
                                                case MENU_L_KNJ_SJIS :\r
-                                                       lpttt->lpszText = MSGJPN307;\r
+                                                       lpttt->lpszText = MSGJPN309;\r
                                                        break;\r
 \r
                                                case MENU_L_KNJ_EUC :\r
-                                                       lpttt->lpszText = MSGJPN308;\r
+                                                       lpttt->lpszText = MSGJPN310;\r
                                                        break;\r
 \r
                                                case MENU_L_KNJ_JIS :\r
-                                                       lpttt->lpszText = MSGJPN309;\r
+                                                       lpttt->lpszText = MSGJPN311;\r
                                                        break;\r
 \r
                                                case MENU_L_KNJ_UTF8N :\r
-                                                       lpttt->lpszText = MSGJPN310;\r
+                                                       lpttt->lpszText = MSGJPN312;\r
                                                        break;\r
 \r
                                                case MENU_KANACNV :\r
@@ -1937,6 +1937,7 @@ void DoubleClickProc(int Win, int Mode, int App)
                                                        MainTransPkt.Type = AskTransferTypeAssoc(MainTransPkt.RemoteFile, AskTransferType());\r
                                                        MainTransPkt.Size = 1;\r
                                                        MainTransPkt.KanjiCode = AskHostKanjiCode();\r
+                                                       MainTransPkt.KanjiCodeDesired = AskLocalKanjiCode();\r
                                                        MainTransPkt.KanaCnv = AskHostKanaCnv();\r
                                                        MainTransPkt.Mode = EXIST_OVW;\r
                                                        MainTransPkt.ExistSize = 0;\r
index 2b7e2cf..8cb6257 100644 (file)
@@ -393,7 +393,7 @@ START_ROUTINE
                break;
        default:
                GetClassNameW(hWnd, ClassName, sizeof(ClassName) / sizeof(wchar_t));
-               if(wcsicmp(ClassName, WC_EDITW) == 0)
+               if(_wcsicmp(ClassName, WC_EDITW) == 0)
                {
                        switch(Msg)
                        {
@@ -406,7 +406,7 @@ START_ROUTINE
                                break;
                        }
                }
-               else if(wcsicmp(ClassName, WC_COMBOBOXW) == 0)
+               else if(_wcsicmp(ClassName, WC_COMBOBOXW) == 0)
                {
                        switch(Msg)
                        {
@@ -427,7 +427,7 @@ START_ROUTINE
                                break;
                        }
                }
-               else if(wcsicmp(ClassName, WC_LISTBOXW) == 0)
+               else if(_wcsicmp(ClassName, WC_LISTBOXW) == 0)
                {
                        switch(Msg)
                        {
@@ -452,7 +452,7 @@ START_ROUTINE
                                break;
                        }
                }
-               else if(wcsicmp(ClassName, WC_LISTVIEWW) == 0)
+               else if(_wcsicmp(ClassName, WC_LISTVIEWW) == 0)
                {
                        switch(Msg)
                        {
@@ -568,7 +568,7 @@ START_ROUTINE
                                break;
                        }
                }
-               else if(wcsicmp(ClassName, STATUSCLASSNAMEW) == 0)
+               else if(_wcsicmp(ClassName, STATUSCLASSNAMEW) == 0)
                {
                        switch(Msg)
                        {
@@ -733,13 +733,36 @@ LSTATUS RegQueryValueExM(HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDW
 {
        LSTATUS r = 0;
        wchar_t* pw0 = NULL;
+       wchar_t* pw1 = NULL;
+       DWORD dwType;
+       DWORD wcbData;
 START_ROUTINE
        pw0 = DuplicateMtoW(lpValueName, -1);
-       // TODO: \83\8c\83W\83X\83g\83\8a\82ÍUTF-8\82Å\95Û\91\82³\82ê\82Ä\82µ\82Ü\82¤\81i\88È\91O\82Ì\83o\81[\83W\83\87\83\93\82Æ\8cÝ\8a·\90«\82È\82µ\81j
-       // UTF-16\82Å\95Û\91\82·\82é\82×\82«
-       r = RegQueryValueExW(hKey, pw0, lpReserved, lpType, lpData, lpcbData);
+       if(RegQueryValueExW(hKey, pw0, NULL, &dwType, NULL, 0) == ERROR_SUCCESS)
+       {
+               switch(dwType)
+               {
+               case REG_SZ:
+               case REG_EXPAND_SZ:
+               case REG_MULTI_SZ:
+                       if(lpData && lpcbData)
+                       {
+                               pw1 = AllocateStringW(*lpcbData / sizeof(char) * 4);
+                               wcbData = *lpcbData / sizeof(char) * 4;
+                               r = RegQueryValueExW(hKey, pw0, lpReserved, lpType, (LPBYTE)pw1, &wcbData);
+                               *lpcbData = sizeof(char) * WtoM((char*)lpData, *lpcbData / sizeof(char), pw1, wcbData / sizeof(wchar_t));
+                       }
+                       break;
+               default:
+                       r = RegQueryValueExW(hKey, pw0, lpReserved, lpType, lpData, lpcbData);
+                       break;
+               }
+       }
+       else
+               r = RegQueryValueExW(hKey, pw0, lpReserved, lpType, lpData, lpcbData);
 END_ROUTINE
        FreeDuplicatedString(pw0);
+       FreeDuplicatedString(pw1);
        return r;
 }
 
@@ -747,13 +770,27 @@ LSTATUS RegSetValueExM(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwTy
 {
        LSTATUS r = 0;
        wchar_t* pw0 = NULL;
+       wchar_t* pw1 = NULL;
+       DWORD wcbData;
 START_ROUTINE
        pw0 = DuplicateMtoW(lpValueName, -1);
-       // TODO: \83\8c\83W\83X\83g\83\8a\82ÍUTF-8\82Å\95Û\91\82³\82ê\82Ä\82µ\82Ü\82¤\81i\88È\91O\82Ì\83o\81[\83W\83\87\83\93\82Æ\8cÝ\8a·\90«\82È\82µ\81j
-       // UTF-16\82Å\95Û\91\82·\82é\82×\82«
+       switch(dwType)
+       {
+       case REG_SZ:
+       case REG_EXPAND_SZ:
+       case REG_MULTI_SZ:
+               wcbData = MtoW(NULL, 0, (char*)lpData, cbData / sizeof(char));
+               pw1 = AllocateStringW(wcbData);
+               MtoW(pw1, wcbData, (char*)lpData, cbData / sizeof(char));
+               wcbData = sizeof(wchar_t) * wcbData;
+               lpData = (BYTE*)pw1;
+               cbData = wcbData;
+               break;
+       }
        r = RegSetValueExW(hKey, pw0, Reserved, dwType, lpData, cbData);
 END_ROUTINE
        FreeDuplicatedString(pw0);
+       FreeDuplicatedString(pw1);
        return r;
 }
 
@@ -974,7 +1011,7 @@ END_ROUTINE
 
 HWND HtmlHelpM(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD_PTR dwData)
 {
-       HINSTANCE r = NULL;
+       HWND r = NULL;
        wchar_t* pw0 = NULL;
 START_ROUTINE
        pw0 = DuplicateMtoW(pszFile, -1);
@@ -984,6 +1021,76 @@ END_ROUTINE
        return r;
 }
 
+BOOL CreateProcessM(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
+{
+       BOOL r = FALSE;
+       wchar_t* pw0 = NULL;
+       wchar_t* pw1 = NULL;
+       wchar_t* pw2 = NULL;
+       wchar_t* pw3 = NULL;
+       wchar_t* pw4 = NULL;
+       wchar_t* pw5 = NULL;
+       STARTUPINFOW wStartupInfo;
+START_ROUTINE
+       pw0 = DuplicateMtoW(lpApplicationName, -1);
+       pw1 = DuplicateMtoWBuffer(lpCommandLine, -1, (strlen(lpCommandLine) + 1) * 4);
+       pw2 = DuplicateMtoW(lpCurrentDirectory, -1);
+       wStartupInfo.cb = sizeof(LPSTARTUPINFOW);
+       pw3 = DuplicateMtoW(lpStartupInfo->lpReserved, -1);
+       wStartupInfo.lpReserved = pw3;
+       pw4 = DuplicateMtoW(lpStartupInfo->lpDesktop, -1);
+       wStartupInfo.lpDesktop = pw4;
+       pw5 = DuplicateMtoW(lpStartupInfo->lpTitle, -1);
+       wStartupInfo.lpTitle = pw5;
+       wStartupInfo.dwX = lpStartupInfo->dwX;
+       wStartupInfo.dwY = lpStartupInfo->dwY;
+       wStartupInfo.dwXSize = lpStartupInfo->dwXSize;
+       wStartupInfo.dwYSize = lpStartupInfo->dwYSize;
+       wStartupInfo.dwXCountChars = lpStartupInfo->dwXCountChars;
+       wStartupInfo.dwYCountChars = lpStartupInfo->dwYCountChars;
+       wStartupInfo.dwFillAttribute = lpStartupInfo->dwFillAttribute;
+       wStartupInfo.dwFlags = lpStartupInfo->dwFlags;
+       wStartupInfo.wShowWindow = lpStartupInfo->wShowWindow;
+       wStartupInfo.cbReserved2 = lpStartupInfo->cbReserved2;
+       wStartupInfo.lpReserved2 = lpStartupInfo->lpReserved2;
+       wStartupInfo.hStdInput = lpStartupInfo->hStdInput;
+       wStartupInfo.hStdOutput = lpStartupInfo->hStdOutput;
+       wStartupInfo.hStdError = lpStartupInfo->hStdError;
+       r = CreateProcessW(pw0, pw1, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, pw2, &wStartupInfo, lpProcessInformation);
+       WtoM(lpCommandLine, strlen(lpCommandLine) + 1, pw1, -1);
+END_ROUTINE
+       FreeDuplicatedString(pw0);
+       FreeDuplicatedString(pw1);
+       FreeDuplicatedString(pw2);
+       FreeDuplicatedString(pw3);
+       FreeDuplicatedString(pw4);
+       FreeDuplicatedString(pw5);
+       return r;
+}
+
+HINSTANCE FindExecutableM(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult)
+{
+       HINSTANCE r = NULL;
+       wchar_t* pw0 = NULL;
+       wchar_t* pw1 = NULL;
+       wchar_t* pw2 = NULL;
+       wchar_t* pw3 = NULL;
+START_ROUTINE
+       pw0 = DuplicateMtoW(lpFile, -1);
+       pw1 = DuplicateMtoW(lpDirectory, -1);
+       pw2 = AllocateStringW(MAX_PATH * 4);
+       r = FindExecutableW(pw0, pw1, pw2);
+       // \83o\83b\83t\83@\92·\95s\96¾\82Ì\82½\82ß\83I\81[\83o\81[\83\89\83\93\82Ì\89Â\94\\90«\82 \82è
+       WtoM(lpResult, MAX_PATH, pw2, -1);
+       TerminateStringM(lpResult, MAX_PATH);
+END_ROUTINE
+       FreeDuplicatedString(pw0);
+       FreeDuplicatedString(pw1);
+       FreeDuplicatedString(pw2);
+       FreeDuplicatedString(pw3);
+       return r;
+}
+
 HINSTANCE ShellExecuteM(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd)
 {
        HINSTANCE r = NULL;
@@ -1224,7 +1331,17 @@ END_ROUTINE
        return r;
 }
 
-
+INT_PTR DialogBoxParamM(HINSTANCE hInstance, LPCSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
+{
+       INT_PTR r = 0;
+       wchar_t* pw0 = NULL;
+START_ROUTINE
+       pw0 = DuplicateMtoW(lpTemplateName, -1);
+       r = DialogBoxParamW(hInstance, pw0, hWndParent, lpDialogFunc, dwInitParam);
+END_ROUTINE
+       FreeDuplicatedString(pw0);
+       return r;
+}
 
 
 
index 45d25cb..474e36d 100644 (file)
 #define GetSaveFileName GetSaveFileNameM
 #undef HtmlHelp
 #define HtmlHelp HtmlHelpM
+#undef CreateProcess
+#define CreateProcess CreateProcessM
+#undef FindExecutable
+#define FindExecutable FindExecutableM
 #undef ShellExecute
 #define ShellExecute ShellExecuteM
 #undef SHBrowseForFolder
@@ -75,6 +79,8 @@
 #define CreateFontIndirect CreateFontIndirectM
 #undef ChooseFont
 #define ChooseFont ChooseFontM
+#undef DialogBoxParam
+#define DialogBoxParam DialogBoxParamM
 
 #undef CreateWindow
 #define CreateWindow(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) CreateWindowEx(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
index 29b6dff..554aa2b 100644 (file)
 #define MSGJPN302              "Master password checker looks broken."\r
 #define MSGJPN303              "Master password has been changed."\r
 #define MSGJPN304              "Speecified master password is not correct.\r\nAre you sure you want to re-enter?\r\nNo memorized FTP password is available if you choose 'NO'"\r
-#define MSGJPN305              "Shift_JIS Kanji Code"\r
-#define MSGJPN306              "UTF-8 Kanji Code"\r
-#define MSGJPN307              "Shift_JIS Kanji Code (Local)"\r
-#define MSGJPN308              "EUC Kanji Code (Local)"\r
-#define MSGJPN309              "JIS Kanji Code (Local)"\r
-#define MSGJPN310              "UTF-8 Kanji Code (Local)"\r
+#define MSGJPN305              "Shift_JIS"\r
+#define MSGJPN306              "UTF-8N"\r
+#define MSGJPN307              "Shift_JIS Kanji Code"\r
+#define MSGJPN308              "UTF-8N Kanji Code"\r
+#define MSGJPN309              "Shift_JIS Kanji Code (Local)"\r
+#define MSGJPN310              "EUC Kanji Code (Local)"\r
+#define MSGJPN311              "JIS Kanji Code (Local)"\r
+#define MSGJPN312              "UTF-8N Kanji Code (Local)"\r
index 3bb87ee..ce44780 100644 (file)
 #define MSGJPN302              "Master password checker looks broken."
 #define MSGJPN303              "Master password has been changed."
 #define MSGJPN304              "Speecified master password is not correct.\r\nAre you sure you want to re-enter?\r\nNo memorized FTP password is available if you choose 'NO'"
-#define MSGJPN305              "Shift_JIS Kanji Code"
-#define MSGJPN306              "UTF-8 Kanji Code"
-#define MSGJPN307              "Shift_JIS Kanji Code (Local)"
-#define MSGJPN308              "EUC Kanji Code (Local)"
-#define MSGJPN309              "JIS Kanji Code (Local)"
-#define MSGJPN310              "UTF-8 Kanji Code (Local)"
+#define MSGJPN305              "Shift_JIS"
+#define MSGJPN306              "UTF-8N"
+#define MSGJPN307              "Shift_JIS Kanji Code"
+#define MSGJPN308              "UTF-8N Kanji Code"
+#define MSGJPN309              "Shift_JIS Kanji Code (Local)"
+#define MSGJPN310              "EUC Kanji Code (Local)"
+#define MSGJPN311              "JIS Kanji Code (Local)"
+#define MSGJPN312              "UTF-8N Kanji Code (Local)"
index 9bd93dd..395d8dd 100644 (file)
 #define MSGJPN302              "\xE7\xA2\xBA\xE8\xAA\x8D\xE7\x94\xA8\xE3\x83\x87\xE3\x83\xBC\xE3\x82\xBF\xE3\x81\x8C\xE5\xA3\x8A\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x82\x8B\xE3\x81\x9F\xE3\x82\x81\xEF\xBC\x8C\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAE\xE6\xAD\xA3\xE5\xBD\x93\xE6\x80\xA7\xE3\x82\x92\xE7\xA2\xBA\xE8\xAA\x8D\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F\xEF\xBC\x8E"\r
 #define MSGJPN303              "\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F"\r
 #define MSGJPN304              "\xE6\x8C\x87\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\x9F\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE7\x99\xBB\xE9\x8C\xB2\xE3\x81\x95\xE3\x82\x8C\xE3\x81\x9F\xE3\x82\x82\xE3\x81\xAE\xE3\x81\xA8\xE4\xB8\x80\xE8\x87\xB4\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xEF\xBC\x8E\r\n\xE5\x86\x8D\xE5\xBA\xA6\xE5\x85\xA5\xE5\x8A\x9B\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99\xE3\x81\x8B\xEF\xBC\x9F\r\n\xE3\x80\x8C\xE3\x81\x84\xE3\x81\x84\xE3\x81\x88\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE3\x81\xB6\xE3\x81\xA8\xE8\xA8\x98\xE6\x86\xB6\xE3\x81\x95\xE3\x82\x8C\xE3\x81\x9F\x46TP\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAF\xE5\x88\xA9\xE7\x94\xA8\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xEF\xBC\x8E"\r
-#define MSGJPN305              "\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\xAFShift_JIS"\r
-#define MSGJPN306              "\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"\r
-#define MSGJPN307              "\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\xAFShift_JIS"\r
-#define MSGJPN308              "\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\xAF\x45UC"\r
-#define MSGJPN309              "\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\xAFJIS"\r
-#define MSGJPN310              "\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"\r
+#define MSGJPN305              "Shift_JIS"\r
+#define MSGJPN306              "UTF-8N"\r
+#define MSGJPN307              "\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\xAFShift_JIS"\r
+#define MSGJPN308              "\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-8N"\r
+#define MSGJPN309              "\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\xAFShift_JIS"\r
+#define MSGJPN310              "\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\xAF\x45UC"\r
+#define MSGJPN311              "\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\xAFJIS"\r
+#define MSGJPN312              "\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-8N"\r
index 9b5e037..1677022 100644 (file)
 #define MSGJPN302              "\8am\94F\97p\83f\81[\83^\82ª\89ó\82ê\82Ä\82¢\82é\82½\82ß\81C\83}\83X\83^\81[\83p\83X\83\8f\81[\83h\82Ì\90³\93\96\90«\82ð\8am\94F\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81D"
 #define MSGJPN303              "\83}\83X\83^\81[\83p\83X\83\8f\81[\83h\82ð\95Ï\8dX\82µ\82Ü\82µ\82½"
 #define MSGJPN304              "\8ew\92è\82³\82ê\82½\83}\83X\83^\81[\83p\83X\83\8f\81[\83h\82ª\93o\98^\82³\82ê\82½\82à\82Ì\82Æ\88ê\92v\82µ\82Ü\82¹\82ñ\81D\r\n\8dÄ\93x\93ü\97Í\82µ\82Ü\82·\82©\81H\r\n\81u\82¢\82¢\82¦\81v\82ð\91I\82Ô\82Æ\8bL\89¯\82³\82ê\82½FTP\83p\83X\83\8f\81[\83h\82Í\97\98\97p\82Å\82«\82Ü\82¹\82ñ\81D"
-#define MSGJPN305              "\83z\83X\83g\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍShift_JIS"
-#define MSGJPN306              "\83z\83X\83g\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍUTF-8"
-#define MSGJPN307              "\83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍShift_JIS"
-#define MSGJPN308              "\83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍEUC"
-#define MSGJPN309              "\83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍJIS"
-#define MSGJPN310              "\83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍUTF-8"
+#define MSGJPN305              "Shift_JIS"
+#define MSGJPN306              "UTF-8N"
+#define MSGJPN307              "\83z\83X\83g\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍShift_JIS"
+#define MSGJPN308              "\83z\83X\83g\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍUTF-8N"
+#define MSGJPN309              "\83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍShift_JIS"
+#define MSGJPN310              "\83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍEUC"
+#define MSGJPN311              "\83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍJIS"
+#define MSGJPN312              "\83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\82ÍUTF-8N"
index b216a40..5949215 100644 (file)
@@ -791,6 +791,10 @@ void EnableUserOpe(void)
                EnableWindow(hWndDirLocal, TRUE);\r
                EnableWindow(hWndDirRemote, TRUE);\r
 \r
+               // \91I\91ð\95s\89Â\82È\8a¿\8e\9a\83R\81[\83h\82Ì\83{\83^\83\93\82ª\95\\8e¦\82³\82ê\82é\83o\83O\82ð\8fC\90³\r
+               HideHostKanjiButton();\r
+               HideLocalKanjiButton();\r
+\r
                HideUI = NO;\r
 \r
                MakeButtonsFocus();\r
@@ -1114,11 +1118,28 @@ void HideHostKanjiButton(void)
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(TRUE, 0));\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0));\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0));\r
-                       if(TmpHostKanjiCode != KANJI_NOCNV)\r
-                               SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));\r
-                       else\r
-                               SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
-                       break;\r
+//                     if(TmpHostKanjiCode != KANJI_NOCNV)\r
+//                             SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));\r
+//                     else\r
+//                             SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
+//                     break;\r
+                       // \8c»\8dÝ\83J\83i\95Ï\8a·\82ÍShift_JIS\81AJIS\81AEUC\8aÔ\82Å\82Ì\82Ý\8b@\94\\82·\82é\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
+                       switch(TmpHostKanjiCode)\r
+                       {\r
+                       case KANJI_SJIS:\r
+                       case KANJI_JIS:\r
+                       case KANJI_EUC:\r
+                               switch(TmpLocalKanjiCode)\r
+                               {\r
+                               case KANJI_SJIS:\r
+                               case KANJI_JIS:\r
+                               case KANJI_EUC:\r
+                                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));\r
+                                       break;\r
+                               }\r
+                               break;\r
+                       }\r
        }\r
        return;\r
 }\r
@@ -1146,11 +1167,11 @@ void SetLocalKanjiCode(int Type)
                        break;\r
 \r
                case MENU_L_KNJ_EUC :\r
-//                     TmpLocalKanjiCode = KANJI_EUC;\r
+                       TmpLocalKanjiCode = KANJI_EUC;\r
                        break;\r
 \r
                case MENU_L_KNJ_JIS :\r
-//                     TmpLocalKanjiCode = KANJI_JIS;\r
+                       TmpLocalKanjiCode = KANJI_JIS;\r
                        break;\r
 \r
                case MENU_L_KNJ_UTF8N :\r
@@ -1172,11 +1193,11 @@ void DispLocalKanjiCode(void)
                        break;\r
 \r
                case KANJI_EUC :\r
-//                     SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));\r
+                       SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));\r
                        break;\r
 \r
                case KANJI_JIS :\r
-//                     SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));\r
+                       SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));\r
                        break;\r
 \r
                case KANJI_UTF8N :\r
@@ -1205,12 +1226,26 @@ void HideLocalKanjiButton(void)
 \r
                default :\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_SJIS, MAKELONG(TRUE, 0));\r
-//                     SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));\r
-//                     SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0));\r
-                       // TODO: \8c»\8dÝEUC\82ÆJIS\82Í\94ñ\91Î\89\9e\r
-                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(FALSE, 0));\r
-                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(FALSE, 0));\r
+                       // \8c»\8dÝ\83J\83i\95Ï\8a·\82ÍShift_JIS\81AJIS\81AEUC\8aÔ\82Å\82Ì\82Ý\8b@\94\\82·\82é\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
+                       switch(TmpHostKanjiCode)\r
+                       {\r
+                       case KANJI_SJIS:\r
+                       case KANJI_JIS:\r
+                       case KANJI_EUC:\r
+                               switch(TmpLocalKanjiCode)\r
+                               {\r
+                               case KANJI_SJIS:\r
+                               case KANJI_JIS:\r
+                               case KANJI_EUC:\r
+                                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));\r
+                                       break;\r
+                               }\r
+                               break;\r
+                       }\r
                        break;\r
        }\r
        return;\r