OSDN Git Service

Change to specify explicitly code pages.
[ffftp/ffftp.git] / getput.c
index 7dc924c..5cf007a 100644 (file)
--- a/getput.c
+++ b/getput.c
@@ -84,9 +84,9 @@ static void DispTransPacket(TRANSPACKET *Pkt);
 static void EraseTransFileList(void);\r
 static ULONG WINAPI TransferThread(void *Dummy);\r
 static int MakeNonFullPath(TRANSPACKET *Pkt, char *CurDir, char *Tmp);\r
-static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
-static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
-static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork);\r
+static int DownloadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
+static int DownloadPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
+static int DownloadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork);\r
 static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode);\r
 // 再転送対応\r
 //static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname);\r
@@ -98,10 +98,10 @@ static int SetDownloadResume(TRANSPACKET *Pkt, int ProcMode, LONGLONG Size, int
 // 64ビット対応\r
 //static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
 static INT_PTR CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
-static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt);\r
-static int UpLoadNonPassive(TRANSPACKET *Pkt);\r
-static int UpLoadPassive(TRANSPACKET *Pkt);\r
-static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt);\r
+static int DoUpload(SOCKET cSkt, TRANSPACKET *Pkt);\r
+static int UploadNonPassive(TRANSPACKET *Pkt);\r
+static int UploadPassive(TRANSPACKET *Pkt);\r
+static int UploadFile(TRANSPACKET *Pkt, SOCKET dSkt);\r
 // 同時接続対応\r
 //static int TermCodeConvAndSend(TERMCODECONVINFO *tInfo, SOCKET Skt, char *Data, int Size, int Ascii);\r
 static int TermCodeConvAndSend(TERMCODECONVINFO *tInfo, SOCKET Skt, char *Data, int Size, int Ascii, int *CancelCheckWork);\r
@@ -182,6 +182,8 @@ extern int MirUpDelNotify;
 extern int MirDownDelNotify;\r
 extern int FolderAttr;\r
 extern int FolderAttrNum;\r
+// 同時接続対応\r
+extern int SendQuit;\r
 \r
 \r
 /*----- ファイル転送スレッドを起動する ----------------------------------------\r
@@ -791,7 +793,7 @@ static ULONG WINAPI TransferThread(void *Dummy)
                                        if(timeGetTime() - LastUsed > 60000 || NewCmdSkt == INVALID_SOCKET)\r
                                        {\r
                                                ReleaseMutex(hListAccMutex);\r
-                                               SendData(TrnSkt, "QUIT\r\n", 6, 0, &Canceled[ThreadCount]);\r
+                                               DoQUIT(TrnSkt, &Canceled[ThreadCount]);\r
                                                DoClose(TrnSkt);\r
                                                TrnSkt = INVALID_SOCKET;\r
 //                                             WaitForSingleObject(hListAccMutex, INFINITE);\r
@@ -882,11 +884,11 @@ static ULONG WINAPI TransferThread(void *Dummy)
                                                }\r
 \r
                                                Down = YES;\r
-//                                             if(DoDownLoad(AskTrnCtrlSkt(), TransPacketBase, NO) == 429)\r
+//                                             if(DoDownload(AskTrnCtrlSkt(), TransPacketBase, NO) == 429)\r
 //                                             {\r
 //                                                     if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
-//                                                             DoDownLoad(AskTrnCtrlSkt(), TransPacketBase, NO, &Canceled);\r
-                                                               DoDownLoad(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]);\r
+//                                                             DoDownload(AskTrnCtrlSkt(), TransPacketBase, NO, &Canceled);\r
+                                                               DoDownload(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]);\r
 //                                             }\r
                                        }\r
                                }\r
@@ -904,12 +906,20 @@ static ULONG WINAPI TransferThread(void *Dummy)
                                if(MakeNonFullPath(Pos, CurDir[Pos->ThreadCount], Tmp) == FFFTP_SUCCESS)\r
                                {\r
                                        Up = YES;\r
-//                                     if(DoUpLoad(AskTrnCtrlSkt(), TransPacketBase) == 429)\r
+//                                     if(DoUpload(AskTrnCtrlSkt(), TransPacketBase) == 429)\r
 //                                     {\r
 //                                             if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
-//                                                     DoUpLoad(AskTrnCtrlSkt(), TransPacketBase);\r
-                                                       DoUpLoad(TrnSkt, Pos);\r
+//                                                     DoUpload(AskTrnCtrlSkt(), TransPacketBase);\r
+                                                       DoUpload(TrnSkt, Pos);\r
 //                                     }\r
+\r
+                                       // ホスト側の日時設定\r
+                                       /* ファイルのタイムスタンプを合わせる */\r
+                                       if((SaveTimeStamp == YES) &&\r
+                                          ((Pos->Time.dwLowDateTime != 0) || (Pos->Time.dwHighDateTime != 0)))\r
+                                       {\r
+                                               DoMFMT(TrnSkt, Pos->RemoteFile, &Pos->Time, &Canceled[Pos->ThreadCount]);\r
+                                       }\r
                                }\r
                                // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
                                ReleaseMutex(hListAccMutex);\r
