Modify messages.
Fix bugs of hanging at accessing non-existent directories.
Fix spelling mistakes.
Modify documents.
Remove unused files.
>\r
</File>\r
<File\r
+ RelativePath=".\Resource\list_16.bmp"\r
+ >\r
+ </File>\r
+ <File\r
RelativePath=".\Resource\list_bmp.bmp"\r
>\r
</File>\r
>\r
</File>\r
<File\r
+ RelativePath=".\Resource_eng\list_16.bmp"\r
+ >\r
+ </File>\r
+ <File\r
RelativePath=".\Resource_eng\list_bmp.bmp"\r
>\r
</File>\r
/>\r
</FileConfiguration>\r
<FileConfiguration\r
- Name="Release|Win32"\r
+ Name="Debug|x64"\r
+ ExcludedFromBuild="true"\r
>\r
<Tool\r
Name="VCCustomBuildTool"\r
/>\r
</FileConfiguration>\r
<FileConfiguration\r
- Name="Debug|x64"\r
- ExcludedFromBuild="true"\r
+ Name="Release|Win32"\r
>\r
<Tool\r
Name="VCCustomBuildTool"\r
LTEXT "",stc1,9,18,88,8\r
END\r
\r
-opt_user_dlg DIALOG 0, 0, 211, 139\r
+opt_user_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
LTEXT "\83\81\81[\83\8b\83A\83h\83\8c\83X\82Íanonymous FTP\82Ì\83p\83X\83\8f\81[\83h\82Æ\82µ\82Ä\8eg\97p\82³\82ê\82Ü\82·\81B",-1,28,36,169,18,SS_SUNKEN\r
END\r
\r
-opt_tool_dlg DIALOG 0, 0, 211, 139\r
+opt_tool_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
LTEXT "\8dì\90¬\82·\82é\83t\83H\83\8b\83_\82Ì\96¼\91O\82ð\93ü\97Í\82µ\82Ä\82\82¾\82³\82¢\81B",-1,7,7,160,8\r
END\r
\r
-opt_misc_dlg DIALOG 0, 0, 211, 139\r
+opt_misc_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
PUSHBUTTON "\82¢\82¢\82¦",IDCANCEL,112,42,50,14\r
END\r
\r
-opt_trmode2_dlg DIALOG 0, 0, 211, 139\r
+opt_trmode2_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
LTEXT "\83~\83\89\81[\83\8a\83\93\83O\83A\83b\83v\83\8d\81[\83h\8e\9e\82Ì\90Ý\92è\82Í\81A\81u\83~\83\89\81[\83\8a\83\93\83O\81v\83^\83u\82Ì\92\86\82É\82 \82è\82Ü\82·\81B",-1,18,56,181,17,SS_SUNKEN\r
END\r
\r
-opt_notify_dlg DIALOGEX 0, 0, 211, 139\r
+opt_notify_dlg DIALOGEX 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
PUSHBUTTON "\83w\83\8b\83v",9,165,90,50,14\r
END\r
\r
-opt_fire_dlg DIALOG 0, 0, 211, 139\r
+opt_fire_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
LTEXT "\82±\82±\82Å\93ü\97Í\82µ\82½\83\81\81[\83\8b\83A\83h\83\8c\83X\82Í\81A\8cã\82Å\83I\83v\83V\83\87\83\93\82Ì\n\81u\83\86\81[\83U\81[\81v\83^\83u\82Ì\82Æ\82±\82ë\82Å\95Ï\8dX\82Å\82«\82Ü\82·\81B",-1,16,48,164,18\r
END\r
\r
-opt_sound_dlg DIALOG 0, 0, 211, 139\r
+opt_sound_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
CONTROL "\94¼\8ap\83J\83i\82ð\91S\8ap\82É\95Ï\8a·",HSET_FN_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,114,107,81,10\r
END\r
\r
-opt_trmode1_dlg DIALOG 0, 0, 211, 139\r
+opt_trmode1_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
CONTROL "\8fí\82É\83A\83X\83L\81[\83\82\81[\83h(&A)",TRMODE_ASCII,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,19,85,10\r
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
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 "\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
- LTEXT "\81¨",-1,98,49,8,8\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
END\r
\r
up_exist_dlg DIALOG 0, 0, 223, 119\r
CONTROL "",INP_ANONYMOUS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,164,30,16,8\r
END\r
\r
-opt_mirror_dlg DIALOG 0, 0, 211, 139\r
+opt_mirror_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
CONTROL "",INP_ANONYMOUS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,164,30,16,8\r
END\r
\r
-opt_connect_dlg DIALOG 0, 0, 211, 139\r
+opt_connect_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
CTEXT "\8f\88\97\9d\82ð\92\86\8e~\82µ\82Ü\82·\81B",-1,7,31,140,8\r
END\r
\r
-opt_trmode3_dlg DIALOG 0, 0, 211, 139\r
+opt_trmode3_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
PUSHBUTTON "\83L\83\83\83\93\83Z\83\8b",IDCANCEL,96,72,50,14\r
END\r
\r
-opt_disp_dlg DIALOG 0, 0, 211, 139\r
+opt_disp_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 134\r
+ BOTTOMMARGIN, 148\r
END\r
\r
opt_tool_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
chmod_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
hostname_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 135\r
+ BOTTOMMARGIN, 148\r
END\r
\r
opt_notify_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
bmark_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
hset_adv_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
downerr_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 135\r
+ BOTTOMMARGIN, 148\r
END\r
\r
up_exist_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 135\r
+ BOTTOMMARGIN, 148\r
END\r
\r
somecmd_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
rasnotify_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 135\r
+ BOTTOMMARGIN, 148\r
END\r
\r
def_attr_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
bmark_edit_dlg, DIALOG\r
#define CONNECT_RASCLOSE 1014\r
#define FIRE_LOWER 1014\r
#define MIRROR_TIMECHECK 1014\r
+#define TRMODE_MAKEDIR 1014\r
#define TOOL_EDITOR_BR 1015\r
#define PERM_A_READ 1015\r
#define SOUND_TRNNG 1015\r
LTEXT "",stc1,9,18,88,8\r
END\r
\r
-opt_user_dlg DIALOG 0, 0, 211, 139\r
+opt_user_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
LTEXT "This address is used for the anonymous FTP password.",-1,28,36,169,18,SS_SUNKEN\r
END\r
\r
-opt_tool_dlg DIALOG 0, 0, 211, 139\r
+opt_tool_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
LTEXT "Enter new folder name:",-1,7,7,160,8\r
END\r
\r
-opt_misc_dlg DIALOG 0, 0, 211, 139\r
+opt_misc_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
PUSHBUTTON "No",IDCANCEL,112,42,50,14\r
END\r
\r
-opt_trmode2_dlg DIALOG 0, 0, 211, 139\r
+opt_trmode2_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
LTEXT "Mirror Upload/Download settings are on the Mirror tab.",-1,18,56,181,17,SS_SUNKEN\r
END\r
\r
-opt_notify_dlg DIALOGEX 0, 0, 211, 139\r
+opt_notify_dlg DIALOGEX 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
PUSHBUTTON "&Help",9,165,90,50,14\r
END\r
\r
-opt_fire_dlg DIALOG 0, 0, 211, 139\r
+opt_fire_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
LTEXT "You can reenter mail address at the Option dialog.",-1,16,54,164,10\r
END\r
\r
-opt_sound_dlg DIALOG 0, 0, 211, 139\r
+opt_sound_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
CONTROL "Hankaku to Zenkaku",HSET_FN_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,111,108,91,10\r
END\r
\r
-opt_trmode1_dlg DIALOG 0, 0, 211, 139\r
+opt_trmode1_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
CONTROL "Always &ASCII mode",TRMODE_ASCII,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,19,85,10\r
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
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 "Re&tain file date/time on download",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10\r
- LTEXT "->",-1,98,49,8,8\r
+ CONTROL "Retain file date/&time on download",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10\r
CONTROL "Truncate filename before &semicolon on download",TRMODE_SEMICOLON,\r
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10\r
+ CONTROL "Create &directory at file transfer with renaming",TRMODE_MAKEDIR,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,136,196,10\r
END\r
\r
up_exist_dlg DIALOG 0, 0, 234, 119\r
CONTROL "",INP_ANONYMOUS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,164,30,16,8\r
END\r
\r
-opt_mirror_dlg DIALOG 0, 0, 211, 139\r
+opt_mirror_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
CONTROL "",INP_ANONYMOUS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,164,30,16,8\r
END\r
\r
-opt_connect_dlg DIALOG 0, 0, 211, 139\r
+opt_connect_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
CTEXT "Stop processing.",-1,7,20,141,8\r
END\r
\r
-opt_trmode3_dlg DIALOG 0, 0, 211, 139\r
+opt_trmode3_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
PUSHBUTTON "Cancel",IDCANCEL,96,63,50,14\r
END\r
\r
-opt_disp_dlg DIALOG 0, 0, 211, 139\r
+opt_disp_dlg DIALOG 0, 0, 211, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 134\r
+ BOTTOMMARGIN, 148\r
END\r
\r
opt_tool_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
chmod_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
hostname_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 135\r
+ BOTTOMMARGIN, 148\r
END\r
\r
opt_notify_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
bmark_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
hset_adv_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
downerr_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 135\r
+ BOTTOMMARGIN, 148\r
END\r
\r
up_exist_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 135\r
+ BOTTOMMARGIN, 148\r
END\r
\r
somecmd_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
rasnotify_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 135\r
+ BOTTOMMARGIN, 148\r
END\r
\r
def_attr_dlg, DIALOG\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 204\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 132\r
+ BOTTOMMARGIN, 148\r
END\r
\r
bmark_edit_dlg, DIALOG\r
#define CONNECT_RASCLOSE 1014\r
#define FIRE_LOWER 1014\r
#define MIRROR_TIMECHECK 1014\r
+#define TRMODE_MAKEDIR 1014\r
#define TOOL_EDITOR_BR 1015\r
#define PERM_A_READ 1015\r
#define SOUND_TRNNG 1015\r
\r
/*===== ftpproc.c =====*/\r
\r
-void DownLoadProc(int ChName, int ForceFile, int All);\r
-void DirectDownLoadProc(char *Fname);\r
-void InputDownLoadProc(void);\r
+void DownloadProc(int ChName, int ForceFile, int All);\r
+void DirectDownloadProc(char *Fname);\r
+void InputDownloadProc(void);\r
void MirrorDownloadProc(int Notify);\r
-void UpLoadListProc(int ChName, int All);\r
-void UpLoadDragProc(WPARAM wParam);\r
+void UploadListProc(int ChName, int All);\r
+void UploadDragProc(WPARAM wParam);\r
void MirrorUploadProc(int Notify);\r
void DeleteProc(void);\r
void RenameProc(void);\r
//int DoQUOTE(char *CmdStr);\r
int DoQUOTE(SOCKET cSkt, char *CmdStr, int *CancelCheckWork);\r
SOCKET DoClose(SOCKET Sock);\r
-int DoQUIT(SOCKET ctrl_skt);\r
+// 同時接続対応\r
+//int DoQUIT(SOCKET ctrl_skt);\r
+int DoQUIT(SOCKET ctrl_skt, int *CancelCheckWork);\r
int DoDirListCmdSkt(char *AddOpt, char *Path, int Num, int *CancelCheckWork);\r
#if defined(HAVE_TANDEM)\r
void SwitchOSSProc(void);\r
int AskTransferFileNum(void);\r
void GoForwardTransWindow(void);\r
void InitTransCurDir(void);\r
-int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork);\r
+int DoDownload(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork);\r
int CheckPathViolation(TRANSPACKET *packet);\r
\r
/*===== codecnv.c =====*/\r
\r
/*===== registory.c =====*/\r
\r
-void SaveRegistory(void);\r
-int LoadRegistory(void);\r
-void ClearRegistory(void);\r
+void SaveRegistry(void);\r
+int LoadRegistry(void);\r
+void ClearRegistry(void);\r
void SetMasterPassword( const char* );\r
int GetMasterPasswordStatus(void);\r
int ValidateMasterPassword(void);\r
-DWORD LoadHideDriveListRegistory(void);\r
+DWORD LoadHideDriveListRegistry(void);\r
void SaveSettingsToFile(void);\r
int LoadSettingsFromFile(void);\r
\r
EnableUserOpe();\r
\r
if(strlen(File) > 0)\r
- DirectDownLoadProc(File);\r
+ DirectDownloadProc(File);\r
}\r
else\r
{\r
EnableUserOpe();\r
\r
if(strlen(File) > 0)\r
- DirectDownLoadProc(File);\r
+ DirectDownloadProc(File);\r
else\r
ResetAutoExitFlg();\r
}\r
\r
if((CmdCtrlSocket != INVALID_SOCKET) && (CmdCtrlSocket != TrnCtrlSocket))\r
{\r
- DoQUIT(CmdCtrlSocket);\r
+ // 同時接続対応\r
+// DoQUIT(CmdCtrlSocket);\r
+ DoQUIT(CmdCtrlSocket, &CancelFlg);\r
DoClose(CmdCtrlSocket);\r
}\r
\r
if(TrnCtrlSocket != INVALID_SOCKET)\r
{\r
- DoQUIT(TrnCtrlSocket);\r
+ // 同時接続対応\r
+// DoQUIT(TrnCtrlSocket);\r
+ DoQUIT(TrnCtrlSocket, &CancelFlg);\r
DoClose(TrnCtrlSocket);\r
\r
SaveCurrentSetToHistory();\r
*----------------------------------------------------------------------------*/\r
\r
// IPv6対応\r
+typedef SOCKET (__cdecl* LPCONNECTSOCK)(char*, int, char*, int*);\r
+\r
+typedef struct\r
+{\r
+ HANDLE h;\r
+ DWORD ExitCode;\r
+ char *host;\r
+ int port;\r
+ char *PreMsg;\r
+ int CancelCheckWork;\r
+ LPCONNECTSOCK f;\r
+ SOCKET s;\r
+} CONNECTSOCKDATA;\r
+\r
+DWORD WINAPI connectsockThreadProc(LPVOID lpParameter)\r
+{\r
+ CONNECTSOCKDATA* pData;\r
+ pData = (CONNECTSOCKDATA*)lpParameter;\r
+ pData->s = pData->f(pData->host, pData->port, pData->PreMsg, &pData->CancelCheckWork);\r
+ return 0;\r
+}\r
+\r
+// IPv6対応\r
SOCKET connectsock(char *host, int port, char *PreMsg, int *CancelCheckWork)\r
{\r
SOCKET Result;\r
+ CONNECTSOCKDATA DataIPv4;\r
+ CONNECTSOCKDATA DataIPv6;\r
Result = INVALID_SOCKET;\r
switch(CurHost.CurNetType)\r
{\r
case NTYPE_AUTO:\r
- if((Result = connectsockIPv4(host, port, PreMsg, CancelCheckWork)) != INVALID_SOCKET)\r
- CurHost.CurNetType = NTYPE_IPV4;\r
- else if((Result = connectsockIPv6(host, port, PreMsg, CancelCheckWork)) != INVALID_SOCKET)\r
- CurHost.CurNetType = NTYPE_IPV6;\r
+// if((Result = connectsockIPv4(host, port, PreMsg, CancelCheckWork)) != INVALID_SOCKET)\r
+// CurHost.CurNetType = NTYPE_IPV4;\r
+// else if((Result = connectsockIPv6(host, port, PreMsg, CancelCheckWork)) != INVALID_SOCKET)\r
+// CurHost.CurNetType = NTYPE_IPV6;\r
+ DataIPv4.host = host;\r
+ DataIPv4.port = port;\r
+ DataIPv4.PreMsg = PreMsg;\r
+ DataIPv4.CancelCheckWork = *CancelCheckWork;\r
+ DataIPv4.f = connectsockIPv4;\r
+ DataIPv4.h = CreateThread(NULL, 0, connectsockThreadProc, &DataIPv4, 0, NULL);\r
+ DataIPv6.host = host;\r
+ DataIPv6.port = port;\r
+ DataIPv6.PreMsg = PreMsg;\r
+ DataIPv6.CancelCheckWork = *CancelCheckWork;\r
+ DataIPv6.f = connectsockIPv6;\r
+ DataIPv6.h = CreateThread(NULL, 0, connectsockThreadProc, &DataIPv6, 0, NULL);\r
+ while(1)\r
+ {\r
+ if(GetExitCodeThread(DataIPv4.h, &DataIPv4.ExitCode))\r
+ {\r
+ if(DataIPv4.ExitCode != STILL_ACTIVE)\r
+ {\r
+ if(DataIPv4.s != INVALID_SOCKET)\r
+ {\r
+ Result = DataIPv4.s;\r
+ CurHost.CurNetType = NTYPE_IPV4;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ if(GetExitCodeThread(DataIPv6.h, &DataIPv6.ExitCode))\r
+ {\r
+ if(DataIPv6.ExitCode != STILL_ACTIVE)\r
+ {\r
+ if(DataIPv6.s != INVALID_SOCKET)\r
+ {\r
+ Result = DataIPv6.s;\r
+ CurHost.CurNetType = NTYPE_IPV6;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ if(GetExitCodeThread(DataIPv4.h, &DataIPv4.ExitCode) && GetExitCodeThread(DataIPv6.h, &DataIPv6.ExitCode))\r
+ {\r
+ if(DataIPv4.ExitCode != STILL_ACTIVE && DataIPv6.ExitCode != STILL_ACTIVE)\r
+ {\r
+ if(DataIPv4.s == INVALID_SOCKET && DataIPv6.s == INVALID_SOCKET)\r
+ break;\r
+ }\r
+ }\r
+ DataIPv4.CancelCheckWork = *CancelCheckWork;\r
+ DataIPv6.CancelCheckWork = *CancelCheckWork;\r
+ BackgrndMessageProc();\r
+ Sleep(1);\r
+ }\r
+ while(1)\r
+ {\r
+ if(GetExitCodeThread(DataIPv4.h, &DataIPv4.ExitCode) && GetExitCodeThread(DataIPv6.h, &DataIPv6.ExitCode))\r
+ {\r
+ if(DataIPv4.ExitCode != STILL_ACTIVE && DataIPv6.ExitCode != STILL_ACTIVE)\r
+ {\r
+ CloseHandle(DataIPv4.h);\r
+ CloseHandle(DataIPv6.h);\r
+ break;\r
+ }\r
+ }\r
+ DataIPv4.CancelCheckWork = YES;\r
+ DataIPv6.CancelCheckWork = YES;\r
+ BackgrndMessageProc();\r
+ Sleep(1);\r
+ }\r
break;\r
case NTYPE_IPV4:\r
Result = connectsockIPv4(host, port, PreMsg, CancelCheckWork);\r
else\r
{\r
// アドレスを取得\r
- SetTaskMsg(MSGJPN016, DomainName);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN016, DomainName);\r
+ SetTaskMsg(MSGJPN016, DomainName, MSGJPN333);\r
// IPv6対応\r
// pHostEntry = do_gethostbyname(host, HostEntry, MAXGETHOSTSTRUCT, CancelCheckWork);\r
pHostEntry = do_gethostbynameIPv4(host, HostEntry, MAXGETHOSTSTRUCT, CancelCheckWork);\r
// memcpy((char *)&CurSockAddr.sin_addr, pHostEntry->h_addr, pHostEntry->h_length);\r
// SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet_ntoa(CurSockAddr.sin_addr), ntohs(CurSockAddr.sin_port));\r
memcpy((char *)&CurSockAddrIPv4.sin_addr, pHostEntry->h_addr, pHostEntry->h_length);\r
- SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet_ntoa(CurSockAddrIPv4.sin_addr), ntohs(CurSockAddrIPv4.sin_port));\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet_ntoa(CurSockAddrIPv4.sin_addr), ntohs(CurSockAddrIPv4.sin_port));\r
+ SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet_ntoa(CurSockAddrIPv4.sin_addr), ntohs(CurSockAddrIPv4.sin_port), MSGJPN333);\r
}\r
else\r
{\r
UseIPadrs = NO;\r
// IPv6対応\r
// SetTaskMsg(MSGJPN018, PreMsg, DomainName, ntohs(CurSockAddr.sin_port));\r
- SetTaskMsg(MSGJPN018, PreMsg, DomainName, ntohs(CurSockAddrIPv4.sin_port));\r
+ SetTaskMsg(MSGJPN018, PreMsg, DomainName, ntohs(CurSockAddrIPv4.sin_port), MSGJPN333);\r
}\r
else\r
{\r
- SetTaskMsg(MSGJPN019, host);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN019, host);\r
+ SetTaskMsg(MSGJPN019, host, MSGJPN333);\r
return(INVALID_SOCKET);\r
}\r
}\r
else\r
// IPv6対応\r
// SetTaskMsg(MSGJPN020, PreMsg, inet_ntoa(CurSockAddr.sin_addr), ntohs(CurSockAddr.sin_port));\r
- SetTaskMsg(MSGJPN020, PreMsg, inet_ntoa(CurSockAddrIPv4.sin_addr), ntohs(CurSockAddrIPv4.sin_port));\r
+ SetTaskMsg(MSGJPN020, PreMsg, inet_ntoa(CurSockAddrIPv4.sin_addr), ntohs(CurSockAddrIPv4.sin_port), MSGJPN333);\r
\r
if((Fwall == FWALL_SOCKS4) || (Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER))\r
{\r
memcpy((char *)&SocksSockAddrIPv4.sin_addr, pHostEntry->h_addr, pHostEntry->h_length);\r
else\r
{\r
- SetTaskMsg(MSGJPN021, FwallHost);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN021, FwallHost);\r
+ SetTaskMsg(MSGJPN021, FwallHost, MSGJPN333);\r
return INVALID_SOCKET;\r
}\r
}\r
// SetTaskMsg(MSGJPN022, inet_ntoa(SocksSockAddr.sin_addr), ntohs(SocksSockAddr.sin_port));\r
SocksSockAddrIPv4.sin_port = htons((u_short)FwallPort);\r
SocksSockAddrIPv4.sin_family = AF_INET;\r
- SetTaskMsg(MSGJPN022, inet_ntoa(SocksSockAddrIPv4.sin_addr), ntohs(SocksSockAddrIPv4.sin_port));\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN022, inet_ntoa(SocksSockAddrIPv4.sin_addr), ntohs(SocksSockAddrIPv4.sin_port));\r
+ SetTaskMsg(MSGJPN022, inet_ntoa(SocksSockAddrIPv4.sin_addr), ntohs(SocksSockAddrIPv4.sin_port), MSGJPN333);\r
// connectで接続する先はSOCKSサーバ\r
// IPv6対応\r
// memcpy(&saSockAddr, &SocksSockAddr, sizeof(SocksSockAddr));\r
(Socks4GetCmdReply(sSocket, &Socks4Reply, CancelCheckWork) != FFFTP_SUCCESS) || \r
(Socks4Reply.Result != SOCKS4_RES_OK))\r
{\r
- SetTaskMsg(MSGJPN023, Socks4Reply.Result);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN023, Socks4Reply.Result);\r
+ SetTaskMsg(MSGJPN023, Socks4Reply.Result, MSGJPN333);\r
DoClose(sSocket);\r
sSocket = INVALID_SOCKET;\r
}\r
(Socks5GetCmdReply(sSocket, &Socks5Reply, CancelCheckWork) != FFFTP_SUCCESS) || \r
(Socks5Reply.Result != SOCKS5_RES_OK))\r
{\r
- SetTaskMsg(MSGJPN024, Socks5Reply.Result);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN024, Socks5Reply.Result);\r
+ SetTaskMsg(MSGJPN024, Socks5Reply.Result, MSGJPN333);\r
DoClose(sSocket);\r
sSocket = INVALID_SOCKET;\r
}\r
}\r
\r
if(sSocket != INVALID_SOCKET)\r
- SetTaskMsg(MSGJPN025);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN025);\r
+ SetTaskMsg(MSGJPN025, MSGJPN333);\r
}\r
else\r
{\r
//#pragma aaa\r
- SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/);\r
+ SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/, MSGJPN333);\r
DoClose(sSocket);\r
sSocket = INVALID_SOCKET;\r
}\r
}\r
else\r
- SetTaskMsg(MSGJPN027);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN027);\r
+ SetTaskMsg(MSGJPN027, MSGJPN333);\r
\r
return(sSocket);\r
}\r
else\r
{\r
// アドレスを取得\r
- SetTaskMsg(MSGJPN016, DomainName);\r
+ SetTaskMsg(MSGJPN016, DomainName, MSGJPN334);\r
pHostEntry = do_gethostbynameIPv6(host, HostEntry, MAXGETHOSTSTRUCT, CancelCheckWork);\r
}\r
\r
if(pHostEntry != NULL)\r
{\r
memcpy((char *)&CurSockAddrIPv6.sin6_addr, pHostEntry->h_addr, pHostEntry->h_length);\r
- SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet6_ntoa(CurSockAddrIPv6.sin6_addr), ntohs(CurSockAddrIPv6.sin6_port));\r
+ SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet6_ntoa(CurSockAddrIPv6.sin6_addr), ntohs(CurSockAddrIPv6.sin6_port), MSGJPN334);\r
}\r
else\r
{\r
if((Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER))\r
{\r
UseIPadrs = NO;\r
- SetTaskMsg(MSGJPN018, PreMsg, DomainName, ntohs(CurSockAddrIPv6.sin6_port));\r
+ SetTaskMsg(MSGJPN018, PreMsg, DomainName, ntohs(CurSockAddrIPv6.sin6_port), MSGJPN334);\r
}\r
else\r
{\r
- SetTaskMsg(MSGJPN019, host);\r
+ SetTaskMsg(MSGJPN019, host, MSGJPN334);\r
return(INVALID_SOCKET);\r
}\r
}\r
}\r
else\r
- SetTaskMsg(MSGJPN020, PreMsg, inet6_ntoa(CurSockAddrIPv6.sin6_addr), ntohs(CurSockAddrIPv6.sin6_port));\r
+ SetTaskMsg(MSGJPN020, PreMsg, inet6_ntoa(CurSockAddrIPv6.sin6_addr), ntohs(CurSockAddrIPv6.sin6_port), MSGJPN334);\r
\r
if((Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER))\r
{\r
memcpy((char *)&SocksSockAddrIPv6.sin6_addr, pHostEntry->h_addr, pHostEntry->h_length);\r
else\r
{\r
- SetTaskMsg(MSGJPN021, FwallHost);\r
+ SetTaskMsg(MSGJPN021, FwallHost, MSGJPN334);\r
return INVALID_SOCKET;\r
}\r
}\r
SocksSockAddrIPv6.sin6_port = htons((u_short)FwallPort);\r
SocksSockAddrIPv6.sin6_family = AF_INET6;\r
- SetTaskMsg(MSGJPN022, inet6_ntoa(SocksSockAddrIPv6.sin6_addr), ntohs(SocksSockAddrIPv6.sin6_port));\r
+ SetTaskMsg(MSGJPN022, inet6_ntoa(SocksSockAddrIPv6.sin6_addr), ntohs(SocksSockAddrIPv6.sin6_port), MSGJPN334);\r
// connectで接続する先はSOCKSサーバ\r
memcpy(&saSockAddr, &SocksSockAddrIPv6, sizeof(SocksSockAddrIPv6));\r
}\r
(Socks5GetCmdReply(sSocket, &Socks5Reply, CancelCheckWork) != FFFTP_SUCCESS) || \r
(Socks5Reply.Result != SOCKS5_RES_OK))\r
{\r
- SetTaskMsg(MSGJPN024, Socks5Reply.Result);\r
+ SetTaskMsg(MSGJPN024, Socks5Reply.Result, MSGJPN334);\r
DoClose(sSocket);\r
sSocket = INVALID_SOCKET;\r
}\r
}\r
\r
if(sSocket != INVALID_SOCKET)\r
- SetTaskMsg(MSGJPN025);\r
+ SetTaskMsg(MSGJPN025, MSGJPN334);\r
}\r
else\r
{\r
//#pragma aaa\r
- SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/);\r
+ SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/, MSGJPN334);\r
DoClose(sSocket);\r
sSocket = INVALID_SOCKET;\r
}\r
}\r
else\r
- SetTaskMsg(MSGJPN027);\r
+ SetTaskMsg(MSGJPN027, MSGJPN334);\r
\r
return(sSocket);\r
}\r
(Socks4GetCmdReply(listen_skt, &Socks4Reply, CancelCheckWork) != FFFTP_SUCCESS) || \r
(Socks4Reply.Result != SOCKS4_RES_OK))\r
{\r
- SetTaskMsg(MSGJPN028, Socks4Reply.Result);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN028, Socks4Reply.Result);\r
+ SetTaskMsg(MSGJPN028, Socks4Reply.Result, MSGJPN333);\r
DoClose(listen_skt);\r
listen_skt = INVALID_SOCKET;\r
}\r
(Socks5GetCmdReply(listen_skt, &Socks5Reply, CancelCheckWork) != FFFTP_SUCCESS) || \r
(Socks5Reply.Result != SOCKS5_RES_OK))\r
{\r
- SetTaskMsg(MSGJPN029, Socks5Reply.Result);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN029, Socks5Reply.Result);\r
+ SetTaskMsg(MSGJPN029, Socks5Reply.Result, MSGJPN333);\r
DoClose(listen_skt);\r
listen_skt = INVALID_SOCKET;\r
}\r
}\r
\r
if(listen_skt == INVALID_SOCKET)\r
- SetTaskMsg(MSGJPN030);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN030);\r
+ SetTaskMsg(MSGJPN030, MSGJPN333);\r
}\r
}\r
else\r
UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]),\r
UC(p[0]), UC(p[1])) / 100) != FTP_COMPLETE)\r
{\r
- SetTaskMsg(MSGJPN031);\r
+ // IPv6対応\r
+// SetTaskMsg(MSGJPN031);\r
+ SetTaskMsg(MSGJPN031, MSGJPN333);\r
do_closesocket(listen_skt);\r
listen_skt = INVALID_SOCKET;\r
}\r
(Socks5GetCmdReply(listen_skt, &Socks5Reply, CancelCheckWork) != FFFTP_SUCCESS) || \r
(Socks5Reply.Result != SOCKS5_RES_OK))\r
{\r
- SetTaskMsg(MSGJPN029, Socks5Reply.Result);\r
+ SetTaskMsg(MSGJPN029, Socks5Reply.Result, MSGJPN334);\r
DoClose(listen_skt);\r
listen_skt = INVALID_SOCKET;\r
}\r
}\r
\r
if(listen_skt == INVALID_SOCKET)\r
- SetTaskMsg(MSGJPN030);\r
+ SetTaskMsg(MSGJPN030, MSGJPN334);\r
}\r
}\r
else\r
AddressToStringIPv6(Adrs, a),\r
(UC(p[0]) << 8) | UC(p[1])) / 100) != FTP_COMPLETE)\r
{\r
- SetTaskMsg(MSGJPN031);\r
+ SetTaskMsg(MSGJPN031, MSGJPN334);\r
do_closesocket(listen_skt);\r
listen_skt = INVALID_SOCKET;\r
}\r
\r
-- Fixed bugs of hanging on exit in some cases.\r
\r
+-- Fixed bugs of hanging at accessing non-existent directories without full\r
+ path.\r
+\r
+-- Changed behavior of Auto of network type selection.\r
+ Name resolution and connection will be performed at same time on IPv4 and\r
+ IPv6, and whichever finished earlier will be used.\r
+\r
\r
Outline\r
-------\r
\r
-- Fixed bugs of hanging on exit in some cases.\r
\r
+-- Fixed bugs of hanging at accessing non-existent directories without full\r
+ path.\r
+\r
+-- Changed behavior of Auto of network type selection.\r
+ Name resolution and connection will be performed at same time on IPv4 and\r
+ IPv6, and whichever finished earlier will be used.\r
+\r
Changes in Ver.1.98d\r
--------------------\r
\r
\r
\81E\8fI\97¹\8e\9e\82É\83t\83\8a\81[\83Y\82·\82é\82±\82Æ\82ª\82 \82é\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
\r
+\81E\83t\83\8b\83p\83X\82Å\83A\83N\83Z\83X\82µ\82È\82¢\90Ý\92è\82Å\91¶\8dÝ\82µ\82È\82¢\83f\83B\83\8c\83N\83g\83\8a\82É\83A\83N\83Z\83X\82·\82é\82Æ\r
+\81@\83t\83\8a\81[\83Y\82·\82é\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
+\r
+\81E\83l\83b\83g\83\8f\81[\83N\82Ì\8eí\97Þ\82ð\8e©\93®\82É\90Ý\92è\82µ\82Ä\82¢\82é\8fê\8d\87\82Ì\8b\93\93®\82ð\95Ï\8dX\82µ\82Ü\82µ\82½\81B\r
+\81@IPv4\82ÆIPv6\82Ì\97¼\95û\82Å\96¼\91O\89ð\8c\88\82Æ\90Ú\91±\82ð\93¯\8e\9e\82É\8ds\82¢\81A\90æ\82É\90Ú\91±\82ª\8a®\97¹\82µ\82½\95û\82ð\r
+\81@\8eg\97p\82µ\82Ü\82·\81B\r
+\r
\r
Ver 1.96d\88È\91O\82Ö\96ß\82·\8fê\8d\87\r
-----------------------\r
\r
\81E\8fI\97¹\8e\9e\82É\83t\83\8a\81[\83Y\82·\82é\82±\82Æ\82ª\82 \82é\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
\r
+\81E\83t\83\8b\83p\83X\82Å\83A\83N\83Z\83X\82µ\82È\82¢\90Ý\92è\82Å\91¶\8dÝ\82µ\82È\82¢\83f\83B\83\8c\83N\83g\83\8a\82É\83A\83N\83Z\83X\82·\82é\82Æ\r
+\81@\83t\83\8a\81[\83Y\82·\82é\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
+\r
+\81E\83l\83b\83g\83\8f\81[\83N\82Ì\8eí\97Þ\82ð\8e©\93®\82É\90Ý\92è\82µ\82Ä\82¢\82é\8fê\8d\87\82Ì\8b\93\93®\82ð\95Ï\8dX\82µ\82Ü\82µ\82½\81B\r
+\81@IPv4\82ÆIPv6\82Ì\97¼\95û\82Å\96¼\91O\89ð\8c\88\82Æ\90Ú\91±\82ð\93¯\8e\9e\82É\8ds\82¢\81A\90æ\82É\90Ú\91±\82ª\8a®\97¹\82µ\82½\95û\82ð\r
+\81@\8eg\97p\82µ\82Ü\82·\81B\r
+\r
\81¡Ver 1.98d\r
\r
\81EMLSD\83R\83}\83\93\83h\82É\91Î\89\9e\82µ\82½\83z\83X\83g\82Å\82ÍMLSD\83R\83}\83\93\83h\82ð\97p\82¢\82Ä\83t\83@\83C\83\8b\88ê\97\97\82ð\r
if(hWnd == hWndListRemote)\r
{\r
if(AskConnecting() == YES)\r
- UpLoadDragProc(wParam);\r
+ UploadDragProc(wParam);\r
}\r
else if(hWnd == hWndListLocal)\r
{\r
if(DispDrives)\r
{\r
GetLogicalDriveStrings(FMAX_PATH, Scan);\r
- NoDrives = LoadHideDriveListRegistory();\r
+ NoDrives = LoadHideDriveListRegistry();\r
\r
Pos = Scan;\r
while(*Pos != NUL)\r
static INT_PTR CALLBACK MirrorDispListCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static void CountMirrorFiles(HWND hDlg, TRANSPACKET *Pkt);\r
static int AskMirrorNoTrn(char *Fname, int Mode);\r
-static int AskUpLoadFileAttr(char *Fname);\r
+static int AskUploadFileAttr(char *Fname);\r
// 64ビット対応\r
//static BOOL CALLBACK UpDownAsDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static INT_PTR CALLBACK UpDownAsDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
\r
// ディレクトリ自動作成\r
// ローカル側のパスから必要なフォルダを作成\r
-int MakeDirFromLocalPath(char* LocalFile)\r
+int MakeDirFromLocalPath(char* LocalFile, char* Old)\r
{\r
TRANSPACKET Pkt;\r
char* pDelimiter;\r
char* pNext;\r
char* Cat;\r
int Len;\r
- char Tmp[FMAX_PATH+1];\r
int Make;\r
pDelimiter = LocalFile;\r
Make = NO;\r
Len = pNext - LocalFile;\r
strncpy(Pkt.LocalFile, LocalFile, Len);\r
Pkt.LocalFile[Len] = '\0';\r
- AskLocalCurDir(Tmp, FMAX_PATH);\r
- SetYenTail(Tmp);\r
- if(strncmp(LocalFile, Tmp, Len + 1) != 0)\r
+ if(strncmp(LocalFile, Old, Len + 1) != 0)\r
{\r
Cat = Pkt.LocalFile + (pDelimiter - LocalFile);\r
if(FnameCnv == FNAME_LOWER)\r
return Make;\r
}\r
\r
-void DownLoadProc(int ChName, int ForceFile, int All)\r
+void DownloadProc(int ChName, int ForceFile, int All)\r
{\r
FILELIST *FileListBase;\r
FILELIST *Pos;\r
TRANSPACKET Pkt;\r
+ // ディレクトリ自動作成\r
+ char Tmp[FMAX_PATH+1];\r
\r
// 同時接続対応\r
CancelFlg = NO;\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
\r
+ // ディレクトリ自動作成\r
+ strcpy(Tmp, Pkt.LocalFile);\r
Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize がセットされる */\r
if(Pkt.Mode == EXIST_ABORT)\r
break;\r
// AddTransFileList(&Pkt);\r
{\r
if(MakeAllDir == YES)\r
- MakeDirFromLocalPath(Pkt.LocalFile);\r
+ MakeDirFromLocalPath(Pkt.LocalFile, Tmp);\r
AddTransFileList(&Pkt);\r
}\r
}\r
* なし\r
*----------------------------------------------------------------------------*/\r
\r
-void DirectDownLoadProc(char *Fname)\r
+void DirectDownloadProc(char *Fname)\r
{\r
TRANSPACKET Pkt;\r
\r
* なし\r
*----------------------------------------------------------------------------*/\r
\r
-void InputDownLoadProc(void)\r
+void InputDownloadProc(void)\r
{\r
char Path[FMAX_PATH+1];\r
int Tmp;\r
strcpy(Path, "");\r
if(InputDialogBox(downname_dlg, GetMainHwnd(), NULL, Path, FMAX_PATH, &Tmp, IDH_HELP_TOPIC_0000001) == YES)\r
{\r
- DirectDownLoadProc(Path);\r
+ DirectDownloadProc(Path);\r
}\r
\r
// EnableUserOpe();\r
\r
// ディレクトリ自動作成\r
// リモート側のパスから必要なディレクトリを作成\r
-int MakeDirFromRemotePath(char* RemoteFile, int FirstAdd)\r
+int MakeDirFromRemotePath(char* RemoteFile, char* Old, int FirstAdd)\r
{\r
TRANSPACKET Pkt;\r
TRANSPACKET Pkt1;\r
char* pNext;\r
char* Cat;\r
int Len;\r
- char Tmp[FMAX_PATH+1];\r
int Make;\r
pDelimiter = RemoteFile;\r
Make = NO;\r
Len = pNext - RemoteFile;\r
strncpy(Pkt.RemoteFile, RemoteFile, Len);\r
Pkt.RemoteFile[Len] = '\0';\r
- AskRemoteCurDir(Tmp, FMAX_PATH);\r
- SetSlashTail(Tmp);\r
- if(strncmp(RemoteFile, Tmp, Len + 1) != 0)\r
+ if(strncmp(RemoteFile, Old, Len + 1) != 0)\r
{\r
Cat = Pkt.RemoteFile + (pDelimiter - RemoteFile);\r
if(FnameCnv == FNAME_LOWER)\r
return Make;\r
}\r
\r
-void UpLoadListProc(int ChName, int All)\r
+void UploadListProc(int ChName, int All)\r
{\r
FILELIST *FileListBase;\r
FILELIST *Pos;\r
Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());\r
Pkt.Size = 0;\r
Pkt.Time = Pos->Time;\r
- Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);\r
+ Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);\r
Pkt.KanjiCode = AskHostKanjiCode();\r
// UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
CalcExtentSize(&Pkt, Pos->Size);\r
}\r
#endif\r
+ // ディレクトリ自動作成\r
+ strcpy(Tmp, Pkt.RemoteFile);\r
Pkt.Mode = CheckRemoteFile(&Pkt, RemoteList);\r
if(Pkt.Mode == EXIST_ABORT)\r
break;\r
// ディレクトリ自動作成\r
if(MakeAllDir == YES)\r
{\r
- if(MakeDirFromRemotePath(Pkt.RemoteFile, FirstAdd) == YES)\r
+ if(MakeDirFromRemotePath(Pkt.RemoteFile, Tmp, FirstAdd) == YES)\r
FirstAdd = NO;\r
}\r
if((FirstAdd == YES) && (AskNoFullPathMode() == YES))\r
* なし\r
*----------------------------------------------------------------------------*/\r
\r
-void UpLoadDragProc(WPARAM wParam)\r
+void UploadDragProc(WPARAM wParam)\r
{\r
FILELIST *FileListBase;\r
FILELIST *Pos;\r
Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());\r
Pkt.Size = 0;\r
Pkt.Time = Pos->Time;\r
- Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);\r
+ Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);\r
Pkt.KanjiCode = AskHostKanjiCode();\r
// UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
CalcExtentSize(&Pkt, Pos->Size);\r
}\r
#endif\r
+ // ディレクトリ自動作成\r
+ strcpy(Tmp, Pkt.RemoteFile);\r
Pkt.Mode = CheckRemoteFile(&Pkt, RemoteList);\r
if(Pkt.Mode == EXIST_ABORT)\r
break;\r
// ディレクトリ自動作成\r
if(MakeAllDir == YES)\r
{\r
- if(MakeDirFromRemotePath(Pkt.RemoteFile, FirstAdd) == YES)\r
+ if(MakeDirFromRemotePath(Pkt.RemoteFile, Tmp, FirstAdd) == YES)\r
FirstAdd = NO;\r
}\r
if((FirstAdd == YES) && (AskNoFullPathMode() == YES))\r
Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());\r
Pkt.Size = 0;\r
Pkt.Time = LocalPos->Time;\r
- Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);\r
+ Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);\r
Pkt.KanjiCode = AskHostKanjiCode();\r
// UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
* int 属性 (-1=設定なし)\r
*----------------------------------------------------------------------------*/\r
\r
-static int AskUpLoadFileAttr(char *Fname)\r
+static int AskUploadFileAttr(char *Fname)\r
{\r
int Ret;\r
int Sts;\r
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
// 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
extern int MirDownDelNotify;\r
extern int FolderAttr;\r
extern int FolderAttrNum;\r
+// 同時接続対応\r
+extern int SendQuit;\r
\r
\r
/*----- ファイル転送スレッドを起動する ----------------------------------------\r
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
}\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
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
// 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
{\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
* からも呼ばれる。メインのスレッドから呼ばれる時は 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
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
* 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
// 一部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
* 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
// 一部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
* ダイアログを出さない場合、このルーチンから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
* 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
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
* int 応答コード\r
*----------------------------------------------------------------------------*/\r
\r
-static int UpLoadNonPassive(TRANSPACKET *Pkt)\r
+static int UploadNonPassive(TRANSPACKET *Pkt)\r
{\r
int iRetCode;\r
int iLength;\r
// 一部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
* 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
// 一部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
* 転送ダイアログを出さないでアップロードすることはない\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
\r
/* ホスト設定を保存 */\r
SetNodeLevelAll();\r
- SaveRegistory();\r
+ SaveRegistry();\r
\r
return(Sts);\r
}\r
// ファイルアイコン表示対応\r
int DispFileIcon = NO;\r
// ディレクトリ自動作成\r
-int MakeAllDir = YES;\r
+int MakeAllDir = NO;\r
\r
\r
\r
/* 2010.02.01 genta マスターパスワードを入力させる\r
-z オプションがあるときは最初だけスキップ\r
-z オプションがないときは,デフォルトパスワードをまず試す\r
- LoadRegistory()する\r
+ LoadRegistry()する\r
パスワードが不一致なら再入力するか尋ねる.\r
(破損していた場合はさせない)\r
*/\r
\r
if(masterpass != 0)\r
{\r
- LoadRegistory();\r
+ LoadRegistry();\r
\r
// 暗号化通信対応\r
SetSSLTimeoutCallback(TimeOut * 1000, SSLTimeoutCallback);\r
\r
case MENU_DOWNLOAD :\r
SetCurrentDirAsDirHist();\r
- DownLoadProc(NO, NO, NO);\r
+ DownloadProc(NO, NO, NO);\r
break;\r
\r
case MENU_DOWNLOAD_AS :\r
SetCurrentDirAsDirHist();\r
- DownLoadProc(YES, NO, NO);\r
+ DownloadProc(YES, NO, NO);\r
break;\r
\r
case MENU_DOWNLOAD_AS_FILE :\r
SetCurrentDirAsDirHist();\r
- DownLoadProc(NO, YES, NO);\r
+ DownloadProc(NO, YES, NO);\r
break;\r
\r
case MENU_DOWNLOAD_ALL :\r
SetCurrentDirAsDirHist();\r
- DownLoadProc(NO, NO, YES);\r
+ DownloadProc(NO, NO, YES);\r
break;\r
\r
case MENU_DOWNLOAD_NAME :\r
SetCurrentDirAsDirHist();\r
- InputDownLoadProc();\r
+ InputDownloadProc();\r
break;\r
\r
case MENU_UPLOAD :\r
SetCurrentDirAsDirHist();\r
- UpLoadListProc(NO, NO);\r
+ UploadListProc(NO, NO);\r
break;\r
\r
case MENU_UPLOAD_AS :\r
SetCurrentDirAsDirHist();\r
- UpLoadListProc(YES, NO);\r
+ UploadListProc(YES, NO);\r
break;\r
\r
case MENU_UPLOAD_ALL :\r
SetCurrentDirAsDirHist();\r
- UpLoadListProc(NO, YES);\r
+ UploadListProc(NO, YES);\r
break;\r
\r
case MENU_MIRROR_UPLOAD :\r
\r
case MENU_REGSAVE :\r
GetListTabWidth();\r
- SaveRegistory();\r
+ SaveRegistry();\r
SaveSettingsToFile();\r
break;\r
\r
case MENU_REGINIT :\r
if(DialogBox(hInstFtp, MAKEINTRESOURCE(reginit_dlg), hWnd, ExeEscDialogProc) == YES)\r
{\r
- ClearRegistory();\r
+ ClearRegistry();\r
SaveExit = NO;\r
PostMessage(hWnd, WM_CLOSE, 0, 0L);\r
}\r
if(SaveExit == YES)\r
{\r
GetListTabWidth();\r
- SaveRegistory();\r
+ SaveRegistry();\r
\r
if((CacheEntry > 0) && (CacheSave == YES))\r
SaveCache();\r
/* 不正なパスを検出 */\r
if(CheckPathViolation(&MainTransPkt) == NO)\r
{\r
-// if((Sts = DoDownLoad(AskCmdCtrlSkt(), &MainTransPkt, NO)) == 429)\r
+// if((Sts = DoDownload(AskCmdCtrlSkt(), &MainTransPkt, NO)) == 429)\r
// {\r
// ReConnectCmdSkt();\r
// 同時接続対応\r
CancelFlg = NO;\r
- Sts = DoDownLoad(AskCmdCtrlSkt(), &MainTransPkt, NO, &CancelFlg);\r
+ Sts = DoDownload(AskCmdCtrlSkt(), &MainTransPkt, NO, &CancelFlg);\r
// }\r
}\r
\r
#define MSGJPN013 _Tu8("SHA-1 used.", "SHA-1 used.")\r
#define MSGJPN014 _Tu8("MD4(S/KEY) used.", "MD4(S/KEY) used.")\r
#define MSGJPN015 _Tu8("Can't process One-time Password.", "Can't process One-time Password.")\r
-#define MSGJPN016 _Tu8("Searching host %s.", "Searching host %s.")\r
-#define MSGJPN017 _Tu8("Connecting %sto host %s (%s (%d)).", "Connecting %sto host %s (%s (%d)).")\r
-#define MSGJPN018 _Tu8("Connecting %sto host %s (%d).", "Connecting %sto host %s (%d).")\r
-#define MSGJPN019 _Tu8("Host %s not found.", "Host %s not found.")\r
-#define MSGJPN020 _Tu8("Connecting %sto host %s (%d).", "Connecting %sto host %s (%d).")\r
-#define MSGJPN021 _Tu8("SOCKS server %s not found.", "SOCKS server %s not found.")\r
-#define MSGJPN022 _Tu8("Connecting to SOCKS server %s (%d).", "Connecting to SOCKS server %s (%d).")\r
-#define MSGJPN023 _Tu8("Can't connect to SOCKS server. (Err=%d)", "Can't connect to SOCKS server. (Err=%d)")\r
-#define MSGJPN024 _Tu8("Can't connect to SOCKS server. (Err=%d)", "Can't connect to SOCKS server. (Err=%d)")\r
-#define MSGJPN025 _Tu8("Connected.", "Connected.")\r
-#define MSGJPN026 _Tu8("Can't connected.", "Can't connected.")\r
-#define MSGJPN027 _Tu8("Can't create socket.", "Can't create socket.")\r
-#define MSGJPN028 _Tu8("Can't connect to SOCKS server. (Err=%d)", "Can't connect to SOCKS server. (Err=%d)")\r
-#define MSGJPN029 _Tu8("Can't connect to SOCKS server. (Err=%d)", "Can't connect to SOCKS server. (Err=%d)")\r
-#define MSGJPN030 _Tu8("Can't create listen socket.", "Can't create listen socket.")\r
-#define MSGJPN031 _Tu8("PORT command not accepted", "PORT command not accepted")\r
+#define MSGJPN016 _Tu8("Searching host %s. (%s)", "Searching host %s. (%s)")\r
+#define MSGJPN017 _Tu8("Connecting %sto host %s (%s (%d)). (%s)", "Connecting %sto host %s (%s (%d)). (%s)")\r
+#define MSGJPN018 _Tu8("Connecting %sto host %s (%d). (%s)", "Connecting %sto host %s (%d). (%s)")\r
+#define MSGJPN019 _Tu8("Host %s not found. (%s)", "Host %s not found. (%s)")\r
+#define MSGJPN020 _Tu8("Connecting %sto host %s (%d). (%s)", "Connecting %sto host %s (%d). (%s)")\r
+#define MSGJPN021 _Tu8("SOCKS server %s not found. (%s)", "SOCKS server %s not found. (%s)")\r
+#define MSGJPN022 _Tu8("Connecting to SOCKS server %s (%d). (%s)", "Connecting to SOCKS server %s (%d). (%s)")\r
+#define MSGJPN023 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")\r
+#define MSGJPN024 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")\r
+#define MSGJPN025 _Tu8("Connected. (%s)", "Connected. (%s)")\r
+#define MSGJPN026 _Tu8("Can't connected. (%s)", "Can't connected. (%s)")\r
+#define MSGJPN027 _Tu8("Can't create socket. (%s)", "Can't create socket. (%s)")\r
+#define MSGJPN028 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")\r
+#define MSGJPN029 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")\r
+#define MSGJPN030 _Tu8("Can't create listen socket. (%s)", "Can't create listen socket. (%s)")\r
+#define MSGJPN031 _Tu8("PORT command not accepted. (%s)", "PORT command not accepted. (%s)")\r
#define MSGJPN032 _Tu8("Connection is cancelled by user.", "Connection is cancelled by user.")\r
#define MSGJPN033 _Tu8("Can't send SOCKS command. (Cmd = %04X)", "Can't send SOCKS command. (Cmd = %04X)")\r
#define MSGJPN034 _Tu8("Can't receive SOCKS5 reply.", "Can't receive SOCKS5 reply.")\r
#define MSGJPN013 _Tu8("SHA-1を使用します.", "SHA-1\xE3\x82\x92\xE4\xBD\xBF\xE7\x94\xA8\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99.")\r
#define MSGJPN014 _Tu8("MD4(S/KEY)を使用します.", "MD4(S/KEY)\xE3\x82\x92\xE4\xBD\xBF\xE7\x94\xA8\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99.")\r
#define MSGJPN015 _Tu8("ワンタイムパスワードが処理できません", "\xE3\x83\xAF\xE3\x83\xB3\xE3\x82\xBF\xE3\x82\xA4\xE3\x83\xA0\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE5\x87\xA6\xE7\x90\x86\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93")\r
-#define MSGJPN016 _Tu8("ホスト %s を探しています.", "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s \xE3\x82\x92\xE6\x8E\xA2\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99.")\r
-#define MSGJPN017 _Tu8("%sホスト %s (%s (%d)) に接続しています.", "%s\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s (%s (%d)) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99.")\r
-#define MSGJPN018 _Tu8("%sホスト %s (%d) に接続しています.", "%s\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s (%d) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99.")\r
-#define MSGJPN019 _Tu8("ホスト %s が見つかりません.", "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s \xE3\x81\x8C\xE8\xA6\x8B\xE3\x81\xA4\xE3\x81\x8B\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.")\r
-#define MSGJPN020 _Tu8("%sホスト %s (%d) に接続しています.", "%s\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s (%d) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99.")\r
-#define MSGJPN021 _Tu8("SOCKSサーバー %s が見つかりません.", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC %s \xE3\x81\x8C\xE8\xA6\x8B\xE3\x81\xA4\xE3\x81\x8B\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.")\r
-#define MSGJPN022 _Tu8("SOCKSサーバー %s (%d) に接続しています。", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC %s (%d) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99\xE3\x80\x82")\r
-#define MSGJPN023 _Tu8("SOCKSサーバーに接続できません. (Err=%d)", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d)")\r
-#define MSGJPN024 _Tu8("SOCKSサーバーに接続できません. (Err=%d)", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d)")\r
-#define MSGJPN025 _Tu8("接続しました.", "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.")\r
-#define MSGJPN026 _Tu8("接続できません.", "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.")\r
-#define MSGJPN027 _Tu8("ソケットが作成できません.", "\xE3\x82\xBD\xE3\x82\xB1\xE3\x83\x83\xE3\x83\x88\xE3\x81\x8C\xE4\xBD\x9C\xE6\x88\x90\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.")\r
-#define MSGJPN028 _Tu8("SOCKSサーバーに接続できません. (Err=%d)", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d)")\r
-#define MSGJPN029 _Tu8("SOCKSサーバーに接続できません. (Err=%d)", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d)")\r
-#define MSGJPN030 _Tu8("Listenソケットが作成できません.", "Listen\xE3\x82\xBD\xE3\x82\xB1\xE3\x83\x83\xE3\x83\x88\xE3\x81\x8C\xE4\xBD\x9C\xE6\x88\x90\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.")\r
-#define MSGJPN031 _Tu8("PORTコマンドが受け付けられません.", "PORT\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\x8C\xE5\x8F\x97\xE3\x81\x91\xE4\xBB\x98\xE3\x81\x91\xE3\x82\x89\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.")\r
+#define MSGJPN016 _Tu8("ホスト %s を探しています. (%s)", "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s \xE3\x82\x92\xE6\x8E\xA2\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99. (%s)")\r
+#define MSGJPN017 _Tu8("%sホスト %s (%s (%d)) に接続しています. (%s)", "%s\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s (%s (%d)) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99. (%s)")\r
+#define MSGJPN018 _Tu8("%sホスト %s (%d) に接続しています. (%s)", "%s\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s (%d) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99. (%s)")\r
+#define MSGJPN019 _Tu8("ホスト %s が見つかりません. (%s)", "\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s \xE3\x81\x8C\xE8\xA6\x8B\xE3\x81\xA4\xE3\x81\x8B\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (%s)")\r
+#define MSGJPN020 _Tu8("%sホスト %s (%d) に接続しています. (%s)", "%s\xE3\x83\x9B\xE3\x82\xB9\xE3\x83\x88 %s (%d) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99. (%s)")\r
+#define MSGJPN021 _Tu8("SOCKSサーバー %s が見つかりません. (%s)", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC %s \xE3\x81\x8C\xE8\xA6\x8B\xE3\x81\xA4\xE3\x81\x8B\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (%s)")\r
+#define MSGJPN022 _Tu8("SOCKSサーバー %s (%d) に接続しています。 (%s)", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC %s (%d) \xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99\xE3\x80\x82 (%s)")\r
+#define MSGJPN023 _Tu8("SOCKSサーバーに接続できません. (Err=%d) (%s)", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d) (%s)")\r
+#define MSGJPN024 _Tu8("SOCKSサーバーに接続できません. (Err=%d) (%s)", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d) (%s)")\r
+#define MSGJPN025 _Tu8("接続しました. (%s)", "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F. (%s)")\r
+#define MSGJPN026 _Tu8("接続できません. (%s)", "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (%s)")\r
+#define MSGJPN027 _Tu8("ソケットが作成できません. (%s)", "\xE3\x82\xBD\xE3\x82\xB1\xE3\x83\x83\xE3\x83\x88\xE3\x81\x8C\xE4\xBD\x9C\xE6\x88\x90\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (%s)")\r
+#define MSGJPN028 _Tu8("SOCKSサーバーに接続できません. (Err=%d) (%s)", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d) (%s)")\r
+#define MSGJPN029 _Tu8("SOCKSサーバーに接続できません. (Err=%d) (%s)", "SOCKS\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (Err=%d) (%s)")\r
+#define MSGJPN030 _Tu8("Listenソケットが作成できません. (%s)", "Listen\xE3\x82\xBD\xE3\x82\xB1\xE3\x83\x83\xE3\x83\x88\xE3\x81\x8C\xE4\xBD\x9C\xE6\x88\x90\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (%s)")\r
+#define MSGJPN031 _Tu8("PORTコマンドが受け付けられません. (%s)", "PORT\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\x8C\xE5\x8F\x97\xE3\x81\x91\xE4\xBB\x98\xE3\x81\x91\xE3\x82\x89\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93. (%s)")\r
#define MSGJPN032 _Tu8("接続はユーザーによって中止されました.", "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xAF\xE3\x83\xA6\xE3\x83\xBC\xE3\x82\xB6\xE3\x83\xBC\xE3\x81\xAB\xE3\x82\x88\xE3\x81\xA3\xE3\x81\xA6\xE4\xB8\xAD\xE6\xAD\xA2\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.")\r
#define MSGJPN033 _Tu8("SOCKSのコマンドが送れませんでした (Cmd = %04X)", "SOCKS\xE3\x81\xAE\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\x8C\xE9\x80\x81\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F (Cmd = %04X)")\r
#define MSGJPN034 _Tu8("SOCKS5のコマンドに対するリプライが受信できませんでした", "SOCKS5\xE3\x81\xAE\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x81\xAB\xE5\xAF\xBE\xE3\x81\x99\xE3\x82\x8B\xE3\x83\xAA\xE3\x83\x97\xE3\x83\xA9\xE3\x82\xA4\xE3\x81\x8C\xE5\x8F\x97\xE4\xBF\xA1\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F")\r
+++ /dev/null
-
-#include <windows.h>
-
-/**
- * アドレス固定のWide文字列とそれに対応するUTF-8文字列を格納する構造体
- */
-typedef struct {
- const wchar_t *ws;
- char *u8s;
- size_t u8size;
-} StrPair;
-
-static BOOL g_initialized = FALSE;
-static CRITICAL_SECTION g_msgUtilLLock;
-
-// Wide文字列 - UTF-8文字列 対応Map
-static StrPair *pStrMap = NULL;
-
-//! 現在有効なStrPairの数
-static int strMapCount = 0;
-
-//! 確保済みのStrPairの領域数
-static int strMapMaxCount = 0;
-
-/**
- * staticなWide文字列に対応するUTF-8バイナリ文字列領域を確保し、その先頭アドレスを返す
- */
-const char* const MessageUtil_GetUTF8StaticBinaryBlock(const wchar_t* const ws, size_t ws_area_length)
-{
- int i = 0;
- int wcsCount = 0;
- int newSize = 0;
- const char *pResult = NULL;
- if (!g_initialized)
- {
- InitializeCriticalSection(&g_msgUtilLLock);
- g_initialized = TRUE;
- }
- EnterCriticalSection(&g_msgUtilLLock);
- for (i = 0; i < strMapCount; i++)
- {
- if (pStrMap[i].ws == ws)
- {
- pResult = pStrMap[i].u8s;
- break;
- }
- }
- if (pResult == NULL)
- {
- if (strMapMaxCount < strMapCount + 1)
- {
- // 領域が足りなくなったので追加する
- if (strMapMaxCount == 0)
- {
- strMapMaxCount = 100;
- pStrMap = (StrPair*)malloc(sizeof(StrPair) * strMapMaxCount);
- }
- else
- {
- strMapMaxCount += 100;
- pStrMap = (StrPair*)realloc(pStrMap, sizeof(StrPair) * strMapMaxCount);
- }
- }
- newSize = WideCharToMultiByte(CP_UTF8, 0, ws, ws_area_length, 0, 0, NULL, NULL);
- if (newSize > 0)
- {
- int index = strMapCount;
- char *beginPos = 0;
- int postSize = 0;
- strMapCount++;
- pStrMap[index].ws = ws;
- pStrMap[index].u8size = newSize;
- beginPos = (char*)malloc(newSize);
- pStrMap[index].u8s = beginPos;
- postSize = WideCharToMultiByte(CP_UTF8, 0, ws, ws_area_length, beginPos, newSize, NULL, NULL);
- pResult = beginPos;
- }
- else
- {
- static char sEmpty[] = "";
- pResult = sEmpty;
- }
- }
- LeaveCriticalSection(&g_msgUtilLLock);
- return pResult;
-}
-
-/**
- * MessageUtil_GetUTF8StaticBinaryBlock() で確保した領域をすべて破棄する
- */
-void MessageUtil_FreeUTF8StaticBinaryBlocks()
-{
- int i = 0;
- if (!g_initialized)
- {
- InitializeCriticalSection(&g_msgUtilLLock);
- g_initialized = TRUE;
- }
- EnterCriticalSection(&g_msgUtilLLock);
- for (i = 0; i < strMapCount; i++)
- {
- free(pStrMap[i].u8s);
- }
- if (pStrMap)
- {
- free(pStrMap);
- pStrMap = (StrPair*)NULL;
- }
- LeaveCriticalSection(&g_msgUtilLLock);
-}
+++ /dev/null
-
-// 指定した文字列の UTF-8 バイナリ文字列の先頭アドレスを取得する u8("文字列リテラル") の形で呼び出す
-#define u8(x) MessageUtil_GetUTF8StaticBinaryBlock(L ## x, sizeof(L ## x) / sizeof(wchar_t))
-
-/**
- * UTF-8文字列バイナリを取得する。取得した文字列のアドレスはアプリケーション終了まで有効。
- * 失敗した場合は "" が返る。
- * 必ず u8マクロと組み合わせて、u8("文字列リテラル") の形で呼び出す。引数に文字列変数を渡した場合の動作は不定。
- *
- * @param[in] ws 文字列
- * @param[in] ws_area_length 文字列の長さ。終端NULL文字を含んだ値であること。ws: "" のとき、countof_ws: 1
- * @return wsで表される文字列のUTF8バイナリの先頭アドレス
- */
-const char* const MessageUtil_GetUTF8StaticBinaryBlock(const wchar_t* const ws, size_t ws_area_length);
-
-/**
- * UTF-8文字列群の文字領域を破棄する.
- *
- * MessageUtil_GetUTF8StaticBinaryBlock()で確保した文字列領域をすべて開放する。アプリケーション終了時に呼び出すこと.
- */
-void MessageUtil_FreeUTF8StaticBinaryBlocks();
extern int FolderAttrNum;\r
// ファイルアイコン表示対応\r
extern int DispFileIcon;\r
+// ディレクトリ自動作成\r
+extern int MakeAllDir;\r
\r
\r
/*----- オプションのプロパティシート ------------------------------------------\r
SendDlgItemMessage(hDlg, TRMODE_TIME, BM_SETCHECK, SaveTimeStamp, 0);\r
SendDlgItemMessage(hDlg, TRMODE_EOF, BM_SETCHECK, RmEOF, 0);\r
SendDlgItemMessage(hDlg, TRMODE_SEMICOLON, BM_SETCHECK, VaxSemicolon, 0);\r
+ // ディレクトリ自動作成\r
+ SendDlgItemMessage(hDlg, TRMODE_MAKEDIR, BM_SETCHECK, MakeAllDir, 0);\r
\r
SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(TRMODE_EXT_LIST, 0), 0);\r
\r
SaveTimeStamp = SendDlgItemMessage(hDlg, TRMODE_TIME, BM_GETCHECK, 0, 0);\r
RmEOF = SendDlgItemMessage(hDlg, TRMODE_EOF, BM_GETCHECK, 0, 0);\r
VaxSemicolon = SendDlgItemMessage(hDlg, TRMODE_SEMICOLON, BM_GETCHECK, 0, 0);\r
+ // ディレクトリ自動作成\r
+ MakeAllDir = SendDlgItemMessage(hDlg, TRMODE_MAKEDIR, BM_GETCHECK, 0, 0);\r
break;\r
\r
case PSN_RESET :\r
extern BYTE SSLRootCAFileHash[20];\r
// ファイルアイコン表示対応\r
extern int DispFileIcon;\r
+// ディレクトリ自動作成\r
+extern int MakeAllDir;\r
\r
/*----- マスタパスワードの設定 ----------------------------------------------\r
*\r
* なし\r
*----------------------------------------------------------------------------*/\r
\r
-void SaveRegistory(void)\r
+void SaveRegistry(void)\r
{\r
void *hKey3;\r
void *hKey4;\r
WriteStringToReg(hKey4, "RootCertHash", Str);\r
// ファイルアイコン表示対応\r
WriteIntValueToReg(hKey4, "ListIcon", DispFileIcon);\r
+ // ディレクトリ自動作成\r
+ WriteIntValueToReg(hKey4, "MakeDir", MakeAllDir);\r
}\r
CloseSubKey(hKey4);\r
}\r
* NO: 読み出し失敗(設定無し)\r
*----------------------------------------------------------------------------*/\r
\r
-int LoadRegistory(void)\r
+int LoadRegistry(void)\r
{\r
void *hKey3;\r
void *hKey4;\r
StrReadIn(Buf, sizeof(SSLRootCAFileHash), (char*)&SSLRootCAFileHash);\r
// ファイルアイコン表示対応\r
ReadIntValueFromReg(hKey4, "ListIcon", &DispFileIcon);\r
+ // ディレクトリ自動作成\r
+ ReadIntValueFromReg(hKey4, "MakeDir", &MakeAllDir);\r
\r
CloseSubKey(hKey4);\r
}\r
* YES/NO=設定無し\r
*----------------------------------------------------------------------------*/\r
\r
-DWORD LoadHideDriveListRegistory(void)\r
+DWORD LoadHideDriveListRegistry(void)\r
{\r
HKEY hKey1;\r
HKEY hKey2;\r
* なし\r
*----------------------------------------------------------------------------*/\r
\r
-void ClearRegistory(void)\r
+void ClearRegistry(void)\r
{\r
HKEY hKey2;\r
HKEY hKey3;\r
if(WriteOutRegToFile(Handle) == TRUE)\r
{\r
// /* レジストリをクリア */\r
-// ClearRegistory();\r
+// ClearRegistry();\r
}\r
}\r
/* テーブルを削除 */\r
* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
-int DoQUIT(SOCKET ctrl_skt)\r
+// 同時接続対応\r
+//int DoQUIT(SOCKET ctrl_skt)\r
+int DoQUIT(SOCKET ctrl_skt, int *CancelCheckWork)\r
{\r
int Ret;\r
\r
if(SendQuit == YES)\r
// 同時接続対応\r
// Ret = command(ctrl_skt, NULL, &CheckCancelFlg, "QUIT") / 100;\r
- Ret = command(ctrl_skt, NULL, &CancelFlg, "QUIT") / 100;\r
+ Ret = command(ctrl_skt, NULL, CancelCheckWork, "QUIT") / 100;\r
\r
return(Ret);\r
}\r
MainTransPkt.hWndTrans = hWnd;\r
MainTransPkt.Next = NULL;\r
\r
- Sts = DoDownLoad(cSkt, &MainTransPkt, YES, CancelCheckWork);\r
+ Sts = DoDownload(cSkt, &MainTransPkt, YES, CancelCheckWork);\r
\r
//#pragma aaa\r
//DoPrintf("===== DoDirList Done.");\r
static LRESULT CALLBACK SocketWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
static int AskAsyncDone(SOCKET s, int *Error, int Mask);\r
static int AskAsyncDoneDbase(HANDLE Async, int *Error);\r
-static int RegistAsyncTable(SOCKET s);\r
-static int RegistAsyncTableDbase(HANDLE Async);\r
-static int UnRegistAsyncTable(SOCKET s);\r
-static int UnRegistAsyncTableDbase(HANDLE Async);\r
+static int RegisterAsyncTable(SOCKET s);\r
+static int RegisterAsyncTableDbase(HANDLE Async);\r
+static int UnregisterAsyncTable(SOCKET s);\r
+static int UnregisterAsyncTableDbase(HANDLE Async);\r
\r
\r
/*===== 外部参照 =====*/\r
\r
case WM_ASYNC_DBASE :\r
// APIの仕様上ハンドルが登録される前にウィンドウメッセージが呼び出される可能性あり\r
- RegistAsyncTableDbase((HANDLE)wParam);\r
+ RegisterAsyncTableDbase((HANDLE)wParam);\r
// スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
for(Pos = 0; Pos < MAX_SIGNAL_ENTRY_DBASE; Pos++)\r
* \r
*----------------------------------------------------------------------------*/\r
\r
-static int RegistAsyncTable(SOCKET s)\r
+static int RegisterAsyncTable(SOCKET s)\r
{\r
int Sts;\r
int Pos;\r
* \r
*----------------------------------------------------------------------------*/\r
\r
-static int RegistAsyncTableDbase(HANDLE Async)\r
+static int RegisterAsyncTableDbase(HANDLE Async)\r
{\r
int Sts;\r
int Pos;\r
* \r
*----------------------------------------------------------------------------*/\r
\r
-static int UnRegistAsyncTable(SOCKET s)\r
+static int UnregisterAsyncTable(SOCKET s)\r
{\r
int Sts;\r
int Pos;\r
* \r
*----------------------------------------------------------------------------*/\r
\r
-static int UnRegistAsyncTableDbase(HANDLE Async)\r
+static int UnregisterAsyncTableDbase(HANDLE Async)\r
{\r
int Sts;\r
int Pos;\r
hAsync = WSAAsyncGetHostByNameM(hWndSocket, WM_ASYNC_DBASE, Name, Buf, Len);\r
if(hAsync != NULL)\r
{\r
- RegistAsyncTableDbase(hAsync);\r
+ RegisterAsyncTableDbase(hAsync);\r
while((*CancelCheckWork == NO) && (AskAsyncDoneDbase(hAsync, &Error) != YES))\r
{\r
Sleep(1);\r
{\r
Ret = (struct hostent *)Buf;\r
}\r
- UnRegistAsyncTableDbase(hAsync);\r
+ UnregisterAsyncTableDbase(hAsync);\r
}\r
return(Ret);\r
#else\r
hAsync = WSAAsyncGetHostByNameIPv6M(hWndSocket, WM_ASYNC_DBASE, Name, Buf, Len, AF_INET6);\r
if(hAsync != NULL)\r
{\r
- RegistAsyncTableDbase(hAsync);\r
+ RegisterAsyncTableDbase(hAsync);\r
while((*CancelCheckWork == NO) && (AskAsyncDoneDbase(hAsync, &Error) != YES))\r
{\r
Sleep(1);\r
{\r
Ret = (struct hostent *)Buf;\r
}\r
- UnRegistAsyncTableDbase(hAsync);\r
+ UnregisterAsyncTableDbase(hAsync);\r
}\r
return(Ret);\r
#else\r
Ret = socket(af, type, protocol);\r
if(Ret != INVALID_SOCKET)\r
{\r
- RegistAsyncTable(Ret);\r
+ RegisterAsyncTable(Ret);\r
}\r
#if DBG_MSG\r
DoPrintf("# do_socket (S=%x)", Ret);\r
\r
// スレッド衝突のバグ修正\r
WSAAsyncSelect(s, hWndSocket, WM_ASYNC_SOCKET, 0);\r
- UnRegistAsyncTable(s);\r
+ UnregisterAsyncTable(s);\r
// FTPS対応\r
// Ret = closesocket(s);\r
Ret = FTPS_closesocket(s);\r
if(BackgrndMessageProc() == YES)\r
CancelCheckWork = YES;\r
// スレッド衝突のバグ修正\r
-// UnRegistAsyncTable(s);\r
+// UnregisterAsyncTable(s);\r
\r
#if DBG_MSG\r
DoPrintf("# Exit close");\r
DoPrintf("## do_sccept (S=%x)", Ret2);\r
DoPrintf("## Async set: FD_CONNECT|FD_CLOSE|FD_ACCEPT|FD_READ|FD_WRITE");\r
#endif\r
- RegistAsyncTable(Ret2);\r
+ RegisterAsyncTable(Ret2);\r
// 高速化のためFD_READとFD_WRITEを使用しない\r
// if(WSAAsyncSelect(Ret2, hWndSocket, WM_ASYNC_SOCKET, FD_CONNECT | FD_CLOSE | FD_ACCEPT | FD_READ | FD_WRITE) == SOCKET_ERROR)\r
if(WSAAsyncSelect(Ret2, hWndSocket, WM_ASYNC_SOCKET, FD_CONNECT | FD_CLOSE | FD_ACCEPT) == SOCKET_ERROR)\r
}\r
else\r
PostMessage(pData->hWnd, pData->wMsg, (WPARAM)pData->h, (LPARAM)(ERROR_INVALID_FUNCTION << 16));\r
- free(pData->name);\r
- free(pData);\r
// CreateThreadが返すハンドルが重複するのを回避\r
Sleep(10000);\r
+ CloseHandle(pData->h);\r
+ free(pData->name);\r
+ free(pData);\r
return 0;\r
}\r
\r
\r
/* ドライブ名をセットしておく */\r
GetLogicalDriveStrings(FMAX_PATH, Tmp);\r
- NoDrives = LoadHideDriveListRegistory();\r
+ NoDrives = LoadHideDriveListRegistry();\r
Pos = Tmp;\r
while(*Pos != NUL)\r
{\r