OSDN Git Service

Fix bugs of automatic detection for Kanji code of filenames.
[ffftp/ffftp.git] / connect.c
index dfbf5e0..38284b1 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -106,8 +106,6 @@ static int TryConnect = NO;
 static SOCKET CmdCtrlSocket = INVALID_SOCKET;\r
 static SOCKET TrnCtrlSocket = INVALID_SOCKET;\r
 static HOSTDATA CurHost;\r
-// UTF-8対応\r
-static int TmpNameKanjiCode;\r
 \r
 /* 接続中の接続先、SOCKSサーバのアドレス情報を保存しておく */\r
 /* この情報はlistenソケットを取得する際に用いる */\r
@@ -161,7 +159,7 @@ void ConnectProc(int Type, int Num)
                InitPWDcommand();\r
                CopyHostFromList(AskCurrentHost(), &CurHost);\r
                // UTF-8対応\r
-               TmpNameKanjiCode = CurHost.NameKanjiCode;\r
+               CurHost.CurNameKanjiCode = CurHost.NameKanjiCode;\r
 \r
                if(ConnectRas(CurHost.Dialup, CurHost.DialupAlways, CurHost.DialupNotify, CurHost.DialEntry) == FFFTP_SUCCESS)\r
                {\r
@@ -188,13 +186,10 @@ void ConnectProc(int Type, int Num)
                        TrnCtrlSocket = CmdCtrlSocket;\r
 \r
                        // UTF-8対応\r
-                       if(TmpNameKanjiCode == KANJI_AUTO)\r
+                       if(CurHost.CurNameKanjiCode == KANJI_AUTO)\r
                        {\r
                                if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
-                               {\r
-                                       SetCache(999, "");\r
-                                       TmpNameKanjiCode = AnalyzeNameKanjiCode(999);\r
-                               }\r
+                                       CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);\r
                        }\r
 \r
                        if(CmdCtrlSocket != INVALID_SOCKET)\r
@@ -256,7 +251,7 @@ void QuickConnectProc(void)
                InitPWDcommand();\r
                CopyDefaultHost(&CurHost);\r
                // UTF-8対応\r
-               TmpNameKanjiCode = CurHost.NameKanjiCode;\r
+               CurHost.CurNameKanjiCode = CurHost.NameKanjiCode;\r
                if(SplitUNCpath(Tmp, CurHost.HostAdrs, CurHost.RemoteInitDir, File, CurHost.UserName, CurHost.PassWord, &CurHost.Port) == FFFTP_SUCCESS)\r
                {\r
                        if(strlen(CurHost.UserName) == 0)\r
@@ -282,13 +277,10 @@ void QuickConnectProc(void)
                        TrnCtrlSocket = CmdCtrlSocket;\r
 \r
                        // UTF-8対応\r
-                       if(TmpNameKanjiCode == KANJI_AUTO)\r
+                       if(CurHost.CurNameKanjiCode == KANJI_AUTO)\r
                        {\r
                                if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
-                               {\r
-                                       SetCache(999, "");\r
-                                       TmpNameKanjiCode = AnalyzeNameKanjiCode(999);\r
-                               }\r
+                                       CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);\r
                        }\r
 \r
                        if(CmdCtrlSocket != INVALID_SOCKET)\r
@@ -449,7 +441,7 @@ void DirectConnectProc(char *unc, int Kanji, int Kana, int Fkanji, int TrMode)
                CurHost.NameKanjiCode = Fkanji;\r
                CurHost.KanaCnv = YES;                  /* とりあえず */\r
                // UTF-8対応\r
-               TmpNameKanjiCode = CurHost.NameKanjiCode;\r
+               CurHost.CurNameKanjiCode = CurHost.NameKanjiCode;\r
 \r
                SetHostKanaCnvImm(CurHost.KanaCnv);\r
                SetHostKanjiCodeImm(CurHost.KanjiCode);\r
@@ -469,13 +461,10 @@ void DirectConnectProc(char *unc, int Kanji, int Kana, int Fkanji, int TrMode)
                TrnCtrlSocket = CmdCtrlSocket;\r
 \r
                // UTF-8対応\r
-               if(TmpNameKanjiCode == KANJI_AUTO)\r
+               if(CurHost.CurNameKanjiCode == KANJI_AUTO)\r
                {\r
                        if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
-                       {\r
-                               SetCache(999, "");\r
-                               TmpNameKanjiCode = AnalyzeNameKanjiCode(999);\r
-                       }\r
+                               CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);\r
                }\r
 \r
                if(CmdCtrlSocket != INVALID_SOCKET)\r
@@ -536,7 +525,7 @@ void HistoryConnectProc(int MenuCmd)
                InitPWDcommand();\r
                CopyHistoryToHost(&Hist, &CurHost);\r
                // UTF-8対応\r
-               TmpNameKanjiCode = CurHost.NameKanjiCode;\r
+               CurHost.CurNameKanjiCode = CurHost.NameKanjiCode;\r
 \r
                if(ConnectRas(CurHost.Dialup, CurHost.DialupAlways, CurHost.DialupNotify, CurHost.DialEntry) == FFFTP_SUCCESS)\r
                {\r
@@ -560,13 +549,10 @@ void HistoryConnectProc(int MenuCmd)
                        TrnCtrlSocket = CmdCtrlSocket;\r
 \r
                        // UTF-8対応\r
-                       if(TmpNameKanjiCode == KANJI_AUTO)\r
+                       if(CurHost.CurNameKanjiCode == KANJI_AUTO)\r
                        {\r
                                if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
-                               {\r
-                                       SetCache(999, "");\r
-                                       TmpNameKanjiCode = AnalyzeNameKanjiCode(999);\r
-                               }\r
+                                       CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);\r
                        }\r
 \r
                        if(CmdCtrlSocket != INVALID_SOCKET)\r
@@ -719,7 +705,7 @@ int AskHostNameKanji(void)
 //             CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
 //\r
 //     return(CurHost.NameKanjiCode);\r
-       return(TmpNameKanjiCode);\r
+       return(CurHost.CurNameKanjiCode);\r
 }\r
 \r
 \r
@@ -1053,6 +1039,8 @@ int ReConnectTrnSkt(SOCKET *Skt, int *CancelCheckWork)
                HostData.UseFTPIS = NO;\r
        if(HostData.CryptMode != CRYPT_SFTP)\r
                HostData.UseSFTP = NO;\r
+       // UTF-8対応\r
+       HostData.CurNameKanjiCode = HostData.NameKanjiCode;\r
        // 暗号化通信対応\r
        // 同時接続対応\r
 //     if((*Skt = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security)) != INVALID_SOCKET)\r
@@ -1625,10 +1613,10 @@ static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char
                                        HostData->Feature |= FEATURE_EPRT | FEATURE_EPSV;\r
                        }\r
                        // UTF-8対応\r
-                       if(TmpNameKanjiCode == KANJI_AUTO && (HostData->Feature & FEATURE_UTF8))\r
+                       if(HostData->CurNameKanjiCode == KANJI_AUTO && (HostData->Feature & FEATURE_UTF8))\r
                        {\r
                                if((Sts = command(ContSock, Reply, CancelCheckWork, "OPTS UTF8 ON")) == 200)\r
-                                       TmpNameKanjiCode = KANJI_UTF8N;\r
+                                       HostData->CurNameKanjiCode = KANJI_UTF8N;\r
                        }\r
                }\r
        }\r