@@ -1132,9 +1142,11 @@ static ULONG WINAPI TransferThread(void *Dummy)
                                {\r
                                        for(i = 0; i < MAX_DATA_CONNECTION; i++)\r
                                                Canceled[i] = YES;\r
+                                       if(Pos != NULL)\r
+                                               strcpy(Pos->Cmd, "");\r
+                                       Pos = NULL;\r
                                        EraseTransFileList();\r
                                        GoExit = YES;\r
-                                       Pos = NULL;\r
                                }\r
                                else\r
                                {\r
@@ -1297,7 +1309,7 @@ static int MakeNonFullPath(TRANSPACKET *Pkt, char *Cur, char *Tmp)
 *              からも呼ばれる。メインのスレッドから呼ばれる時は Pkt->hWndTrans == NULL。\r
 *----------------------------------------------------------------------------*/\r
 \r
-int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)\r
+int DoDownload(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)\r
 {\r
        int iRetCode;\r
        char Reply[ERR_MSG_LEN+7];\r
@@ -1339,9 +1351,9 @@ int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)
                        else if(BackgrndMessageProc() == NO)\r
                        {\r
                                if(AskPasvMode() != YES)\r
-                                       iRetCode = DownLoadNonPassive(Pkt, CancelCheckWork);\r
+                                       iRetCode = DownloadNonPassive(Pkt, CancelCheckWork);\r
                                else\r
-                                       iRetCode = DownLoadPassive(Pkt, CancelCheckWork);\r
+                                       iRetCode = DownloadPassive(Pkt, CancelCheckWork);\r
                        }\r
                        else\r
                                iRetCode = 500;\r
@@ -1370,7 +1382,7 @@ int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)
 *              int 応答コード\r
 *----------------------------------------------------------------------------*/\r
 \r
-static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)\r
+static int DownloadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)\r
 {\r
        int iRetCode;\r
        int iLength;\r
@@ -1444,16 +1456,16 @@ static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
                                        // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
                                        ReleaseMutex(hListAccMutex);\r
                                        // FTPS対応\r
-//                                     iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+//                                     iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
                                        if(IsSSLAttached(Pkt->ctrl_skt))\r
                                        {\r
                                                if(AttachSSL(data_socket, Pkt->ctrl_skt, CancelCheckWork))\r
-                                                       iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+                                                       iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
                                                else\r
                                                        iRetCode = 500;\r
                                        }\r
                                        else\r
-                                               iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+                                               iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
 //                                     data_socket = DoClose(data_socket);\r
                                }\r
                        }\r
@@ -1489,7 +1501,7 @@ static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
 *              int 応答コード\r
 *----------------------------------------------------------------------------*/\r
 \r
-static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)\r
+static int DownloadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)\r
 {\r
        int iRetCode;\r
        SOCKET data_socket = INVALID_SOCKET;   // data channel socket\r
@@ -1537,16 +1549,16 @@ static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
                                                // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
                                                ReleaseMutex(hListAccMutex);\r
                                                // FTPS対応\r
-//                                             iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+//                                             iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
                                                if(IsSSLAttached(Pkt->ctrl_skt))\r
                                                {\r
                                                        if(AttachSSL(data_socket, Pkt->ctrl_skt, CancelCheckWork))\r
-                                                               iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+                                                               iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
                                                        else\r
                                                                iRetCode = 500;\r
                                                }\r
                                                else\r
-                                                       iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
+                                                       iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
 //                                             data_socket = DoClose(data_socket);\r
                                        }\r
                                        else\r
@@ -1596,7 +1608,7 @@ static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
 *                      ダイアログを出さない場合、このルーチンからDispDownloadSize()を呼ぶ\r
 *----------------------------------------------------------------------------*/\r
 \r
-static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork)\r
+static int DownloadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork)\r
 {\r
        int iNumBytes;\r
        char Buf[BUFSIZE];\r
@@ -2563,7 +2575,7 @@ static INT_PTR CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam,
 *              int 応答コード\r
 *----------------------------------------------------------------------------*/\r
 \r
-static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt)\r
+static int DoUpload(SOCKET cSkt, TRANSPACKET *Pkt)\r
 {\r
        int iRetCode;\r
        char Reply[ERR_MSG_LEN+7];\r
@@ -2597,9 +2609,9 @@ static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt)
                                else if(BackgrndMessageProc() == NO)\r
                                {\r
                                        if(AskPasvMode() != YES)\r
-                                               iRetCode = UpLoadNonPassive(Pkt);\r
+                                               iRetCode = UploadNonPassive(Pkt);\r
                                        else\r
-                                               iRetCode = UpLoadPassive(Pkt);\r
+                                               iRetCode = UploadPassive(Pkt);\r
                                }\r
                                else\r
                                        iRetCode = 500;\r
