OSDN Git Service

Add options for file list error handling.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Fri, 31 Oct 2014 15:20:28 +0000 (00:20 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Fri, 31 Oct 2014 15:20:28 +0000 (00:20 +0900)
Modify documents.

18 files changed:
FFFTP_Eng_Release/FFFTP.exe
FFFTP_Eng_Release_64/FFFTP.exe
Release/FFFTP.exe
Release_64/FFFTP.exe
Resource/FFFTP.rc
Resource/resource.h
Resource_eng/ffftp.rc
Resource_eng/resource.h
common.h
doc/eng/FFFTP.txt
doc/eng/history.txt
doc/jpn/FFFTP.txt
doc/jpn/history.txt
filelist.c
ftpproc.c
main.c
option.c
registry.c

index 9dcb433..164d86c 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index 7fa4511..d06877e 100644 (file)
Binary files a/FFFTP_Eng_Release_64/FFFTP.exe and b/FFFTP_Eng_Release_64/FFFTP.exe differ
index 3995f73..587307c 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index be76490..11b2a8b 100644 (file)
Binary files a/Release_64/FFFTP.exe and b/Release_64/FFFTP.exe differ
index 86e5825..62f2272 100644 (file)
@@ -776,14 +776,15 @@ BEGIN
     CONTROL         "\8fí\82É\83o\83C\83i\83\8a\83\82\81[\83h(&B)",TRMODE_BIN,"Button",BS_AUTORADIOBUTTON,13,33,84,10\r
     CONTROL         "\83t\83@\83C\83\8b\96¼\82Å\90Ø\91Ö\82¦(&X)",TRMODE_AUTO,"Button",BS_AUTORADIOBUTTON,13,47,81,10\r
     LTEXT           "\81¨",-1,98,49,8,8\r
-    GROUPBOX        "\83A\83X\83L\81[\83\82\81[\83h\82Ì\83t\83@\83C\83\8b\96¼(&F)",-1,104,7,99,84,WS_GROUP\r
-    LISTBOX         TRMODE_EXT_LIST,109,19,53,67,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "\83A\83X\83L\81[\83\82\81[\83h\82Ì\83t\83@\83C\83\8b\96¼(&F)",-1,104,7,99,70,WS_GROUP\r
+    LISTBOX         TRMODE_EXT_LIST,109,19,53,53,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
     PUSHBUTTON      "\92Ç\89Á(&I)...",TRMODE_ADD,167,19,31,14\r
     PUSHBUTTON      "\8dí\8f\9c",TRMODE_DEL,167,38,31,14\r
-    CONTROL         "\83A\83X\83L\81[\83\82\81[\83h\82Å\83A\83b\83v\83\8d\81[\83h\8e\9e\81AEOF(Ctrl-Z)\82ð\8eæ\82è\8f\9c\82­(&Z)",TRMODE_EOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,196,10\r
-    CONTROL         "\83A\83b\83v\83\8d\81[\83h/\83_\83E\83\93\83\8d\81[\83h\82·\82é\83t\83@\83C\83\8b\82Ì\83^\83C\83\80\83X\83^\83\93\83v\82ð\88Û\8e\9d(&T)",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10\r
-    CONTROL         "\83t\83@\83C\83\8b\96¼\82Ì\83Z\83~\83R\83\8d\83\93\88È\8d~\82Í\8eæ\82è\8f\9c\82¢\82Ä\83_\83E\83\93\83\8d\81[\83h(&S)",TRMODE_SEMICOLON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10\r
-    CONTROL         "\83t\83@\83C\83\8b\96¼\82ð\95Ï\82¦\82Ä\93]\91\97\82µ\82½\8fê\8d\87\82É\83f\83B\83\8c\83N\83g\83\8a\82ð\8dì\90¬(&D)",TRMODE_MAKEDIR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,136,196,10\r
+    CONTROL         "\83A\83X\83L\81[\83\82\81[\83h\82Å\83A\83b\83v\83\8d\81[\83h\8e\9e\81AEOF(Ctrl-Z)\82ð\8eæ\82è\8f\9c\82­(&Z)",TRMODE_EOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,80,196,10\r
+    CONTROL         "\83A\83b\83v\83\8d\81[\83h/\83_\83E\83\93\83\8d\81[\83h\82·\82é\83t\83@\83C\83\8b\82Ì\83^\83C\83\80\83X\83^\83\93\83v\82ð\88Û\8e\9d(&T)",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,196,10\r
+    CONTROL         "\83t\83@\83C\83\8b\96¼\82Ì\83Z\83~\83R\83\8d\83\93\88È\8d~\82Í\8eæ\82è\8f\9c\82¢\82Ä\83_\83E\83\93\83\8d\81[\83h(&S)",TRMODE_SEMICOLON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10\r
+    CONTROL         "\83t\83@\83C\83\8b\96¼\82ð\95Ï\82¦\82Ä\93]\91\97\82µ\82½\8fê\8d\87\82É\83f\83B\83\8c\83N\83g\83\8a\82ð\8dì\90¬(&D)",TRMODE_MAKEDIR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10\r
+    CONTROL         "\83t\83@\83C\83\8b\88ê\97\97\82Ì\8eæ\93¾\82É\8e¸\94s\82µ\82½\8fê\8d\87\82É\93]\91\97\82ð\92\86\8e~(&L)",TRMODE_LISTERROR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,136,196,10\r
 END\r
 \r
 up_exist_dlg DIALOG  0, 0, 223, 131\r
index 37a8e53..b0bc357 100644 (file)
 #define UPDATES_INTERVAL_SPN            1225\r
 #define HSET_NO_WEAK                    1226\r
 #define HOST_SET_DEFAULT                1227\r
+#define TRMODE_LISTERROR                1228\r
 #define MENU_END                        40001\r
 #define MENU_EXIT                       40001\r
 #define MENU_CONNECT                    40003\r
 #ifndef APSTUDIO_READONLY_SYMBOLS\r
 #define _APS_NEXT_RESOURCE_VALUE        199\r
 #define _APS_NEXT_COMMAND_VALUE         40182\r
-#define _APS_NEXT_CONTROL_VALUE         1228\r
+#define _APS_NEXT_CONTROL_VALUE         1229\r
 #define _APS_NEXT_SYMED_VALUE           101\r
 #endif\r
 #endif\r
index db0787e..844b15c 100644 (file)
@@ -784,16 +784,18 @@ BEGIN
     CONTROL         "Always &BINARY mode",TRMODE_BIN,"Button",BS_AUTORADIOBUTTON,13,33,84,10\r
     CONTROL         "&Filename dependent",TRMODE_AUTO,"Button",BS_AUTORADIOBUTTON,13,47,78,10\r
     LTEXT           "->",-1,98,49,8,8\r
-    GROUPBOX        "ASCII mode Filenames",-1,104,7,99,84,WS_GROUP\r
-    LISTBOX         TRMODE_EXT_LIST,109,19,53,67,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
+    GROUPBOX        "ASCII mode Filenames",-1,104,7,99,70,WS_GROUP\r
+    LISTBOX         TRMODE_EXT_LIST,109,19,53,53,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP\r
     PUSHBUTTON      "A&dd...",TRMODE_ADD,167,19,31,14\r
     PUSHBUTTON      "Delete",TRMODE_DEL,167,38,31,14\r
-    CONTROL         "&Remove EOF for ASCII mode upload",TRMODE_EOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,196,10\r
+    CONTROL         "&Remove EOF for ASCII mode upload",TRMODE_EOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,80,196,10\r
     CONTROL         "Retain file date/&time on upload and download",TRMODE_TIME,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,196,10\r
     CONTROL         "Truncate filename before &semicolon on download",TRMODE_SEMICOLON,\r
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10\r
     CONTROL         "Create &directory at file transfer with renaming",TRMODE_MAKEDIR,\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10\r
+    CONTROL         "Abort transfer if failed in obtaining file &lists",TRMODE_LISTERROR,\r
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,136,196,10\r
 END\r
 \r
index caefb3a..630cbfa 100644 (file)
 #define UPDATES_INTERVAL_SPN            1225\r
 #define HSET_NO_WEAK                    1226\r
 #define HOST_SET_DEFAULT                1227\r
+#define TRMODE_LISTERROR                1228\r
 #define MENU_END                        40001\r
 #define MENU_EXIT                       40001\r
 #define MENU_CONNECT                    40003\r
 #ifndef APSTUDIO_READONLY_SYMBOLS\r
 #define _APS_NEXT_RESOURCE_VALUE        199\r
 #define _APS_NEXT_COMMAND_VALUE         40182\r
-#define _APS_NEXT_CONTROL_VALUE         1228\r
+#define _APS_NEXT_CONTROL_VALUE         1229\r
 #define _APS_NEXT_SYMED_VALUE           101\r
 #endif\r
 #endif\r
index cf4cf70..3e452dc 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1427,7 +1427,9 @@ int GetNodeType(int Win, int Pos);
 void GetNodeOwner(int Win, int Pos, char *Buf, int Max);\r
 void EraseRemoteDirForWnd(void);\r
 double GetSelectedTotalSize(int Win);\r
-void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork);\r
+// ファイル一覧バグ修正\r
+//void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork);\r
+int MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork);\r
 void MakeDroppedFileList(WPARAM wParam, char *Cur, FILELIST **Base);\r
 void MakeDroppedDir(WPARAM wParam, char *Cur);\r
 void AddRemoteTreeToFileList(int Num, char *Path, int IncDir, FILELIST **Base);\r
