1 /*=============================================================================
\r
5 ===============================================================================
\r
6 / Copyright (C) 1997-2007 Sota. All rights reserved.
\r
8 / Redistribution and use in source and binary forms, with or without
\r
9 / modification, are permitted provided that the following conditions
\r
12 / 1. Redistributions of source code must retain the above copyright
\r
13 / notice, this list of conditions and the following disclaimer.
\r
14 / 2. Redistributions in binary form must reproduce the above copyright
\r
15 / notice, this list of conditions and the following disclaimer in the
\r
16 / documentation and/or other materials provided with the distribution.
\r
18 / THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
\r
19 / IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
\r
20 / OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
\r
21 / IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
\r
22 / INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
\r
23 / BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
\r
24 / USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
\r
25 / ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
\r
26 / (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
\r
27 / THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\r
28 /============================================================================*/
\r
32 #include <winsock2.h>
\r
33 #include <windows.h>
\r
38 #include <windowsx.h>
\r
41 #include "resource.h"
\r
45 /*----- ローカル側のディレクトリ変更 -------------------------------------------
\r
52 * FFFTP_SUCCESS/FFFTP_FAIL
\r
53 *----------------------------------------------------------------------------*/
\r
55 int DoLocalCWD(char *Path)
\r
59 Sts = FFFTP_SUCCESS;
\r
60 SetTaskMsg(">>CD %s", Path);
\r
61 if(SetCurrentDirectory(Path) != TRUE)
\r
63 SetTaskMsg(MSGJPN145);
\r
70 /*----- ローカル側のディレクトリ作成 -------------------------------------------
\r
77 *----------------------------------------------------------------------------*/
\r
79 void DoLocalMKD(char *Path)
\r
81 SetTaskMsg(">>MKDIR %s", Path);
\r
82 if(_mkdir(Path) != 0)
\r
83 SetTaskMsg(MSGJPN146);
\r
88 /*----- ローカル側のカレントディレクトリ取得 -----------------------------------
\r
91 * char *Buf : パス名を返すバッファ
\r
95 *----------------------------------------------------------------------------*/
\r
97 void DoLocalPWD(char *Buf)
\r
99 if(GetCurrentDirectory(FMAX_PATH, Buf) == 0)
\r
105 /*----- ローカル側のディレクトリ削除 ------------------------------------------
\r
112 *----------------------------------------------------------------------------*/
\r
114 void DoLocalRMD(char *Path)
\r
117 SetTaskMsg(">>RMDIR %s", Path);
\r
118 if(rmdir(Path) != 0)
\r
119 SetTaskMsg(MSGJPN147);
\r
121 SetTaskMsg(">>RMDIR %s", Path);
\r
123 if(MoveFileToTrashCan(Path) != 0)
\r
124 SetTaskMsg(MSGJPN148);
\r
130 /*----- ローカル側のファイル削除 -----------------------------------------------
\r
137 *----------------------------------------------------------------------------*/
\r
139 void DoLocalDELE(char *Path)
\r
142 SetTaskMsg(">>DEL %s", Path);
\r
143 if(DeleteFile(Path) != TRUE)
\r
144 SetTaskMsg(MSGJPN149);
\r
146 SetTaskMsg(">>DEL %s", Path);
\r
148 if(MoveFileToTrashCan(Path) != 0)
\r
149 SetTaskMsg(MSGJPN150);
\r
155 /*----- ローカル側のファイル名変更 ---------------------------------------------
\r
158 * char *Src : 元ファイル名
\r
159 * char *Dst : 変更後のファイル名
\r
163 *----------------------------------------------------------------------------*/
\r
165 void DoLocalRENAME(char *Src, char *Dst)
\r
167 SetTaskMsg(">>REN %s %s", Src, Dst);
\r
168 if(MoveFile(Src, Dst) != TRUE)
\r
169 SetTaskMsg(MSGJPN151);
\r
174 /*----- ファイルのプロパティを表示する ----------------------------------------
\r
177 * char *Fname : ファイル名
\r
181 *----------------------------------------------------------------------------*/
\r
183 void DispFileProperty(char *Fname)
\r
185 SHELLEXECUTEINFO sInfo;
\r
186 // 異なるファイルが表示されるバグ修正
\r
187 char Fname2[FMAX_PATH+1];
\r
189 memset(&sInfo, NUL, sizeof(SHELLEXECUTEINFO));
\r
190 sInfo.cbSize = sizeof(SHELLEXECUTEINFO);
\r
191 sInfo.fMask = SEE_MASK_INVOKEIDLIST;
\r
192 sInfo.hwnd = NULL; //GetMainHwnd();
\r
193 sInfo.lpVerb = "Properties";
\r
194 // 異なるファイルが表示されるバグ修正
\r
195 // sInfo.lpFile = Fname;
\r
196 sInfo.lpFile = MakeDistinguishableFileName(Fname2, Fname);
\r
197 sInfo.lpParameters = NULL;
\r
198 sInfo.lpDirectory = NULL;
\r
199 sInfo.nShow = SW_NORMAL;
\r
200 sInfo.lpIDList = NULL;
\r
201 ShellExecuteEx(&sInfo);
\r
206 /*----- 属性をチェックする FindFirstFile --------------------------------------
\r
209 * char *Fname : ファイル名
\r
210 * WIN32_FIND_DATA *FindData : 検索データ
\r
211 * int IgnHide : 隠しファイルを無視するかどうか(YES/NO)
\r
215 *----------------------------------------------------------------------------*/
\r
217 HANDLE FindFirstFileAttr(char *Fname, WIN32_FIND_DATA *FindData, int IgnHide)
\r
221 if((hFind = FindFirstFile(Fname, FindData)) != INVALID_HANDLE_VALUE)
\r
225 while(FindData->dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
\r
227 if(FindNextFile(hFind, FindData) == FALSE)
\r
230 hFind = INVALID_HANDLE_VALUE;
\r
240 /*----- 属性をチェックする FindNextFile ---------------------------------------
\r
243 * HANDLE hFind : ハンドル
\r
244 * WIN32_FIND_DATA *FindData : 検索データ
\r
245 * int IgnHide : 隠しファイルを無視するかどうか(YES/NO)
\r
249 *----------------------------------------------------------------------------*/
\r
251 BOOL FindNextFileAttr(HANDLE hFind, WIN32_FIND_DATA *FindData, int IgnHide)
\r
255 while((Ret = FindNextFile(hFind, FindData)) == TRUE)
\r
259 if((FindData->dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) == 0)
\r