• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

FFFTPのソースコードです。


Commit MetaInfo

修订版e9287654de8df4b44ca76c58fdee7056c9499b68 (tree)
时间2011-11-12 19:39:24
作者s_kawamoto <s_kawamoto@user...>
Commiters_kawamoto

Log Message

Fix bugs of automatic detection for Kanji code of filenames.

更改概述

差异

Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
--- a/common.h
+++ b/common.h
@@ -921,6 +921,8 @@ typedef struct {
921921 int KanjiCode; /* ホストの漢字コード (KANJI_xxx) */
922922 int KanaCnv; /* 半角カナを全角に変換(YES/NO) */
923923 int NameKanjiCode; /* ファイル名の漢字コード (KANJI_xxx) */
924+ // UTF-8対応
925+ int CurNameKanjiCode; /* 自動判別後のファイル名の漢字コード (KANJI_xxx) */
924926 int NameKanaCnv; /* ファイル名の半角カナを全角に変換(YES/NO) */
925927 int Pasv; /* PASVモード (YES/NO) */
926928 int FireWall; /* FireWallを使う (YES/NO) */
--- a/connect.c
+++ b/connect.c
@@ -106,8 +106,6 @@ static int TryConnect = NO;
106106 static SOCKET CmdCtrlSocket = INVALID_SOCKET;
107107 static SOCKET TrnCtrlSocket = INVALID_SOCKET;
108108 static HOSTDATA CurHost;
109-// UTF-8対応
110-static int TmpNameKanjiCode;
111109
112110 /* 接続中の接続先、SOCKSサーバのアドレス情報を保存しておく */
113111 /* この情報はlistenソケットを取得する際に用いる */
@@ -161,7 +159,7 @@ void ConnectProc(int Type, int Num)
161159 InitPWDcommand();
162160 CopyHostFromList(AskCurrentHost(), &CurHost);
163161 // UTF-8対応
164- TmpNameKanjiCode = CurHost.NameKanjiCode;
162+ CurHost.CurNameKanjiCode = CurHost.NameKanjiCode;
165163
166164 if(ConnectRas(CurHost.Dialup, CurHost.DialupAlways, CurHost.DialupNotify, CurHost.DialEntry) == FFFTP_SUCCESS)
167165 {
@@ -188,13 +186,10 @@ void ConnectProc(int Type, int Num)
188186 TrnCtrlSocket = CmdCtrlSocket;
189187
190188 // UTF-8対応
191- if(TmpNameKanjiCode == KANJI_AUTO)
189+ if(CurHost.CurNameKanjiCode == KANJI_AUTO)
192190 {
193191 if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)
194- {
195- SetCache(999, "");
196- TmpNameKanjiCode = AnalyzeNameKanjiCode(999);
197- }
192+ CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);
198193 }
199194
200195 if(CmdCtrlSocket != INVALID_SOCKET)
@@ -256,7 +251,7 @@ void QuickConnectProc(void)
256251 InitPWDcommand();
257252 CopyDefaultHost(&CurHost);
258253 // UTF-8対応
259- TmpNameKanjiCode = CurHost.NameKanjiCode;
254+ CurHost.CurNameKanjiCode = CurHost.NameKanjiCode;
260255 if(SplitUNCpath(Tmp, CurHost.HostAdrs, CurHost.RemoteInitDir, File, CurHost.UserName, CurHost.PassWord, &CurHost.Port) == FFFTP_SUCCESS)
261256 {
262257 if(strlen(CurHost.UserName) == 0)
@@ -282,13 +277,10 @@ void QuickConnectProc(void)
282277 TrnCtrlSocket = CmdCtrlSocket;
283278
284279 // UTF-8対応
285- if(TmpNameKanjiCode == KANJI_AUTO)
280+ if(CurHost.CurNameKanjiCode == KANJI_AUTO)
286281 {
287282 if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)
288- {
289- SetCache(999, "");
290- TmpNameKanjiCode = AnalyzeNameKanjiCode(999);
291- }
283+ CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);
292284 }
293285
294286 if(CmdCtrlSocket != INVALID_SOCKET)
@@ -449,7 +441,7 @@ void DirectConnectProc(char *unc, int Kanji, int Kana, int Fkanji, int TrMode)
449441 CurHost.NameKanjiCode = Fkanji;
450442 CurHost.KanaCnv = YES; /* とりあえず */
451443 // UTF-8対応
452- TmpNameKanjiCode = CurHost.NameKanjiCode;
444+ CurHost.CurNameKanjiCode = CurHost.NameKanjiCode;
453445
454446 SetHostKanaCnvImm(CurHost.KanaCnv);
455447 SetHostKanjiCodeImm(CurHost.KanjiCode);
@@ -469,13 +461,10 @@ void DirectConnectProc(char *unc, int Kanji, int Kana, int Fkanji, int TrMode)
469461 TrnCtrlSocket = CmdCtrlSocket;
470462
471463 // UTF-8対応
472- if(TmpNameKanjiCode == KANJI_AUTO)
464+ if(CurHost.CurNameKanjiCode == KANJI_AUTO)
473465 {
474466 if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)
475- {
476- SetCache(999, "");
477- TmpNameKanjiCode = AnalyzeNameKanjiCode(999);
478- }
467+ CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);
479468 }
480469
481470 if(CmdCtrlSocket != INVALID_SOCKET)
@@ -536,7 +525,7 @@ void HistoryConnectProc(int MenuCmd)
536525 InitPWDcommand();
537526 CopyHistoryToHost(&Hist, &CurHost);
538527 // UTF-8対応
539- TmpNameKanjiCode = CurHost.NameKanjiCode;
528+ CurHost.CurNameKanjiCode = CurHost.NameKanjiCode;
540529
541530 if(ConnectRas(CurHost.Dialup, CurHost.DialupAlways, CurHost.DialupNotify, CurHost.DialEntry) == FFFTP_SUCCESS)
542531 {
@@ -560,13 +549,10 @@ void HistoryConnectProc(int MenuCmd)
560549 TrnCtrlSocket = CmdCtrlSocket;
561550
562551 // UTF-8対応
563- if(TmpNameKanjiCode == KANJI_AUTO)
552+ if(CurHost.CurNameKanjiCode == KANJI_AUTO)
564553 {
565554 if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)
566- {
567- SetCache(999, "");
568- TmpNameKanjiCode = AnalyzeNameKanjiCode(999);
569- }
555+ CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);
570556 }
571557
572558 if(CmdCtrlSocket != INVALID_SOCKET)
@@ -719,7 +705,7 @@ int AskHostNameKanji(void)
719705 // CopyHostFromListInConnect(AskCurrentHost(), &CurHost);
720706 //
721707 // return(CurHost.NameKanjiCode);
722- return(TmpNameKanjiCode);
708+ return(CurHost.CurNameKanjiCode);
723709 }
724710
725711
@@ -1053,6 +1039,8 @@ int ReConnectTrnSkt(SOCKET *Skt, int *CancelCheckWork)
10531039 HostData.UseFTPIS = NO;
10541040 if(HostData.CryptMode != CRYPT_SFTP)
10551041 HostData.UseSFTP = NO;
1042+ // UTF-8対応
1043+ HostData.CurNameKanjiCode = HostData.NameKanjiCode;
10561044 // 暗号化通信対応
10571045 // 同時接続対応
10581046 // if((*Skt = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security)) != INVALID_SOCKET)
@@ -1625,10 +1613,10 @@ static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char
16251613 HostData->Feature |= FEATURE_EPRT | FEATURE_EPSV;
16261614 }
16271615 // UTF-8対応
1628- if(TmpNameKanjiCode == KANJI_AUTO && (HostData->Feature & FEATURE_UTF8))
1616+ if(HostData->CurNameKanjiCode == KANJI_AUTO && (HostData->Feature & FEATURE_UTF8))
16291617 {
16301618 if((Sts = command(ContSock, Reply, CancelCheckWork, "OPTS UTF8 ON")) == 200)
1631- TmpNameKanjiCode = KANJI_UTF8N;
1619+ HostData->CurNameKanjiCode = KANJI_UTF8N;
16321620 }
16331621 }
16341622 }
--- a/filelist.c
+++ b/filelist.c
@@ -5507,6 +5507,7 @@ int AnalyzeNameKanjiCode(int Num)
55075507 {
55085508 if((ListType = AnalizeFileInfo(Str)) != LIST_UNKNOWN)
55095509 {
5510+ strcpy(Name, "");
55105511 Node = ResolvFileInfo(Str, ListType | LIST_RAW_NAME, Name, &Size, &Time, &Attr, Owner, &Link, &InfoExist);
55115512 p = Name;
55125513 while(*p != '\0')
--- a/hostman.c
+++ b/hostman.c
@@ -1298,6 +1298,8 @@ void CopyDefaultHost(HOSTDATA *Set)
12981298 Set->KanjiCode = KANJI_NOCNV;
12991299 Set->KanaCnv = YES;
13001300 Set->NameKanjiCode = KANJI_NOCNV;
1301+ // UTF-8対応
1302+ Set->CurNameKanjiCode = KANJI_NOCNV;
13011303 Set->NameKanaCnv = NO;
13021304 Set->Pasv = YES;
13031305 Set->FireWall = NO;