OSDN Git Service

Update PEM file.
[ffftp/ffftp.git] / ftpproc.c
index 94ad8a2..09f376c 100644 (file)
--- a/ftpproc.c
+++ b/ftpproc.c
@@ -872,6 +872,14 @@ static int CheckLocalFile(TRANSPACKET *Pkt)
                                else\r
                                        Ret = EXIST_IGNORE;\r
                        }\r
+                       // 同じ名前のファイルの処理方法追加\r
+                       if(Ret == EXIST_LARGE)\r
+                       {\r
+                               if(MakeLongLong(Find.nFileSizeHigh, Find.nFileSizeLow) < Pkt->Size)\r
+                                       Ret = EXIST_OVW;\r
+                               else\r
+                                       Ret = EXIST_IGNORE;\r
+                       }\r
                }\r
        }\r
        return(Ret);\r
@@ -895,11 +903,19 @@ static int CheckLocalFile(TRANSPACKET *Pkt)
 static INT_PTR CALLBACK DownExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
 {\r
        static TRANSPACKET *Pkt;\r
+       // 同じ名前のファイルの処理方法追加\r
+//     static const RADIOBUTTON DownExistButton[] = {\r
+//             { DOWN_EXIST_OVW, EXIST_OVW },\r
+//             { DOWN_EXIST_NEW, EXIST_NEW },\r
+//             { DOWN_EXIST_RESUME, EXIST_RESUME },\r
+//             { DOWN_EXIST_IGNORE, EXIST_IGNORE }\r
+//     };\r
        static const RADIOBUTTON DownExistButton[] = {\r
                { DOWN_EXIST_OVW, EXIST_OVW },\r
                { DOWN_EXIST_NEW, EXIST_NEW },\r
                { DOWN_EXIST_RESUME, EXIST_RESUME },\r
-               { DOWN_EXIST_IGNORE, EXIST_IGNORE }\r
+               { DOWN_EXIST_IGNORE, EXIST_IGNORE },\r
+               { DOWN_EXIST_LARGE, EXIST_LARGE }\r
        };\r
        #define DOWNEXISTBUTTONS        (sizeof(DownExistButton)/sizeof(RADIOBUTTON))\r
 \r
@@ -1158,7 +1174,9 @@ void UploadListProc(int ChName, int All)
 \r
                                strcpy(Pkt.Cmd, "STOR ");\r
                                Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());\r
-                               Pkt.Size = 0;\r
+                               // バグ修正\r
+//                             Pkt.Size = 0;\r
+                               Pkt.Size = Pos->Size;\r
                                Pkt.Time = Pos->Time;\r
                                Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);\r
                                Pkt.KanjiCode = AskHostKanjiCode();\r
@@ -1336,7 +1354,9 @@ void UploadDragProc(WPARAM wParam)
 \r
                                strcpy(Pkt.Cmd, "STOR ");\r
                                Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());\r
-                               Pkt.Size = 0;\r
+                               // バグ修正\r
+//                             Pkt.Size = 0;\r
+                               Pkt.Size = Pos->Size;\r
                                Pkt.Time = Pos->Time;\r
                                Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);\r
                                Pkt.KanjiCode = AskHostKanjiCode();\r
@@ -1625,7 +1645,9 @@ void MirrorUploadProc(int Notify)
 \r
                                                strcpy(Pkt.Cmd, "STOR ");\r
                                                Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());\r
-                                               Pkt.Size = 0;\r
+                                               // バグ修正\r
+//                                             Pkt.Size = 0;\r
+                                               Pkt.Size = LocalPos->Size;\r
                                                Pkt.Time = LocalPos->Time;\r
                                                Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);\r
                                                Pkt.KanjiCode = AskHostKanjiCode();\r
@@ -2087,6 +2109,14 @@ static int CheckRemoteFile(TRANSPACKET *Pkt, FILELIST *ListList)
                                else\r
                                        Ret = EXIST_IGNORE;\r
                        }\r
+                       // 同じ名前のファイルの処理方法追加\r
+                       if(Ret == EXIST_LARGE)\r
+                       {\r
+                               if(Exist->Size < Pkt->Size)\r
+                                       Ret = EXIST_OVW;\r
+                               else\r
+                                       Ret = EXIST_IGNORE;\r
+                       }\r
                }\r
        }\r
        return(Ret);\r
