OSDN Git Service

End the support for Windows XP and earlier.
[ffftp/ffftp.git] / filelist.c
index 4cd3bd4..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
@@ -201,10 +206,16 @@ int MakeListWin(HWND hWnd, HINSTANCE hInst)
 \r
        /*===== ローカル側のリストビュー =====*/\r
 \r
+       // 高DPI対応\r
+//     hWndListLocal = CreateWindowEx(/*WS_EX_STATICEDGE*/WS_EX_CLIENTEDGE,\r
+//                     WC_LISTVIEWA, NULL,\r
+//                     WS_CHILD | /*WS_BORDER | */LVS_REPORT | LVS_SHOWSELALWAYS,\r
+//                     0, TOOLWIN_HEIGHT*2, LocalWidth, ListHeight,\r
+//                     GetMainHwnd(), (HMENU)1500, hInst, NULL);\r
        hWndListLocal = CreateWindowEx(/*WS_EX_STATICEDGE*/WS_EX_CLIENTEDGE,\r
                        WC_LISTVIEWA, NULL,\r
                        WS_CHILD | /*WS_BORDER | */LVS_REPORT | LVS_SHOWSELALWAYS,\r
-                       0, TOOLWIN_HEIGHT*2, LocalWidth, ListHeight,\r
+                       0, AskToolWinHeight()*2, LocalWidth, ListHeight,\r
                        GetMainHwnd(), (HMENU)1500, hInst, NULL);\r
 \r
        if(hWndListLocal != NULL)\r
@@ -252,10 +263,16 @@ int MakeListWin(HWND hWnd, HINSTANCE hInst)
 \r
        /*===== ホスト側のリストビュー =====*/\r
 \r
+       // 高DPI対応\r
+//     hWndListRemote = CreateWindowEx(/*WS_EX_STATICEDGE*/WS_EX_CLIENTEDGE,\r
+//                     WC_LISTVIEWA, NULL,\r
+//                     WS_CHILD | /*WS_BORDER | */LVS_REPORT | LVS_SHOWSELALWAYS,\r
+//                     LocalWidth + SepaWidth, TOOLWIN_HEIGHT*2, RemoteWidth, ListHeight,\r
+//                     GetMainHwnd(), (HMENU)1500, hInst, NULL);\r
        hWndListRemote = CreateWindowEx(/*WS_EX_STATICEDGE*/WS_EX_CLIENTEDGE,\r
                        WC_LISTVIEWA, NULL,\r
                        WS_CHILD | /*WS_BORDER | */LVS_REPORT | LVS_SHOWSELALWAYS,\r
-                       LocalWidth + SepaWidth, TOOLWIN_HEIGHT*2, RemoteWidth, ListHeight,\r
+                       LocalWidth + SepaWidth, AskToolWinHeight()*2, RemoteWidth, ListHeight,\r
                        GetMainHwnd(), (HMENU)1500, hInst, NULL);\r
 \r
        if(hWndListRemote != NULL)\r
@@ -2768,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
@@ -2778,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
@@ -2874,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
@@ -2895,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
@@ -3034,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
@@ -3045,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
@@ -3065,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
@@ -3096,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
@@ -3120,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
@@ -3371,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
@@ -3420,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
@@ -3440,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