index 1cbd5b8..046ff55 100644 (file)
@@ -88,6 +88,10 @@ Changes in Ver.1.99
 -- Added the default settings to the host list.\r
    This is used for the initial state of new hosts and Quick Connect.\r
 \r
+-- Added an option to abort file transfer if failed in obtaining file lists\r
+   before it.\r
+   This feature is enabled by default.\r
+\r
 \r
 Outline\r
 -------\r
index 8fbfc18..24abcb6 100644 (file)
@@ -60,6 +60,10 @@ Changes in Ver.1.99
 -- Added the default settings to the host list.\r
    This is used for the initial state of new hosts and Quick Connect.\r
 \r
+-- Added an option to abort file transfer if failed in obtaining file lists\r
+   before it.\r
+   This feature is enabled by default.\r
+\r
 Changes in Ver.1.98g2\r
 --------------------\r
 \r
index 66e95c1..1d1644e 100644 (file)
@@ -92,6 +92,10 @@ Ver 1.99
 \81E\83z\83X\83g\88ê\97\97\82É\8aù\92è\82Ì\90Ý\92è\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81B\r
 \81@\90V\8bK\83z\83X\83g\82Ì\8dì\90¬\8e\9e\82â\83N\83C\83b\83N\90Ú\91±\8e\9e\82Ì\8f\89\8aú\8fó\91Ô\82Æ\82µ\82Ä\8eg\97p\82³\82ê\82Ü\82·\81B\r
 \r