@@ -2110,12 +2140,21 @@ static int CheckRemoteFile(TRANSPACKET *Pkt, FILELIST *ListList)
 static INT_PTR CALLBACK UpExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
 {\r
        static TRANSPACKET *Pkt;\r
+       // 同じ名前のファイルの処理方法追加\r
+//     static const RADIOBUTTON UpExistButton[] = {\r
+//             { UP_EXIST_OVW, EXIST_OVW },\r
+//             { UP_EXIST_NEW, EXIST_NEW },\r
+//             { UP_EXIST_RESUME, EXIST_RESUME },\r
+//             { UP_EXIST_UNIQUE, EXIST_UNIQUE },\r
+//             { UP_EXIST_IGNORE, EXIST_IGNORE }\r
+//     };\r
        static const RADIOBUTTON UpExistButton[] = {\r
                { UP_EXIST_OVW, EXIST_OVW },\r
                { UP_EXIST_NEW, EXIST_NEW },\r
                { UP_EXIST_RESUME, EXIST_RESUME },\r
                { UP_EXIST_UNIQUE, EXIST_UNIQUE },\r
-               { UP_EXIST_IGNORE, EXIST_IGNORE }\r
+               { UP_EXIST_IGNORE, EXIST_IGNORE },\r
+               { UP_EXIST_LARGE, EXIST_LARGE }\r
        };\r
        #define UPEXISTBUTTONS  (sizeof(UpExistButton)/sizeof(RADIOBUTTON))\r
 \r
@@ -2615,7 +2654,12 @@ void MoveRemoteFileProc(int drop_index)
        AskRemoteCurDir(HostDir, FMAX_PATH);\r
 \r
        // ドロップ先のフォルダ名を得る\r
-       GetNodeName(WIN_REMOTE, drop_index, Pkt.File, FMAX_PATH);\r
+       // 上位のディレクトリへ移動対応\r
+//     GetNodeName(WIN_REMOTE, drop_index, Pkt.File, FMAX_PATH);\r
+       if(drop_index >= 0)\r
+               GetNodeName(WIN_REMOTE, drop_index, Pkt.File, FMAX_PATH);\r
+       else\r
+               strcpy(Pkt.File, "..");\r
 \r
        if(MoveMode == MOVE_DLG)\r
        {\r
@@ -2929,7 +2973,12 @@ void ChangeDirDirectProc(int Win)
 \r
        strcpy(Path, "");\r
        if(Win == WIN_LOCAL)\r
-               Sts = InputDialogBox(chdir_br_dlg, GetMainHwnd(), Title, Path, FMAX_PATH+1, &Tmp, IDH_HELP_TOPIC_0000001);\r
+       // フォルダ選択ダイアログを直接表示\r
+//             Sts = InputDialogBox(chdir_br_dlg, GetMainHwnd(), Title, Path, FMAX_PATH+1, &Tmp, IDH_HELP_TOPIC_0000001);\r
+       {\r
+               if(SelectDir(GetMainHwnd(), Path, FMAX_PATH) == TRUE)\r
+                       Sts = YES;\r
+       }\r
        else\r
                Sts = InputDialogBox(chdir_dlg, GetMainHwnd(), Title, Path, FMAX_PATH+1, &Tmp, IDH_HELP_TOPIC_0000001);\r
 \r
@@ -3687,11 +3736,11 @@ static int RenameUnuseableName(char *Fname)
 \r
 // 自動切断対策\r
 // NOOPコマンドでは効果が無いホストが多いためLISTコマンドを使用\r
-void NoopProc(void)\r
+void NoopProc(int Force)\r
 {\r
        int CancelCheckWork;\r
        CancelCheckWork = NO;\r
-       if(AskConnecting() == YES && AskUserOpeDisabled() == NO)\r
+       if(Force == YES || (AskConnecting() == YES && AskUserOpeDisabled() == NO))\r
        {\r
                if(AskReuseCmdSkt() == NO || AskShareProh() == YES || AskTransferNow() == NO)\r
                {\r