OSDN Git Service

Fix bugs of InitCmd and simultaneous connection.
authorYuji Tanaka <chibi_honu@users.sourceforge.jp>
Thu, 26 Jan 2012 03:37:07 +0000 (12:37 +0900)
committerYuji Tanaka <chibi_honu@users.sourceforge.jp>
Thu, 26 Jan 2012 03:37:07 +0000 (12:37 +0900)
common.h
connect.c
ftpproc.c
remote.c

index 877cac6..fadb7ea 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1599,7 +1599,9 @@ int DoSIZE(SOCKET cSkt, char *Path, LONGLONG *Size, int *CancelCheckWork);
 // 同時接続対応\r
 //int DoMDTM(char *Path, FILETIME *Time);\r
 int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork);\r
-int DoQUOTE(char *CmdStr);\r
+// 同時接続対応\r
+//int DoQUOTE(char *CmdStr);\r
+int DoQUOTE(SOCKET cSkt, char *CmdStr);\r
 SOCKET DoClose(SOCKET Sock);\r
 int DoQUIT(SOCKET ctrl_skt);\r
 int DoDirListCmdSkt(char *AddOpt, char *Path, int Num, int *CancelCheckWork);\r
index 12737bb..66f7a33 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -57,7 +57,9 @@
 // 64ビット対応\r
 //static BOOL CALLBACK QuickConDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
 static INT_PTR CALLBACK QuickConDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
-static int SendInitCommand(char *Cmd);\r
+// 同時接続対応\r
+//static int SendInitCommand(char *Cmd);\r
+static int SendInitCommand(SOCKET Socket, char *Cmd);\r
 static void AskUseFireWall(char *Host, int *Fire, int *Pasv, int *List);\r
 static void SaveCurrentSetToHistory(void);\r
 static int ReConnectSkt(SOCKET *Skt);\r
@@ -238,7 +240,7 @@ void ConnectProc(int Type, int Num)
                                DispWindowTitle();\r
                                SoundPlay(SND_CONNECT);\r
 \r