+\81E\83t\83@\83C\83\8b\93]\91\97\91O\82Ì\83t\83@\83C\83\8b\88ê\97\97\8eæ\93¾\8e\9e\82É\83G\83\89\81[\82ª\94­\90\82µ\82½\8fê\8d\87\82É\93]\91\97\82ð\r
+\81@\92\86\8e~\82·\82é\90Ý\92è\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81B\r
+\81@\82±\82Ì\8b@\94\\82Í\8aù\92è\82Å\82Í\97L\8cø\82É\82È\82è\82Ü\82·\81B\r
+\r
 \r
 Ver 1.96d\88È\91O\82Ö\96ß\82·\8fê\8d\87\r
 -----------------------\r
index cfc53b5..3dd5fb0 100644 (file)
@@ -64,6 +64,10 @@ FFFTP
 \81E\83z\83X\83g\88ê\97\97\82É\8aù\92è\82Ì\90Ý\92è\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81B\r
 \81@\90V\8bK\83z\83X\83g\82Ì\8dì\90¬\8e\9e\82â\83N\83C\83b\83N\90Ú\91±\8e\9e\82Ì\8f\89\8aú\8fó\91Ô\82Æ\82µ\82Ä\8eg\97p\82³\82ê\82Ü\82·\81B\r
 \r