@@ -2644,7 +2656,7 @@ static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt)
 *              int 応答コード\r
 *----------------------------------------------------------------------------*/\r
 \r
-static int UpLoadNonPassive(TRANSPACKET *Pkt)\r
+static int UploadNonPassive(TRANSPACKET *Pkt)\r
 {\r
        int iRetCode;\r
        int iLength;\r
@@ -2739,16 +2751,16 @@ static int UpLoadNonPassive(TRANSPACKET *Pkt)
                                // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
                                ReleaseMutex(hListAccMutex);\r
                                // FTPS対応\r
-//                             iRetCode = UpLoadFile(Pkt, data_socket);\r
+//                             iRetCode = UploadFile(Pkt, data_socket);\r
                                if(IsSSLAttached(Pkt->ctrl_skt))\r
                                {\r
                                        if(AttachSSL(data_socket, Pkt->ctrl_skt, &Canceled[Pkt->ThreadCount]))\r
-                                               iRetCode = UpLoadFile(Pkt, data_socket);\r
+                                               iRetCode = UploadFile(Pkt, data_socket);\r
                                        else\r
                                                iRetCode = 500;\r
                                }\r
                                else\r
-                                       iRetCode = UpLoadFile(Pkt, data_socket);\r
+                                       iRetCode = UploadFile(Pkt, data_socket);\r
                                data_socket = DoClose(data_socket);\r
                        }\r
                }\r
@@ -2781,7 +2793,7 @@ static int UpLoadNonPassive(TRANSPACKET *Pkt)
 *              int 応答コード\r
 *----------------------------------------------------------------------------*/\r
 \r
-static int UpLoadPassive(TRANSPACKET *Pkt)\r
+static int UploadPassive(TRANSPACKET *Pkt)\r
 {\r
        int iRetCode;\r
        SOCKET data_socket = INVALID_SOCKET;   // data channel socket\r
@@ -2852,16 +2864,16 @@ static int UpLoadPassive(TRANSPACKET *Pkt)
                                        // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
                                        ReleaseMutex(hListAccMutex);\r
                                        // FTPS対応\r
-//                                     iRetCode = UpLoadFile(Pkt, data_socket);\r
+//                                     iRetCode = UploadFile(Pkt, data_socket);\r
                                        if(IsSSLAttached(Pkt->ctrl_skt))\r
                                        {\r
                                                if(AttachSSL(data_socket, Pkt->ctrl_skt, &Canceled[Pkt->ThreadCount]))\r
-                                                       iRetCode = UpLoadFile(Pkt, data_socket);\r
+                                                       iRetCode = UploadFile(Pkt, data_socket);\r
                                                else\r
                                                        iRetCode = 500;\r
                                        }\r
                                        else\r
-                                               iRetCode = UpLoadFile(Pkt, data_socket);\r
+                                               iRetCode = UploadFile(Pkt, data_socket);\r
 \r
                                        data_socket = DoClose(data_socket);\r
                                }\r
@@ -2910,7 +2922,7 @@ static int UpLoadPassive(TRANSPACKET *Pkt)
 *              転送ダイアログを出さないでアップロードすることはない\r
 *----------------------------------------------------------------------------*/\r
 \r
-static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)\r
+static int UploadFile(TRANSPACKET *Pkt, SOCKET dSkt)\r
 {\r
        DWORD iNumBytes;\r
        HANDLE iFileHandle;\r
@@ -4047,7 +4059,7 @@ static int GetAdrsAndPortIPv6(SOCKET Skt, char *Str, char *Adrs, int *Port, int
        char *Pos;\r
        char *Btm;\r
        int Sts;\r
-       int i;\r
+//     int i;\r
        struct sockaddr_in6 SockAddr;\r
 \r
        Sts = FFFTP_FAIL;\r
@@ -4076,8 +4088,9 @@ static int GetAdrsAndPortIPv6(SOCKET Skt, char *Str, char *Adrs, int *Port, int
                                                }\r
                                                else\r
                                                {\r
-                                                       i = sizeof(SockAddr);\r
-                                                       if(getpeername(Skt, (struct sockaddr*)&SockAddr, &i) != SOCKET_ERROR)\r
+//                                                     i = sizeof(SockAddr);\r
+//                                                     if(getpeername(Skt, (struct sockaddr*)&SockAddr, &i) != SOCKET_ERROR)\r
+                                                       if(GetAsyncTableDataIPv6(Skt, &SockAddr, NULL) == YES)\r
                                                                AddressToStringIPv6(Adrs, &SockAddr.sin6_addr);\r
                                                }\r
 \r