-                               SendInitCommand(CurHost.InitCmd);\r
+                               SendInitCommand(CmdCtrlSocket, CurHost.InitCmd);\r
 \r
                                if(strlen(CurHost.LocalInitDir) > 0)\r
                                {\r
@@ -609,7 +611,7 @@ void HistoryConnectProc(int MenuCmd)
                                DispWindowTitle();\r
                                SoundPlay(SND_CONNECT);\r
 \r
-                               SendInitCommand(CurHost.InitCmd);\r
+                               SendInitCommand(CmdCtrlSocket, CurHost.InitCmd);\r
 \r
                                DoLocalCWD(CurHost.LocalInitDir);\r
                                GetLocalDirForWnd();\r
@@ -648,7 +650,7 @@ void HistoryConnectProc(int MenuCmd)
 *                      cmd1\r\ncmd2\r\n\0\r
 *----------------------------------------------------------------------------*/\r
 \r
-static int SendInitCommand(char *Cmd)\r
+static int SendInitCommand(SOCKET Socket, char *Cmd)\r
 {\r
        char Tmp[INITCMD_LEN+1];\r
        char *Pos;\r
@@ -659,7 +661,7 @@ static int SendInitCommand(char *Cmd)
                if((Pos = strchr(Tmp, '\r')) != NULL)\r
                        *Pos = NUL;\r
                if(strlen(Tmp) > 0)\r
-                       DoQUOTE(Tmp);\r
+                       DoQUOTE(Socket, Tmp);\r
 \r
                if((Cmd = strchr(Cmd, '\n')) != NULL)\r
                        Cmd++;\r
@@ -1106,7 +1108,7 @@ int ReConnectTrnSkt(SOCKET *Skt, int *CancelCheckWork)
 //     if((*Skt = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security)) != INVALID_SOCKET)\r
        if((*Skt = DoConnect(&HostData, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security, CancelCheckWork)) != INVALID_SOCKET)\r
        {\r
-               SendInitCommand(CurHost.InitCmd);\r
+               SendInitCommand(*Skt, CurHost.InitCmd);\r
 //             AskRemoteCurDir(Path, FMAX_PATH);\r
 //             DoCWD(Path, YES, YES, YES);\r
                Sts = FFFTP_SUCCESS;\r
@@ -1148,7 +1150,7 @@ static int ReConnectSkt(SOCKET *Skt)
 //     if((*Skt = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security)) != INVALID_SOCKET)\r
        if((*Skt = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security, &CancelFlg)) != INVALID_SOCKET)\r
        {\r
-               SendInitCommand(CurHost.InitCmd);\r
+               SendInitCommand(*Skt, CurHost.InitCmd);\r
                AskRemoteCurDir(Path, FMAX_PATH);\r
                DoCWD(Path, YES, YES, YES);\r
                Sts = FFFTP_SUCCESS;\r
@@ -1358,6 +1360,13 @@ int AskRealHostType(void)
 \r
 int SetOSS(int wkOss)\r
 {\r
+       if(Oss != wkOss) {\r
+               if (wkOss == YES) {\r
+                       strcpy(CurHost.InitCmd, "OSS");\r
+               } else {\r
+                       strcpy(CurHost.InitCmd, "GUARDIAN");\r
+               }\r
+       }\r
        Oss = wkOss;\r
        return(Oss);\r
 }\r
index 8963604..7da86d9 100644 (file)
--- a/ftpproc.c
+++ b/ftpproc.c
@@ -3073,7 +3073,9 @@ void SomeCmdProc(void)
 \r
                        if(InputDialogBox(somecmd_dlg, GetMainHwnd(), NULL, Cmd, 81, &Tmp, IDH_HELP_TOPIC_0000023) == YES)\r
                        {\r
-                               DoQUOTE(Cmd);\r
+                               // 同時接続対応\r
+                               //DoQUOTE(Cmd);\r
+                               DoQUOTE(AskCmdCtrlSkt(), Cmd);\r
                        }\r
                        EnableUserOpe();\r
                }\r
index bc80b07..4f76f5d 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -468,11 +468,14 @@ int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork)
 *              int 応答コードの1桁目\r
 *----------------------------------------------------------------------------*/\r
 \r
-int DoQUOTE(char *CmdStr)\r
+// 同時接続対応\r
+//int DoQUOTE(char *CmdStr)\r
+int DoQUOTE(SOCKET cSkt, char *CmdStr)\r
 {\r
-       int Sts;\r
+       int Sts, CancelCheckWork;\r
 \r
-       Sts = CommandProcCmd(NULL, "%s", CmdStr);\r
+       CancelCheckWork = NO;\r
+       Sts = CommandProcTrn(cSkt, NULL, &CancelCheckWork, "%s", CmdStr);\r
 \r
        if(Sts/100 >= FTP_CONTINUE)\r
                SoundPlay(SND_ERROR);\r
@@ -701,10 +704,10 @@ void SwitchOSSProc(void)
 \r
        /* DoPWD でノード名の \ を保存するために OSSフラグも変更する */\r
        if(AskOSS() == YES) {\r
-               DoQUOTE("GUARDIAN");\r
+               DoQUOTE(AskCmdCtrlSkt(), "GUARDIAN");\r
                SetOSS(NO);\r
        } else {\r
-               DoQUOTE("OSS");\r
+               DoQUOTE(AskCmdCtrlSkt(), "OSS");\r
                SetOSS(YES);\r
        }\r
        /* Current Dir 再取得 */\r
@@ -721,7 +724,9 @@ void SwitchOSSProc(void)
 /*----- リモート側へコマンドを送りリプライを待つ(転送ソケット)---------------\r
 *\r
 *      Parameter\r
+*              SOCKET cSkt : ソケット\r
 *              char *Reply : リプライのコピー先 (NULL=コピーしない)\r
+*              int *CancelCheckWork :\r
 *              char *fmt : フォーマット文字列\r
 *              ... : パラメータ\r
 *\r