+\81E\83t\83@\83C\83\8b\93]\91\97\91O\82Ì\83t\83@\83C\83\8b\88ê\97\97\8eæ\93¾\8e\9e\82É\83G\83\89\81[\82ª\94­\90\82µ\82½\8fê\8d\87\82É\93]\91\97\82ð\r
+\81@\92\86\8e~\82·\82é\90Ý\92è\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81B\r
+\81@\82±\82Ì\8b@\94\\82Í\8aù\92è\82Å\82Í\97L\8cø\82É\82È\82è\82Ü\82·\81B\r
+\r
 \81¡Ver 1.98g2\r
 \r
 \81E\83C\83\93\83X\83g\81[\83\89\94Å\82ÉZIP\94Å\82Ì\83t\83@\83C\83\8b\82ª\8d¬\93ü\82µ\82Ä\82¢\82½\96â\91è\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
index f1ea1b4..97da430 100755 (executable)
@@ -91,12 +91,17 @@ static void AddListView(HWND hWnd, int Pos, char *Name, int Type, LONGLONG Size,
 static INT_PTR CALLBACK SelectDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
 static int GetImageIndex(int Win, int Pos);\r
 static void DispListList(FILELIST *Pos, char *Title);\r
-static void MakeRemoteTree1(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork);\r
-static void MakeRemoteTree2(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork);\r
+// ファイル一覧バグ修正\r
+//static void MakeRemoteTree1(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork);\r
+//static void MakeRemoteTree2(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork);\r
+static int MakeRemoteTree1(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork);\r
+static int MakeRemoteTree2(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork);\r
 static void CopyTmpListToFileList(FILELIST **Base, FILELIST *List);\r
 static int GetListOneLine(char *Buf, int Max, FILE *Fd);\r
 static int MakeDirPath(char *Str, int ListType, char *Path, char *Dir);\r
-static void MakeLocalTree(char *Path, FILELIST **Base);\r
+// ファイル一覧バグ修正\r
+//static void MakeLocalTree(char *Path, FILELIST **Base);\r
+static int MakeLocalTree(char *Path, FILELIST **Base);\r
 static void AddFileList(FILELIST *Pkt, FILELIST **Base);\r
 static int AnalyzeFileInfo(char *Str);\r
 static int CheckUnixType(char *Str, char *Tmp, int Add1, int Add2, int Day);\r
@@ -2780,8 +2785,12 @@ double GetSelectedTotalSize(int Win)
 *              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
-void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork)\r
+// ファイル一覧バグ修正\r
+//void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork)\r
+int MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork)\r
 {\r
+       // ファイル一覧バグ修正\r
+       int Sts;\r
        int Pos;\r
        char Name[FMAX_PATH+1];\r
        char Cur[FMAX_PATH+1];\r
@@ -2790,6 +2799,8 @@ void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *Ca
        DWORD Attr;\r
        int Ignore;\r
 \r
+       // ファイル一覧バグ修正\r
+       Sts = FFFTP_SUCCESS;\r
        if((All == YES) || (GetSelectedCount(Win) > 0))\r
        {\r
                /*===== カレントディレクトリのファイル =====*/\r
@@ -2886,16 +2897,31 @@ void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *Ca
 //                                             }\r
                                                if(GetImageIndex(Win, Pos) != 4) { // symlink\r
                                                        if(Win == WIN_LOCAL)\r
-                                                               MakeLocalTree(Name, Base);\r
+                                                       // ファイル一覧バグ修正\r
+//                                                             MakeLocalTree(Name, Base);\r
+                                                       {\r
+                                                               if(MakeLocalTree(Name, Base) == FFFTP_FAIL)\r
+                                                                       Sts = FFFTP_FAIL;\r
+                                                       }\r
                                                        else\r
                                                        {\r
                                                                AskRemoteCurDir(Cur, FMAX_PATH);\r
 \r
                                                                if((AskListCmdMode() == NO) &&\r
                                                                   (AskUseNLST_R() == YES))\r
-                                                                       MakeRemoteTree1(Name, Cur, Base, CancelCheckWork);\r
+                                                               // ファイル一覧バグ修正\r
+//                                                                     MakeRemoteTree1(Name, Cur, Base, CancelCheckWork);\r
+                                                               {\r
+                                                                       if(MakeRemoteTree1(Name, Cur, Base, CancelCheckWork) == FFFTP_FAIL)\r
+                                                                               Sts = FFFTP_FAIL;\r
+                                                               }\r
                                                                else\r
-                                                                       MakeRemoteTree2(Name, Cur, Base, CancelCheckWork);\r
+                                                               // ファイル一覧バグ修正\r
+//                                                                     MakeRemoteTree2(Name, Cur, Base, CancelCheckWork);\r
+                                                               {\r
+                                                                       if(MakeRemoteTree2(Name, Cur, Base, CancelCheckWork) == FFFTP_FAIL)\r
+                                                                               Sts = FFFTP_FAIL;\r
+                                                               }\r
 \r
 //DispListList(*Base, "LIST");\r
 \r
@@ -2907,7 +2933,9 @@ void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *Ca
                        }\r
                }\r
        }\r
-       return;\r
+       // ファイル一覧バグ修正\r
+//     return;\r
+       return(Sts);\r
 }\r
 \r
 \r
@@ -3046,10 +3074,16 @@ void MakeDroppedDir(WPARAM wParam, char *Cur)
 *              NLST -alLR を使う\r
 *----------------------------------------------------------------------------*/\r
 \r
-static void MakeRemoteTree1(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork)\r
+// ファイル一覧バグ修正\r
+//static void MakeRemoteTree1(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork)\r
+static int MakeRemoteTree1(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork)\r
 {\r
+       // ファイル一覧バグ修正\r
+       int Ret;\r
        int Sts;\r
 \r
+       // ファイル一覧バグ修正\r
+       Ret = FFFTP_FAIL;\r
        if(DoCWD(Path, NO, NO, NO) == FTP_COMPLETE)\r
        {\r
                /* サブフォルダも含めたリストを取得 */\r
@@ -3057,9 +3091,16 @@ static void MakeRemoteTree1(char *Path, char *Cur, FILELIST **Base, int *CancelC
                DoCWD(Cur, NO, NO, NO);\r
 \r
                if(Sts == FTP_COMPLETE)\r
+               // ファイル一覧バグ修正\r
+//                     AddRemoteTreeToFileList(999, Path, RDIR_NLST, Base);\r
+               {\r
                        AddRemoteTreeToFileList(999, Path, RDIR_NLST, Base);\r
+                       Ret = FFFTP_SUCCESS;\r
+               }\r
        }\r
-       return;\r
+       // ファイル一覧バグ修正\r
+//     return;\r
+       return(Ret);\r
 }\r
 \r
 \r
@@ -3077,13 +3118,19 @@ static void MakeRemoteTree1(char *Path, char *Cur, FILELIST **Base, int *CancelC
 *              各フォルダに移動してリストを取得\r
 *----------------------------------------------------------------------------*/\r
 \r
-static void MakeRemoteTree2(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork)\r
+// ファイル一覧バグ修正\r
+//static void MakeRemoteTree2(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork)\r
+static int MakeRemoteTree2(char *Path, char *Cur, FILELIST **Base, int *CancelCheckWork)\r
 {\r
+       // ファイル一覧バグ修正\r
+       int Ret;\r
        int Sts;\r
        FILELIST *CurList;\r
        FILELIST *Pos;\r
        FILELIST Pkt;\r
 \r
+       // ファイル一覧バグ修正\r
+       Ret = FFFTP_FAIL;\r
        /* VAX VMS は CWD xxx/yyy という指定ができないので */\r
        /* CWD xxx, Cwd yyy と複数に分ける                                       */\r
        if(AskHostType() != HTYPE_VMS)\r
@@ -3108,6 +3155,9 @@ static void MakeRemoteTree2(char *Path, char *Cur, FILELIST **Base, int *CancelC
                        AddRemoteTreeToFileList(999, Path, RDIR_CWD, &CurList);\r
                        CopyTmpListToFileList(Base, CurList);\r
 \r
+                       // ファイル一覧バグ修正\r
+                       Ret = FFFTP_SUCCESS;\r
+\r
                        Pos = CurList;\r
                        while(Pos != NULL)\r
                        {\r
@@ -3132,14 +3182,21 @@ static void MakeRemoteTree2(char *Path, char *Cur, FILELIST **Base, int *CancelC
                                        /* そのディレクトリの中を検索 */\r
 //                                     MakeRemoteTree2(Pos->File, Cur, Base, CancelCheckWork);\r
                                        if(Pkt.Link == NO)\r
-                                               MakeRemoteTree2(Pos->File, Cur, Base, CancelCheckWork);\r
+                                       // ファイル一覧バグ修正\r
+//                                             MakeRemoteTree2(Pos->File, Cur, Base, CancelCheckWork);\r
+                                       {\r
+                                               if(MakeRemoteTree2(Pos->File, Cur, Base, CancelCheckWork) == FFFTP_FAIL)\r
+                                                       Ret = FFFTP_FAIL;\r
+                                       }\r
                                }\r
                                Pos = Pos->Next;\r
                        }\r
                        DeleteFileList(&CurList);\r
                }\r
        }\r
-       return;\r
+       // ファイル一覧バグ修正\r
+//     return;\r
+       return(Ret);\r
 }\r
 \r
 \r
@@ -3383,14 +3440,21 @@ static int MakeDirPath(char *Str, int ListType, char *Path, char *Dir)
 *              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
-static void MakeLocalTree(char *Path, FILELIST **Base)\r
+// ファイル一覧バグ修正\r
+//static void MakeLocalTree(char *Path, FILELIST **Base)\r
+static int MakeLocalTree(char *Path, FILELIST **Base)\r
 {\r
+       // ファイル一覧バグ修正\r
+       int Sts;\r
        char Src[FMAX_PATH+1];\r
        HANDLE fHnd;\r
        WIN32_FIND_DATA FindBuf;\r
        FILELIST Pkt;\r
        SYSTEMTIME TmpStime;\r
 \r
+       // ファイル一覧バグ修正\r
+       Sts = FFFTP_FAIL;\r
+\r
        strcpy(Src, Path);\r
        SetYenTail(Src);\r
        strcat(Src, "*");\r
@@ -3432,6 +3496,8 @@ static void MakeLocalTree(char *Path, FILELIST **Base)
 \r
        if((fHnd = FindFirstFileAttr(Src, &FindBuf, DispIgnoreHide)) != INVALID_HANDLE_VALUE)\r
        {\r
+               // ファイル一覧バグ修正\r
+               Sts = FFFTP_SUCCESS;\r
                do\r
                {\r
                        if((FindBuf.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&\r
@@ -3452,13 +3518,18 @@ static void MakeLocalTree(char *Path, FILELIST **Base)
                                memset(&Pkt.Time, 0, sizeof(FILETIME));\r
                                AddFileList(&Pkt, Base);\r
 \r
-                               MakeLocalTree(Src, Base);\r
+                               // ファイル一覧バグ修正\r
+//                             MakeLocalTree(Src, Base);\r
+                               if(MakeLocalTree(Src, Base) == FFFTP_FAIL)\r
+                                       Sts = FFFTP_FAIL;\r
                        }\r
                }\r
                while(FindNextFileAttr(fHnd, &FindBuf, DispIgnoreHide) == TRUE);\r
                FindClose(fHnd);\r
        }\r
-       return;\r
+       // ファイル一覧バグ修正\r
+//     return;\r
+       return(Sts);\r
 }\r
 \r
 \r
index 09f376c..2d88ca0 100644 (file)
--- a/ftpproc.c
+++ b/ftpproc.c
@@ -110,6 +110,8 @@ extern int DebugConsole;
 extern int CancelFlg;\r
 // ディレクトリ自動作成\r
 extern int MakeAllDir;\r
+// ファイル一覧バグ修正\r
+extern int AbortOnListError;\r
 \r
 /*===== ローカルなワーク =====*/\r
 \r
@@ -182,6 +184,8 @@ void DownloadProc(int ChName, int ForceFile, int All)
        TRANSPACKET Pkt;\r
        // ディレクトリ自動作成\r
        char Tmp[FMAX_PATH+1];\r
+       // ファイル一覧バグ修正\r
+       int ListSts;\r
 \r
        // 同時接続対応\r
        CancelFlg = NO;\r
@@ -194,7 +198,9 @@ void DownloadProc(int ChName, int ForceFile, int All)
 //             KeepTransferDialog(YES);\r
 \r
                FileListBase = NULL;\r
-               MakeSelectedFileList(WIN_REMOTE, (ForceFile == YES ? NO : YES), All, &FileListBase, &CancelFlg);\r
+               // ファイル一覧バグ修正\r
+//             MakeSelectedFileList(WIN_REMOTE, (ForceFile == YES ? NO : YES), All, &FileListBase, &CancelFlg);\r
+               ListSts = MakeSelectedFileList(WIN_REMOTE, (ForceFile == YES ? NO : YES), All, &FileListBase, &CancelFlg);\r
 \r
                if(AskNoFullPathMode() == YES)\r
                {\r
@@ -206,6 +212,9 @@ void DownloadProc(int ChName, int ForceFile, int All)
                Pos = FileListBase;\r
                while(Pos != NULL)\r
                {\r
+                       // ファイル一覧バグ修正\r
+                       if((AbortOnListError == YES) && (ListSts == FFFTP_FAIL))\r
+                               break;\r
                        AskLocalCurDir(Pkt.LocalFile, FMAX_PATH);\r
                        SetYenTail(Pkt.LocalFile);\r
                        strcpy(TmpString, Pos->File);\r
@@ -491,6 +500,8 @@ void MirrorDownloadProc(int Notify)
        char *Cat;\r
        int Level;\r
        int Mode;\r
+       // ファイル一覧バグ修正\r
+       int ListSts;\r
 \r
        // 同時接続対応\r
        CancelFlg = NO;\r
@@ -511,9 +522,14 @@ void MirrorDownloadProc(int Notify)
                        /*===== ファイルリスト取得 =====*/\r
 \r
                        LocalListBase = NULL;\r
-                       MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
+                       // ファイル一覧バグ修正\r
+//                     MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
+                       ListSts = MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
                        RemoteListBase = NULL;\r
-                       MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
+                       // ファイル一覧バグ修正\r
+//                     MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
+                       if(ListSts == FFFTP_SUCCESS)\r
+                               ListSts = MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
 \r
                        RemotePos = RemoteListBase;\r
                        while(RemotePos != NULL)\r
@@ -678,8 +694,11 @@ void MirrorDownloadProc(int Notify)
                                RemotePos = RemotePos->Next;\r
                        }\r
 \r
-                       if((Notify == YES) ||\r
-                          (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirrordown_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES))\r
+                       // ファイル一覧バグ修正\r
+//                     if((Notify == YES) ||\r
+//                        (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirrordown_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES))\r
+                       if(((AbortOnListError == NO) || (ListSts == FFFTP_SUCCESS)) && ((Notify == YES) ||\r
+                          (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirrordown_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES)))\r
                        {\r
                                if(AskNoFullPathMode() == YES)\r
                                {\r
@@ -1047,6 +1066,8 @@ void UploadListProc(int ChName, int All)
        FILELIST *RemoteList;\r
        char Tmp[FMAX_PATH+1];\r
        int FirstAdd;\r
+       // ファイル一覧バグ修正\r
+       int ListSts;\r
 \r
        // 同時接続対応\r
        CancelFlg = NO;\r
@@ -1057,7 +1078,9 @@ void UploadListProc(int ChName, int All)
 \r
                // ローカル側で選ばれているファイルをFileListBaseに登録\r
                FileListBase = NULL;\r
-               MakeSelectedFileList(WIN_LOCAL, YES, All, &FileListBase, &CancelFlg);\r
+               // ファイル一覧バグ修正\r
+//             MakeSelectedFileList(WIN_LOCAL, YES, All, &FileListBase, &CancelFlg);\r
+               ListSts = MakeSelectedFileList(WIN_LOCAL, YES, All, &FileListBase, &CancelFlg);\r
 \r
                // 現在ホスト側のファイル一覧に表示されているものをRemoteListに登録\r
                // 同名ファイルチェック用\r
@@ -1070,6 +1093,9 @@ void UploadListProc(int ChName, int All)
                Pos = FileListBase;\r
                while(Pos != NULL)\r
                {\r
+                       // ファイル一覧バグ修正\r
+                       if((AbortOnListError == YES) && (ListSts == FFFTP_FAIL))\r
+                               break;\r
                        AskRemoteCurDir(Pkt.RemoteFile, FMAX_PATH);\r
                        SetSlashTail(Pkt.RemoteFile);\r
                        Cat = strchr(Pkt.RemoteFile, NUL);\r
@@ -1446,6 +1472,8 @@ void MirrorUploadProc(int Notify)
        SYSTEMTIME TmpStime;\r
        FILETIME TmpFtimeL;\r
        FILETIME TmpFtimeR;\r
+       // ファイル一覧バグ修正\r
+       int ListSts;\r
 \r
        // 同時接続対応\r
        CancelFlg = NO;\r
@@ -1466,9 +1494,14 @@ void MirrorUploadProc(int Notify)
                        /*===== ファイルリスト取得 =====*/\r
 \r
                        LocalListBase = NULL;\r
-                       MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
+                       // ファイル一覧バグ修正\r
+//                     MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
+                       ListSts = MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
                        RemoteListBase = NULL;\r
-                       MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
+                       // ファイル一覧バグ修正\r
+//                     MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
+                       if(ListSts == FFFTP_SUCCESS)\r
+                               ListSts = MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
 \r
                        LocalPos = LocalListBase;\r
                        while(LocalPos != NULL)\r
@@ -1666,8 +1699,11 @@ void MirrorUploadProc(int Notify)
                                LocalPos = LocalPos->Next;\r
                        }\r
 \r
-                       if((Notify == YES) ||\r
-                          (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirror_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES))\r
+                       // ファイル一覧バグ修正\r
+//                     if((Notify == YES) ||\r
+//                        (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirror_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES))\r
+                       if(((AbortOnListError == NO) || (ListSts == FFFTP_SUCCESS)) && ((Notify == YES) ||\r
+                          (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirror_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES)))\r
                        {\r
                                if(AskNoFullPathMode() == YES)\r
                                {\r
diff --git a/main.c b/main.c
index bebf19a..211045f 100644 (file)
--- a/main.c
+++ b/main.c
@@ -283,6 +283,8 @@ int AutoCheckForUpdates = YES;
 int AutoApplyUpdates = NO;\r
 int AutoCheckForUptatesInterval = 7;\r
 time_t LastAutoCheckForUpdates = 0;\r
+// ファイル一覧バグ修正\r
+int AbortOnListError = YES;\r
 \r
 \r
 \r
index 208efcf..a297866 100644 (file)
--- a/option.c
+++ b/option.c
@@ -192,6 +192,8 @@ extern int RemoveOldLog;
 extern int AutoCheckForUpdates;\r
 extern int AutoApplyUpdates;\r
 extern int AutoCheckForUptatesInterval;\r
+// ファイル一覧バグ修正\r
+extern int AbortOnListError;\r
 \r
 \r
 /*----- オプションのプロパティシート ------------------------------------------\r
@@ -545,6 +547,8 @@ static INT_PTR CALLBACK Trmode1SettingProc(HWND hDlg, UINT message, WPARAM wPara
                        SendDlgItemMessage(hDlg, TRMODE_SEMICOLON, BM_SETCHECK, VaxSemicolon, 0);\r
                        // ディレクトリ自動作成\r
                        SendDlgItemMessage(hDlg, TRMODE_MAKEDIR, BM_SETCHECK, MakeAllDir, 0);\r
+                       // ファイル一覧バグ修正\r
+                       SendDlgItemMessage(hDlg, TRMODE_LISTERROR, BM_SETCHECK, AbortOnListError, 0);\r
 \r
                        SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(TRMODE_EXT_LIST, 0), 0);\r
 \r
@@ -563,6 +567,8 @@ static INT_PTR CALLBACK Trmode1SettingProc(HWND hDlg, UINT message, WPARAM wPara
                                        VaxSemicolon = SendDlgItemMessage(hDlg, TRMODE_SEMICOLON, BM_GETCHECK, 0, 0);\r
                                        // ディレクトリ自動作成\r
                                        MakeAllDir = SendDlgItemMessage(hDlg, TRMODE_MAKEDIR, BM_GETCHECK, 0, 0);\r
+                                       // ファイル一覧バグ修正\r
+                                       AbortOnListError = SendDlgItemMessage(hDlg, TRMODE_LISTERROR, BM_GETCHECK, 0, 0);\r
                                        break;\r
 \r
                                case PSN_RESET :\r
index 2d2ac02..0e1d221 100644 (file)
@@ -237,6 +237,8 @@ extern int AutoCheckForUpdates;
 extern int AutoApplyUpdates;\r
 extern int AutoCheckForUptatesInterval;\r
 extern time_t LastAutoCheckForUpdates;\r
+// ファイル一覧バグ修正\r
+extern int AbortOnListError;\r
 \r
 /*----- マスタパスワードの設定 ----------------------------------------------\r
 *\r
@@ -837,6 +839,8 @@ void SaveRegistry(void)
                                WriteIntValueToReg(hKey4, "UpdApply", AutoApplyUpdates);\r
                                WriteIntValueToReg(hKey4, "UpdInterval", AutoCheckForUptatesInterval);\r
                                WriteBinaryToReg(hKey4, "UpdLastCheck", &LastAutoCheckForUpdates, sizeof(LastAutoCheckForUpdates));\r
+                               // ファイル一覧バグ修正\r
+                               WriteIntValueToReg(hKey4, "AbortListErr", AbortOnListError);\r
                        }\r
                        CloseSubKey(hKey4);\r
                }\r
@@ -1420,6 +1424,8 @@ int LoadRegistry(void)
                        ReadIntValueFromReg(hKey4, "UpdApply", &AutoApplyUpdates);\r
                        ReadIntValueFromReg(hKey4, "UpdInterval", &AutoCheckForUptatesInterval);\r
                        ReadBinaryFromReg(hKey4, "UpdLastCheck", &LastAutoCheckForUpdates, sizeof(LastAutoCheckForUpdates));\r
+                       // ファイル一覧バグ修正\r
+                       ReadIntValueFromReg(hKey4, "AbortListErr", &AbortOnListError);\r
 \r
                        CloseSubKey(hKey4);\r
                }\r