• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Loweynet


Commit MetaInfo

Revisão663728dfaea4b4e0da170722b4046764e01555dc (tree)
Hora2012-02-19 00:14:32
Autors_kawamoto <s_kawamoto@user...>
Commiters_kawamoto

Mensagem de Log

Change behavior of automatic IPv4/IPv6 selection.
Modify messages.
Fix bugs of hanging at accessing non-existent directories.
Fix spelling mistakes.
Modify documents.
Remove unused files.

Mudança Sumário

Diff

--- a/FFFTP.vc90.vcproj
+++ b/FFFTP.vc90.vcproj
@@ -619,6 +619,10 @@
619619 >
620620 </File>
621621 <File
622+ RelativePath=".\Resource\list_16.bmp"
623+ >
624+ </File>
625+ <File
622626 RelativePath=".\Resource\list_bmp.bmp"
623627 >
624628 </File>
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
--- a/FFFTP_English.vc90.vcproj
+++ b/FFFTP_English.vc90.vcproj
@@ -619,6 +619,10 @@
619619 >
620620 </File>
621621 <File
622+ RelativePath=".\Resource_eng\list_16.bmp"
623+ >
624+ </File>
625+ <File
622626 RelativePath=".\Resource_eng\list_bmp.bmp"
623627 >
624628 </File>
@@ -647,15 +651,15 @@
647651 />
648652 </FileConfiguration>
649653 <FileConfiguration
650- Name="Release|Win32"
654+ Name="Debug|x64"
655+ ExcludedFromBuild="true"
651656 >
652657 <Tool
653658 Name="VCCustomBuildTool"
654659 />
655660 </FileConfiguration>
656661 <FileConfiguration
657- Name="Debug|x64"
658- ExcludedFromBuild="true"
662+ Name="Release|Win32"
659663 >
660664 <Tool
661665 Name="VCCustomBuildTool"
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
--- a/Resource/FFFTP.rc
+++ b/Resource/FFFTP.rc
@@ -353,7 +353,7 @@ BEGIN
353353 LTEXT "",stc1,9,18,88,8
354354 END
355355
356-opt_user_dlg DIALOG 0, 0, 211, 139
356+opt_user_dlg DIALOG 0, 0, 211, 155
357357 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
358358 FONT 9, "MS Shell Dlg"
359359 BEGIN
@@ -362,7 +362,7 @@ BEGIN
362362 LTEXT "ƒ[ƒ‹ƒAƒhƒŒƒX‚Íanonymous FTP‚̃pƒXƒ[ƒh‚Æ‚µ‚ÄŽg—p‚³‚ê‚Ü‚·B",-1,28,36,169,18,SS_SUNKEN
363363 END
364364
365-opt_tool_dlg DIALOG 0, 0, 211, 139
365+opt_tool_dlg DIALOG 0, 0, 211, 155
366366 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
367367 FONT 9, "MS Shell Dlg"
368368 BEGIN
@@ -448,7 +448,7 @@ BEGIN
448448 LTEXT "ì¬‚·‚éƒtƒHƒ‹ƒ_‚Ì–¼‘O‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B",-1,7,7,160,8
449449 END
450450
451-opt_misc_dlg DIALOG 0, 0, 211, 139
451+opt_misc_dlg DIALOG 0, 0, 211, 155
452452 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
453453 FONT 9, "MS Shell Dlg"
454454 BEGIN
@@ -549,7 +549,7 @@ BEGIN
549549 PUSHBUTTON "‚¢‚¢‚¦",IDCANCEL,112,42,50,14
550550 END
551551
552-opt_trmode2_dlg DIALOG 0, 0, 211, 139
552+opt_trmode2_dlg DIALOG 0, 0, 211, 155
553553 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
554554 FONT 9, "MS Shell Dlg"
555555 BEGIN
@@ -567,7 +567,7 @@ BEGIN
567567 LTEXT "ƒ~ƒ‰[ƒŠƒ“ƒOƒAƒbƒvƒ[ƒhŽž‚̐ݒè‚́Auƒ~ƒ‰[ƒŠƒ“ƒOvƒ^ƒu‚Ì’†‚É‚ ‚è‚Ü‚·B",-1,18,56,181,17,SS_SUNKEN
568568 END
569569
570-opt_notify_dlg DIALOGEX 0, 0, 211, 139
570+opt_notify_dlg DIALOGEX 0, 0, 211, 155
571571 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
572572 FONT 9, "MS Shell Dlg", 0, 0, 0x0
573573 BEGIN
@@ -604,7 +604,7 @@ BEGIN
604604 PUSHBUTTON "ƒwƒ‹ƒv",9,165,90,50,14
605605 END
606606
607-opt_fire_dlg DIALOG 0, 0, 211, 139
607+opt_fire_dlg DIALOG 0, 0, 211, 155
608608 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
609609 FONT 9, "MS Shell Dlg"
610610 BEGIN
@@ -684,7 +684,7 @@ BEGIN
684684 LTEXT "‚±‚±‚Å“ü—Í‚µ‚½ƒ[ƒ‹ƒAƒhƒŒƒX‚́AŒã‚ŃIƒvƒVƒ‡ƒ“‚Ì\nuƒ†[ƒU[vƒ^ƒu‚Ì‚Æ‚±‚ë‚ŕύX‚Å‚«‚Ü‚·B",-1,16,48,164,18
685685 END
686686
687-opt_sound_dlg DIALOG 0, 0, 211, 139
687+opt_sound_dlg DIALOG 0, 0, 211, 155
688688 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
689689 FONT 9, "MS Shell Dlg"
690690 BEGIN
@@ -759,7 +759,7 @@ BEGIN
759759 CONTROL "”¼ŠpƒJƒi‚ð‘SŠp‚É•ÏŠ·",HSET_FN_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,114,107,81,10
760760 END
761761
762-opt_trmode1_dlg DIALOG 0, 0, 211, 139
762+opt_trmode1_dlg DIALOG 0, 0, 211, 155
763763 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
764764 FONT 9, "MS Shell Dlg"
765765 BEGIN
@@ -767,14 +767,15 @@ BEGIN
767767 CONTROL "í‚ɃAƒXƒL[ƒ‚[ƒh(&A)",TRMODE_ASCII,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,19,85,10
768768 CONTROL "í‚ɃoƒCƒiƒŠƒ‚[ƒh(&B)",TRMODE_BIN,"Button",BS_AUTORADIOBUTTON,13,33,84,10
769769 CONTROL "ƒtƒ@ƒCƒ‹–¼‚Őؑւ¦(&X)",TRMODE_AUTO,"Button",BS_AUTORADIOBUTTON,13,47,81,10
770+ LTEXT "¨",-1,98,49,8,8
770771 GROUPBOX "ƒAƒXƒL[ƒ‚[ƒh‚̃tƒ@ƒCƒ‹–¼(&F)",-1,104,7,99,84,WS_GROUP
771772 LISTBOX TRMODE_EXT_LIST,109,19,53,67,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
772773 PUSHBUTTON "’ljÁ(&I)...",TRMODE_ADD,167,19,31,14
773774 PUSHBUTTON "íœ",TRMODE_DEL,167,38,31,14
774775 CONTROL "ƒAƒXƒL[ƒ‚[ƒh‚ŃAƒbƒvƒ[ƒhŽžAEOF(Ctrl-Z)‚ðŽæ‚菜‚­(&Z)",TRMODE_EOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,196,10
775776 CONTROL "ƒ_ƒEƒ“ƒ[ƒh‚·‚éƒtƒ@ƒCƒ‹‚̃^ƒCƒ€ƒXƒ^ƒ“ƒv‚ðˆÛŽ(&T)",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10
776- LTEXT "¨",-1,98,49,8,8
777777 CONTROL "ƒtƒ@ƒCƒ‹–¼‚̃Zƒ~ƒRƒƒ“ˆÈ~‚ÍŽæ‚菜‚¢‚ă_ƒEƒ“ƒ[ƒh(&S)",TRMODE_SEMICOLON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10
778+ CONTROL "ƒtƒ@ƒCƒ‹–¼‚ð•Ï‚¦‚Ä“]‘—‚µ‚½ê‡‚ɃfƒBƒŒƒNƒgƒŠ‚ðì¬(&D)",TRMODE_MAKEDIR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,136,196,10
778779 END
779780
780781 up_exist_dlg DIALOG 0, 0, 223, 119
@@ -900,7 +901,7 @@ BEGIN
900901 CONTROL "",INP_ANONYMOUS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,164,30,16,8
901902 END
902903
903-opt_mirror_dlg DIALOG 0, 0, 211, 139
904+opt_mirror_dlg DIALOG 0, 0, 211, 155
904905 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
905906 FONT 9, "MS Shell Dlg"
906907 BEGIN
@@ -944,7 +945,7 @@ BEGIN
944945 CONTROL "",INP_ANONYMOUS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,164,30,16,8
945946 END
946947
947-opt_connect_dlg DIALOG 0, 0, 211, 139
948+opt_connect_dlg DIALOG 0, 0, 211, 155
948949 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
949950 FONT 9, "MS Shell Dlg"
950951 BEGIN
@@ -1024,7 +1025,7 @@ BEGIN
10241025 CTEXT "ˆ—‚𒆎~‚µ‚Ü‚·B",-1,7,31,140,8
10251026 END
10261027
1027-opt_trmode3_dlg DIALOG 0, 0, 211, 139
1028+opt_trmode3_dlg DIALOG 0, 0, 211, 155
10281029 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
10291030 FONT 9, "MS Shell Dlg"
10301031 BEGIN
@@ -1281,7 +1282,7 @@ BEGIN
12811282 PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹",IDCANCEL,96,72,50,14
12821283 END
12831284
1284-opt_disp_dlg DIALOG 0, 0, 211, 139
1285+opt_disp_dlg DIALOG 0, 0, 211, 155
12851286 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
12861287 FONT 9, "MS Shell Dlg"
12871288 BEGIN
@@ -1484,7 +1485,7 @@ BEGIN
14841485 LEFTMARGIN, 7
14851486 RIGHTMARGIN, 204
14861487 TOPMARGIN, 7
1487- BOTTOMMARGIN, 134
1488+ BOTTOMMARGIN, 148
14881489 END
14891490
14901491 opt_tool_dlg, DIALOG
@@ -1492,7 +1493,7 @@ BEGIN
14921493 LEFTMARGIN, 7
14931494 RIGHTMARGIN, 204
14941495 TOPMARGIN, 7
1495- BOTTOMMARGIN, 132
1496+ BOTTOMMARGIN, 148
14961497 END
14971498
14981499 chmod_dlg, DIALOG
@@ -1524,7 +1525,7 @@ BEGIN
15241525 LEFTMARGIN, 7
15251526 RIGHTMARGIN, 204
15261527 TOPMARGIN, 7
1527- BOTTOMMARGIN, 132
1528+ BOTTOMMARGIN, 148
15281529 END
15291530
15301531 hostname_dlg, DIALOG
@@ -1587,7 +1588,7 @@ BEGIN
15871588 LEFTMARGIN, 7
15881589 RIGHTMARGIN, 204
15891590 TOPMARGIN, 7
1590- BOTTOMMARGIN, 135
1591+ BOTTOMMARGIN, 148
15911592 END
15921593
15931594 opt_notify_dlg, DIALOG
@@ -1595,7 +1596,7 @@ BEGIN
15951596 LEFTMARGIN, 7
15961597 RIGHTMARGIN, 204
15971598 TOPMARGIN, 7
1598- BOTTOMMARGIN, 132
1599+ BOTTOMMARGIN, 148
15991600 END
16001601
16011602 bmark_dlg, DIALOG
@@ -1611,7 +1612,7 @@ BEGIN
16111612 LEFTMARGIN, 7
16121613 RIGHTMARGIN, 204
16131614 TOPMARGIN, 7
1614- BOTTOMMARGIN, 132
1615+ BOTTOMMARGIN, 148
16151616 END
16161617
16171618 hset_adv_dlg, DIALOG
@@ -1651,7 +1652,7 @@ BEGIN
16511652 LEFTMARGIN, 7
16521653 RIGHTMARGIN, 204
16531654 TOPMARGIN, 7
1654- BOTTOMMARGIN, 132
1655+ BOTTOMMARGIN, 148
16551656 END
16561657
16571658 downerr_dlg, DIALOG
@@ -1683,7 +1684,7 @@ BEGIN
16831684 LEFTMARGIN, 7
16841685 RIGHTMARGIN, 204
16851686 TOPMARGIN, 7
1686- BOTTOMMARGIN, 135
1687+ BOTTOMMARGIN, 148
16871688 END
16881689
16891690 up_exist_dlg, DIALOG
@@ -1763,7 +1764,7 @@ BEGIN
17631764 LEFTMARGIN, 7
17641765 RIGHTMARGIN, 204
17651766 TOPMARGIN, 7
1766- BOTTOMMARGIN, 135
1767+ BOTTOMMARGIN, 148
17671768 END
17681769
17691770 somecmd_dlg, DIALOG
@@ -1787,7 +1788,7 @@ BEGIN
17871788 LEFTMARGIN, 7
17881789 RIGHTMARGIN, 204
17891790 TOPMARGIN, 7
1790- BOTTOMMARGIN, 132
1791+ BOTTOMMARGIN, 148
17911792 END
17921793
17931794 rasnotify_dlg, DIALOG
@@ -1835,7 +1836,7 @@ BEGIN
18351836 LEFTMARGIN, 7
18361837 RIGHTMARGIN, 204
18371838 TOPMARGIN, 7
1838- BOTTOMMARGIN, 135
1839+ BOTTOMMARGIN, 148
18391840 END
18401841
18411842 def_attr_dlg, DIALOG
@@ -1995,7 +1996,7 @@ BEGIN
19951996 LEFTMARGIN, 7
19961997 RIGHTMARGIN, 204
19971998 TOPMARGIN, 7
1998- BOTTOMMARGIN, 132
1999+ BOTTOMMARGIN, 148
19992000 END
20002001
20012002 bmark_edit_dlg, DIALOG
--- a/Resource/resource.h
+++ b/Resource/resource.h
@@ -215,6 +215,7 @@
215215 #define CONNECT_RASCLOSE 1014
216216 #define FIRE_LOWER 1014
217217 #define MIRROR_TIMECHECK 1014
218+#define TRMODE_MAKEDIR 1014
218219 #define TOOL_EDITOR_BR 1015
219220 #define PERM_A_READ 1015
220221 #define SOUND_TRNNG 1015
--- a/Resource_eng/FFFTP-eng.rc
+++ b/Resource_eng/FFFTP-eng.rc
@@ -354,7 +354,7 @@ BEGIN
354354 LTEXT "",stc1,9,18,88,8
355355 END
356356
357-opt_user_dlg DIALOG 0, 0, 211, 139
357+opt_user_dlg DIALOG 0, 0, 211, 155
358358 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
359359 FONT 9, "MS Shell Dlg"
360360 BEGIN
@@ -363,7 +363,7 @@ BEGIN
363363 LTEXT "This address is used for the anonymous FTP password.",-1,28,36,169,18,SS_SUNKEN
364364 END
365365
366-opt_tool_dlg DIALOG 0, 0, 211, 139
366+opt_tool_dlg DIALOG 0, 0, 211, 155
367367 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
368368 FONT 9, "MS Shell Dlg"
369369 BEGIN
@@ -449,7 +449,7 @@ BEGIN
449449 LTEXT "Enter new folder name:",-1,7,7,160,8
450450 END
451451
452-opt_misc_dlg DIALOG 0, 0, 211, 139
452+opt_misc_dlg DIALOG 0, 0, 211, 155
453453 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
454454 FONT 9, "MS Shell Dlg"
455455 BEGIN
@@ -552,7 +552,7 @@ BEGIN
552552 PUSHBUTTON "No",IDCANCEL,112,42,50,14
553553 END
554554
555-opt_trmode2_dlg DIALOG 0, 0, 211, 139
555+opt_trmode2_dlg DIALOG 0, 0, 211, 155
556556 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
557557 FONT 9, "MS Shell Dlg"
558558 BEGIN
@@ -570,7 +570,7 @@ BEGIN
570570 LTEXT "Mirror Upload/Download settings are on the Mirror tab.",-1,18,56,181,17,SS_SUNKEN
571571 END
572572
573-opt_notify_dlg DIALOGEX 0, 0, 211, 139
573+opt_notify_dlg DIALOGEX 0, 0, 211, 155
574574 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
575575 FONT 9, "MS Shell Dlg", 0, 0, 0x0
576576 BEGIN
@@ -607,7 +607,7 @@ BEGIN
607607 PUSHBUTTON "&Help",9,165,90,50,14
608608 END
609609
610-opt_fire_dlg DIALOG 0, 0, 211, 139
610+opt_fire_dlg DIALOG 0, 0, 211, 155
611611 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
612612 FONT 9, "MS Shell Dlg"
613613 BEGIN
@@ -689,7 +689,7 @@ BEGIN
689689 LTEXT "You can reenter mail address at the Option dialog.",-1,16,54,164,10
690690 END
691691
692-opt_sound_dlg DIALOG 0, 0, 211, 139
692+opt_sound_dlg DIALOG 0, 0, 211, 155
693693 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
694694 FONT 9, "MS Shell Dlg"
695695 BEGIN
@@ -766,7 +766,7 @@ BEGIN
766766 CONTROL "Hankaku to Zenkaku",HSET_FN_HANCNV,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,111,108,91,10
767767 END
768768
769-opt_trmode1_dlg DIALOG 0, 0, 211, 139
769+opt_trmode1_dlg DIALOG 0, 0, 211, 155
770770 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
771771 FONT 9, "MS Shell Dlg"
772772 BEGIN
@@ -774,15 +774,17 @@ BEGIN
774774 CONTROL "Always &ASCII mode",TRMODE_ASCII,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,19,85,10
775775 CONTROL "Always &BINARY mode",TRMODE_BIN,"Button",BS_AUTORADIOBUTTON,13,33,84,10
776776 CONTROL "&Filename dependent",TRMODE_AUTO,"Button",BS_AUTORADIOBUTTON,13,47,78,10
777+ LTEXT "->",-1,98,49,8,8
777778 GROUPBOX "ASCII mode Filenames",-1,104,7,99,84,WS_GROUP
778779 LISTBOX TRMODE_EXT_LIST,109,19,53,67,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
779780 PUSHBUTTON "A&dd...",TRMODE_ADD,167,19,31,14
780781 PUSHBUTTON "Delete",TRMODE_DEL,167,38,31,14
781782 CONTROL "&Remove EOF for ASCII mode upload",TRMODE_EOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,196,10
782- CONTROL "Re&tain file date/time on download",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10
783- LTEXT "->",-1,98,49,8,8
783+ CONTROL "Retain file date/&time on download",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10
784784 CONTROL "Truncate filename before &semicolon on download",TRMODE_SEMICOLON,
785785 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10
786+ CONTROL "Create &directory at file transfer with renaming",TRMODE_MAKEDIR,
787+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,136,196,10
786788 END
787789
788790 up_exist_dlg DIALOG 0, 0, 234, 119
@@ -913,7 +915,7 @@ BEGIN
913915 CONTROL "",INP_ANONYMOUS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,164,30,16,8
914916 END
915917
916-opt_mirror_dlg DIALOG 0, 0, 211, 139
918+opt_mirror_dlg DIALOG 0, 0, 211, 155
917919 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
918920 FONT 9, "MS Shell Dlg"
919921 BEGIN
@@ -958,7 +960,7 @@ BEGIN
958960 CONTROL "",INP_ANONYMOUS,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,164,30,16,8
959961 END
960962
961-opt_connect_dlg DIALOG 0, 0, 211, 139
963+opt_connect_dlg DIALOG 0, 0, 211, 155
962964 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
963965 FONT 9, "MS Shell Dlg"
964966 BEGIN
@@ -1048,7 +1050,7 @@ BEGIN
10481050 CTEXT "Stop processing.",-1,7,20,141,8
10491051 END
10501052
1051-opt_trmode3_dlg DIALOG 0, 0, 211, 139
1053+opt_trmode3_dlg DIALOG 0, 0, 211, 155
10521054 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
10531055 FONT 9, "MS Shell Dlg"
10541056 BEGIN
@@ -1306,7 +1308,7 @@ BEGIN
13061308 PUSHBUTTON "Cancel",IDCANCEL,96,63,50,14
13071309 END
13081310
1309-opt_disp_dlg DIALOG 0, 0, 211, 139
1311+opt_disp_dlg DIALOG 0, 0, 211, 155
13101312 STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
13111313 FONT 9, "MS Shell Dlg"
13121314 BEGIN
@@ -1512,7 +1514,7 @@ BEGIN
15121514 LEFTMARGIN, 7
15131515 RIGHTMARGIN, 204
15141516 TOPMARGIN, 7
1515- BOTTOMMARGIN, 134
1517+ BOTTOMMARGIN, 148
15161518 END
15171519
15181520 opt_tool_dlg, DIALOG
@@ -1520,7 +1522,7 @@ BEGIN
15201522 LEFTMARGIN, 7
15211523 RIGHTMARGIN, 204
15221524 TOPMARGIN, 7
1523- BOTTOMMARGIN, 132
1525+ BOTTOMMARGIN, 148
15241526 END
15251527
15261528 chmod_dlg, DIALOG
@@ -1552,7 +1554,7 @@ BEGIN
15521554 LEFTMARGIN, 7
15531555 RIGHTMARGIN, 204
15541556 TOPMARGIN, 7
1555- BOTTOMMARGIN, 132
1557+ BOTTOMMARGIN, 148
15561558 END
15571559
15581560 hostname_dlg, DIALOG
@@ -1615,7 +1617,7 @@ BEGIN
16151617 LEFTMARGIN, 7
16161618 RIGHTMARGIN, 204
16171619 TOPMARGIN, 7
1618- BOTTOMMARGIN, 135
1620+ BOTTOMMARGIN, 148
16191621 END
16201622
16211623 opt_notify_dlg, DIALOG
@@ -1623,7 +1625,7 @@ BEGIN
16231625 LEFTMARGIN, 7
16241626 RIGHTMARGIN, 204
16251627 TOPMARGIN, 7
1626- BOTTOMMARGIN, 132
1628+ BOTTOMMARGIN, 148
16271629 END
16281630
16291631 bmark_dlg, DIALOG
@@ -1639,7 +1641,7 @@ BEGIN
16391641 LEFTMARGIN, 7
16401642 RIGHTMARGIN, 204
16411643 TOPMARGIN, 7
1642- BOTTOMMARGIN, 132
1644+ BOTTOMMARGIN, 148
16431645 END
16441646
16451647 hset_adv_dlg, DIALOG
@@ -1679,7 +1681,7 @@ BEGIN
16791681 LEFTMARGIN, 7
16801682 RIGHTMARGIN, 204
16811683 TOPMARGIN, 7
1682- BOTTOMMARGIN, 132
1684+ BOTTOMMARGIN, 148
16831685 END
16841686
16851687 downerr_dlg, DIALOG
@@ -1711,7 +1713,7 @@ BEGIN
17111713 LEFTMARGIN, 7
17121714 RIGHTMARGIN, 204
17131715 TOPMARGIN, 7
1714- BOTTOMMARGIN, 135
1716+ BOTTOMMARGIN, 148
17151717 END
17161718
17171719 up_exist_dlg, DIALOG
@@ -1791,7 +1793,7 @@ BEGIN
17911793 LEFTMARGIN, 7
17921794 RIGHTMARGIN, 204
17931795 TOPMARGIN, 7
1794- BOTTOMMARGIN, 135
1796+ BOTTOMMARGIN, 148
17951797 END
17961798
17971799 somecmd_dlg, DIALOG
@@ -1815,7 +1817,7 @@ BEGIN
18151817 LEFTMARGIN, 7
18161818 RIGHTMARGIN, 204
18171819 TOPMARGIN, 7
1818- BOTTOMMARGIN, 132
1820+ BOTTOMMARGIN, 148
18191821 END
18201822
18211823 rasnotify_dlg, DIALOG
@@ -1863,7 +1865,7 @@ BEGIN
18631865 LEFTMARGIN, 7
18641866 RIGHTMARGIN, 204
18651867 TOPMARGIN, 7
1866- BOTTOMMARGIN, 135
1868+ BOTTOMMARGIN, 148
18671869 END
18681870
18691871 def_attr_dlg, DIALOG
@@ -2023,7 +2025,7 @@ BEGIN
20232025 LEFTMARGIN, 7
20242026 RIGHTMARGIN, 204
20252027 TOPMARGIN, 7
2026- BOTTOMMARGIN, 132
2028+ BOTTOMMARGIN, 148
20272029 END
20282030
20292031 bmark_edit_dlg, DIALOG
--- a/Resource_eng/resource.h
+++ b/Resource_eng/resource.h
@@ -215,6 +215,7 @@
215215 #define CONNECT_RASCLOSE 1014
216216 #define FIRE_LOWER 1014
217217 #define MIRROR_TIMECHECK 1014
218+#define TRMODE_MAKEDIR 1014
218219 #define TOOL_EDITOR_BR 1015
219220 #define PERM_A_READ 1015
220221 #define SOUND_TRNNG 1015
--- a/common.h
+++ b/common.h
@@ -1537,12 +1537,12 @@ void CountPrevFfftpWindows(void);
15371537
15381538 /*===== ftpproc.c =====*/
15391539
1540-void DownLoadProc(int ChName, int ForceFile, int All);
1541-void DirectDownLoadProc(char *Fname);
1542-void InputDownLoadProc(void);
1540+void DownloadProc(int ChName, int ForceFile, int All);
1541+void DirectDownloadProc(char *Fname);
1542+void InputDownloadProc(void);
15431543 void MirrorDownloadProc(int Notify);
1544-void UpLoadListProc(int ChName, int All);
1545-void UpLoadDragProc(WPARAM wParam);
1544+void UploadListProc(int ChName, int All);
1545+void UploadDragProc(WPARAM wParam);
15461546 void MirrorUploadProc(int Notify);
15471547 void DeleteProc(void);
15481548 void RenameProc(void);
@@ -1603,7 +1603,9 @@ int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork);
16031603 //int DoQUOTE(char *CmdStr);
16041604 int DoQUOTE(SOCKET cSkt, char *CmdStr, int *CancelCheckWork);
16051605 SOCKET DoClose(SOCKET Sock);
1606-int DoQUIT(SOCKET ctrl_skt);
1606+// 同時接続対応
1607+//int DoQUIT(SOCKET ctrl_skt);
1608+int DoQUIT(SOCKET ctrl_skt, int *CancelCheckWork);
16071609 int DoDirListCmdSkt(char *AddOpt, char *Path, int Num, int *CancelCheckWork);
16081610 #if defined(HAVE_TANDEM)
16091611 void SwitchOSSProc(void);
@@ -1636,7 +1638,7 @@ int AskTransferNow(void);
16361638 int AskTransferFileNum(void);
16371639 void GoForwardTransWindow(void);
16381640 void InitTransCurDir(void);
1639-int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork);
1641+int DoDownload(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork);
16401642 int CheckPathViolation(TRANSPACKET *packet);
16411643
16421644 /*===== codecnv.c =====*/
@@ -1696,13 +1698,13 @@ int CheckFname(char *str, char *regexp);
16961698
16971699 /*===== registory.c =====*/
16981700
1699-void SaveRegistory(void);
1700-int LoadRegistory(void);
1701-void ClearRegistory(void);
1701+void SaveRegistry(void);
1702+int LoadRegistry(void);
1703+void ClearRegistry(void);
17021704 void SetMasterPassword( const char* );
17031705 int GetMasterPasswordStatus(void);
17041706 int ValidateMasterPassword(void);
1705-DWORD LoadHideDriveListRegistory(void);
1707+DWORD LoadHideDriveListRegistry(void);
17061708 void SaveSettingsToFile(void);
17071709 int LoadSettingsFromFile(void);
17081710
--- a/connect.c
+++ b/connect.c
@@ -340,7 +340,7 @@ void QuickConnectProc(void)
340340 EnableUserOpe();
341341
342342 if(strlen(File) > 0)
343- DirectDownLoadProc(File);
343+ DirectDownloadProc(File);
344344 }
345345 else
346346 {
@@ -528,7 +528,7 @@ void DirectConnectProc(char *unc, int Kanji, int Kana, int Fkanji, int TrMode)
528528 EnableUserOpe();
529529
530530 if(strlen(File) > 0)
531- DirectDownLoadProc(File);
531+ DirectDownloadProc(File);
532532 else
533533 ResetAutoExitFlg();
534534 }
@@ -1265,13 +1265,17 @@ void DisconnectProc(void)
12651265
12661266 if((CmdCtrlSocket != INVALID_SOCKET) && (CmdCtrlSocket != TrnCtrlSocket))
12671267 {
1268- DoQUIT(CmdCtrlSocket);
1268+ // 同時接続対応
1269+// DoQUIT(CmdCtrlSocket);
1270+ DoQUIT(CmdCtrlSocket, &CancelFlg);
12691271 DoClose(CmdCtrlSocket);
12701272 }
12711273
12721274 if(TrnCtrlSocket != INVALID_SOCKET)
12731275 {
1274- DoQUIT(TrnCtrlSocket);
1276+ // 同時接続対応
1277+// DoQUIT(TrnCtrlSocket);
1278+ DoQUIT(TrnCtrlSocket, &CancelFlg);
12751279 DoClose(TrnCtrlSocket);
12761280
12771281 SaveCurrentSetToHistory();
@@ -1994,17 +1998,109 @@ static int CheckOneTimePassword(char *Pass, char *Reply, int Type)
19941998 *----------------------------------------------------------------------------*/
19951999
19962000 // IPv6対応
2001+typedef SOCKET (__cdecl* LPCONNECTSOCK)(char*, int, char*, int*);
2002+
2003+typedef struct
2004+{
2005+ HANDLE h;
2006+ DWORD ExitCode;
2007+ char *host;
2008+ int port;
2009+ char *PreMsg;
2010+ int CancelCheckWork;
2011+ LPCONNECTSOCK f;
2012+ SOCKET s;
2013+} CONNECTSOCKDATA;
2014+
2015+DWORD WINAPI connectsockThreadProc(LPVOID lpParameter)
2016+{
2017+ CONNECTSOCKDATA* pData;
2018+ pData = (CONNECTSOCKDATA*)lpParameter;
2019+ pData->s = pData->f(pData->host, pData->port, pData->PreMsg, &pData->CancelCheckWork);
2020+ return 0;
2021+}
2022+
2023+// IPv6対応
19972024 SOCKET connectsock(char *host, int port, char *PreMsg, int *CancelCheckWork)
19982025 {
19992026 SOCKET Result;
2027+ CONNECTSOCKDATA DataIPv4;
2028+ CONNECTSOCKDATA DataIPv6;
20002029 Result = INVALID_SOCKET;
20012030 switch(CurHost.CurNetType)
20022031 {
20032032 case NTYPE_AUTO:
2004- if((Result = connectsockIPv4(host, port, PreMsg, CancelCheckWork)) != INVALID_SOCKET)
2005- CurHost.CurNetType = NTYPE_IPV4;
2006- else if((Result = connectsockIPv6(host, port, PreMsg, CancelCheckWork)) != INVALID_SOCKET)
2007- CurHost.CurNetType = NTYPE_IPV6;
2033+// if((Result = connectsockIPv4(host, port, PreMsg, CancelCheckWork)) != INVALID_SOCKET)
2034+// CurHost.CurNetType = NTYPE_IPV4;
2035+// else if((Result = connectsockIPv6(host, port, PreMsg, CancelCheckWork)) != INVALID_SOCKET)
2036+// CurHost.CurNetType = NTYPE_IPV6;
2037+ DataIPv4.host = host;
2038+ DataIPv4.port = port;
2039+ DataIPv4.PreMsg = PreMsg;
2040+ DataIPv4.CancelCheckWork = *CancelCheckWork;
2041+ DataIPv4.f = connectsockIPv4;
2042+ DataIPv4.h = CreateThread(NULL, 0, connectsockThreadProc, &DataIPv4, 0, NULL);
2043+ DataIPv6.host = host;
2044+ DataIPv6.port = port;
2045+ DataIPv6.PreMsg = PreMsg;
2046+ DataIPv6.CancelCheckWork = *CancelCheckWork;
2047+ DataIPv6.f = connectsockIPv6;
2048+ DataIPv6.h = CreateThread(NULL, 0, connectsockThreadProc, &DataIPv6, 0, NULL);
2049+ while(1)
2050+ {
2051+ if(GetExitCodeThread(DataIPv4.h, &DataIPv4.ExitCode))
2052+ {
2053+ if(DataIPv4.ExitCode != STILL_ACTIVE)
2054+ {
2055+ if(DataIPv4.s != INVALID_SOCKET)
2056+ {
2057+ Result = DataIPv4.s;
2058+ CurHost.CurNetType = NTYPE_IPV4;
2059+ break;
2060+ }
2061+ }
2062+ }
2063+ if(GetExitCodeThread(DataIPv6.h, &DataIPv6.ExitCode))
2064+ {
2065+ if(DataIPv6.ExitCode != STILL_ACTIVE)
2066+ {
2067+ if(DataIPv6.s != INVALID_SOCKET)
2068+ {
2069+ Result = DataIPv6.s;
2070+ CurHost.CurNetType = NTYPE_IPV6;
2071+ break;
2072+ }
2073+ }
2074+ }
2075+ if(GetExitCodeThread(DataIPv4.h, &DataIPv4.ExitCode) && GetExitCodeThread(DataIPv6.h, &DataIPv6.ExitCode))
2076+ {
2077+ if(DataIPv4.ExitCode != STILL_ACTIVE && DataIPv6.ExitCode != STILL_ACTIVE)
2078+ {
2079+ if(DataIPv4.s == INVALID_SOCKET && DataIPv6.s == INVALID_SOCKET)
2080+ break;
2081+ }
2082+ }
2083+ DataIPv4.CancelCheckWork = *CancelCheckWork;
2084+ DataIPv6.CancelCheckWork = *CancelCheckWork;
2085+ BackgrndMessageProc();
2086+ Sleep(1);
2087+ }
2088+ while(1)
2089+ {
2090+ if(GetExitCodeThread(DataIPv4.h, &DataIPv4.ExitCode) && GetExitCodeThread(DataIPv6.h, &DataIPv6.ExitCode))
2091+ {
2092+ if(DataIPv4.ExitCode != STILL_ACTIVE && DataIPv6.ExitCode != STILL_ACTIVE)
2093+ {
2094+ CloseHandle(DataIPv4.h);
2095+ CloseHandle(DataIPv6.h);
2096+ break;
2097+ }
2098+ }
2099+ DataIPv4.CancelCheckWork = YES;
2100+ DataIPv6.CancelCheckWork = YES;
2101+ BackgrndMessageProc();
2102+ Sleep(1);
2103+ }
20082104 break;
20092105 case NTYPE_IPV4:
20102106 Result = connectsockIPv4(host, port, PreMsg, CancelCheckWork);
@@ -2067,7 +2163,9 @@ SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork)
20672163 else
20682164 {
20692165 // アドレスを取得
2070- SetTaskMsg(MSGJPN016, DomainName);
2166+ // IPv6対応
2167+// SetTaskMsg(MSGJPN016, DomainName);
2168+ SetTaskMsg(MSGJPN016, DomainName, MSGJPN333);
20712169 // IPv6対応
20722170 // pHostEntry = do_gethostbyname(host, HostEntry, MAXGETHOSTSTRUCT, CancelCheckWork);
20732171 pHostEntry = do_gethostbynameIPv4(host, HostEntry, MAXGETHOSTSTRUCT, CancelCheckWork);
@@ -2079,7 +2177,9 @@ SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork)
20792177 // memcpy((char *)&CurSockAddr.sin_addr, pHostEntry->h_addr, pHostEntry->h_length);
20802178 // SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet_ntoa(CurSockAddr.sin_addr), ntohs(CurSockAddr.sin_port));
20812179 memcpy((char *)&CurSockAddrIPv4.sin_addr, pHostEntry->h_addr, pHostEntry->h_length);
2082- SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet_ntoa(CurSockAddrIPv4.sin_addr), ntohs(CurSockAddrIPv4.sin_port));
2180+ // IPv6対応
2181+// SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet_ntoa(CurSockAddrIPv4.sin_addr), ntohs(CurSockAddrIPv4.sin_port));
2182+ SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet_ntoa(CurSockAddrIPv4.sin_addr), ntohs(CurSockAddrIPv4.sin_port), MSGJPN333);
20832183 }
20842184 else
20852185 {
@@ -2088,11 +2188,13 @@ SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork)
20882188 UseIPadrs = NO;
20892189 // IPv6対応
20902190 // SetTaskMsg(MSGJPN018, PreMsg, DomainName, ntohs(CurSockAddr.sin_port));
2091- SetTaskMsg(MSGJPN018, PreMsg, DomainName, ntohs(CurSockAddrIPv4.sin_port));
2191+ SetTaskMsg(MSGJPN018, PreMsg, DomainName, ntohs(CurSockAddrIPv4.sin_port), MSGJPN333);
20922192 }
20932193 else
20942194 {
2095- SetTaskMsg(MSGJPN019, host);
2195+ // IPv6対応
2196+// SetTaskMsg(MSGJPN019, host);
2197+ SetTaskMsg(MSGJPN019, host, MSGJPN333);
20962198 return(INVALID_SOCKET);
20972199 }
20982200 }
@@ -2100,7 +2202,7 @@ SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork)
21002202 else
21012203 // IPv6対応
21022204 // SetTaskMsg(MSGJPN020, PreMsg, inet_ntoa(CurSockAddr.sin_addr), ntohs(CurSockAddr.sin_port));
2103- SetTaskMsg(MSGJPN020, PreMsg, inet_ntoa(CurSockAddrIPv4.sin_addr), ntohs(CurSockAddrIPv4.sin_port));
2205+ SetTaskMsg(MSGJPN020, PreMsg, inet_ntoa(CurSockAddrIPv4.sin_addr), ntohs(CurSockAddrIPv4.sin_port), MSGJPN333);
21042206
21052207 if((Fwall == FWALL_SOCKS4) || (Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER))
21062208 {
@@ -2138,7 +2240,9 @@ SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork)
21382240 memcpy((char *)&SocksSockAddrIPv4.sin_addr, pHostEntry->h_addr, pHostEntry->h_length);
21392241 else
21402242 {
2141- SetTaskMsg(MSGJPN021, FwallHost);
2243+ // IPv6対応
2244+// SetTaskMsg(MSGJPN021, FwallHost);
2245+ SetTaskMsg(MSGJPN021, FwallHost, MSGJPN333);
21422246 return INVALID_SOCKET;
21432247 }
21442248 }
@@ -2148,7 +2252,9 @@ SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork)
21482252 // SetTaskMsg(MSGJPN022, inet_ntoa(SocksSockAddr.sin_addr), ntohs(SocksSockAddr.sin_port));
21492253 SocksSockAddrIPv4.sin_port = htons((u_short)FwallPort);
21502254 SocksSockAddrIPv4.sin_family = AF_INET;
2151- SetTaskMsg(MSGJPN022, inet_ntoa(SocksSockAddrIPv4.sin_addr), ntohs(SocksSockAddrIPv4.sin_port));
2255+ // IPv6対応
2256+// SetTaskMsg(MSGJPN022, inet_ntoa(SocksSockAddrIPv4.sin_addr), ntohs(SocksSockAddrIPv4.sin_port));
2257+ SetTaskMsg(MSGJPN022, inet_ntoa(SocksSockAddrIPv4.sin_addr), ntohs(SocksSockAddrIPv4.sin_port), MSGJPN333);
21522258 // connectで接続する先はSOCKSサーバ
21532259 // IPv6対応
21542260 // memcpy(&saSockAddr, &SocksSockAddr, sizeof(SocksSockAddr));
@@ -2181,7 +2287,9 @@ SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork)
21812287 (Socks4GetCmdReply(sSocket, &Socks4Reply, CancelCheckWork) != FFFTP_SUCCESS) ||
21822288 (Socks4Reply.Result != SOCKS4_RES_OK))
21832289 {
2184- SetTaskMsg(MSGJPN023, Socks4Reply.Result);
2290+ // IPv6対応
2291+// SetTaskMsg(MSGJPN023, Socks4Reply.Result);
2292+ SetTaskMsg(MSGJPN023, Socks4Reply.Result, MSGJPN333);
21852293 DoClose(sSocket);
21862294 sSocket = INVALID_SOCKET;
21872295 }
@@ -2203,7 +2311,9 @@ SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork)
22032311 (Socks5GetCmdReply(sSocket, &Socks5Reply, CancelCheckWork) != FFFTP_SUCCESS) ||
22042312 (Socks5Reply.Result != SOCKS5_RES_OK))
22052313 {
2206- SetTaskMsg(MSGJPN024, Socks5Reply.Result);
2314+ // IPv6対応
2315+// SetTaskMsg(MSGJPN024, Socks5Reply.Result);
2316+ SetTaskMsg(MSGJPN024, Socks5Reply.Result, MSGJPN333);
22072317 DoClose(sSocket);
22082318 sSocket = INVALID_SOCKET;
22092319 }
@@ -2211,18 +2321,24 @@ SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork)
22112321 }
22122322
22132323 if(sSocket != INVALID_SOCKET)
2214- SetTaskMsg(MSGJPN025);
2324+ // IPv6対応
2325+// SetTaskMsg(MSGJPN025);
2326+ SetTaskMsg(MSGJPN025, MSGJPN333);
22152327 }
22162328 else
22172329 {
22182330 //#pragma aaa
2219- SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/);
2331+ // IPv6対応
2332+// SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/);
2333+ SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/, MSGJPN333);
22202334 DoClose(sSocket);
22212335 sSocket = INVALID_SOCKET;
22222336 }
22232337 }
22242338 else
2225- SetTaskMsg(MSGJPN027);
2339+ // IPv6対応
2340+// SetTaskMsg(MSGJPN027);
2341+ SetTaskMsg(MSGJPN027, MSGJPN333);
22262342
22272343 return(sSocket);
22282344 }
@@ -2268,31 +2384,31 @@ SOCKET connectsockIPv6(char *host, int port, char *PreMsg, int *CancelCheckWork)
22682384 else
22692385 {
22702386 // アドレスを取得
2271- SetTaskMsg(MSGJPN016, DomainName);
2387+ SetTaskMsg(MSGJPN016, DomainName, MSGJPN334);
22722388 pHostEntry = do_gethostbynameIPv6(host, HostEntry, MAXGETHOSTSTRUCT, CancelCheckWork);
22732389 }
22742390
22752391 if(pHostEntry != NULL)
22762392 {
22772393 memcpy((char *)&CurSockAddrIPv6.sin6_addr, pHostEntry->h_addr, pHostEntry->h_length);
2278- SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet6_ntoa(CurSockAddrIPv6.sin6_addr), ntohs(CurSockAddrIPv6.sin6_port));
2394+ SetTaskMsg(MSGJPN017, PreMsg, DomainName, inet6_ntoa(CurSockAddrIPv6.sin6_addr), ntohs(CurSockAddrIPv6.sin6_port), MSGJPN334);
22792395 }
22802396 else
22812397 {
22822398 if((Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER))
22832399 {
22842400 UseIPadrs = NO;
2285- SetTaskMsg(MSGJPN018, PreMsg, DomainName, ntohs(CurSockAddrIPv6.sin6_port));
2401+ SetTaskMsg(MSGJPN018, PreMsg, DomainName, ntohs(CurSockAddrIPv6.sin6_port), MSGJPN334);
22862402 }
22872403 else
22882404 {
2289- SetTaskMsg(MSGJPN019, host);
2405+ SetTaskMsg(MSGJPN019, host, MSGJPN334);
22902406 return(INVALID_SOCKET);
22912407 }
22922408 }
22932409 }
22942410 else
2295- SetTaskMsg(MSGJPN020, PreMsg, inet6_ntoa(CurSockAddrIPv6.sin6_addr), ntohs(CurSockAddrIPv6.sin6_port));
2411+ SetTaskMsg(MSGJPN020, PreMsg, inet6_ntoa(CurSockAddrIPv6.sin6_addr), ntohs(CurSockAddrIPv6.sin6_port), MSGJPN334);
22962412
22972413 if((Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER))
22982414 {
@@ -2310,13 +2426,13 @@ SOCKET connectsockIPv6(char *host, int port, char *PreMsg, int *CancelCheckWork)
23102426 memcpy((char *)&SocksSockAddrIPv6.sin6_addr, pHostEntry->h_addr, pHostEntry->h_length);
23112427 else
23122428 {
2313- SetTaskMsg(MSGJPN021, FwallHost);
2429+ SetTaskMsg(MSGJPN021, FwallHost, MSGJPN334);
23142430 return INVALID_SOCKET;
23152431 }
23162432 }
23172433 SocksSockAddrIPv6.sin6_port = htons((u_short)FwallPort);
23182434 SocksSockAddrIPv6.sin6_family = AF_INET6;
2319- SetTaskMsg(MSGJPN022, inet6_ntoa(SocksSockAddrIPv6.sin6_addr), ntohs(SocksSockAddrIPv6.sin6_port));
2435+ SetTaskMsg(MSGJPN022, inet6_ntoa(SocksSockAddrIPv6.sin6_addr), ntohs(SocksSockAddrIPv6.sin6_port), MSGJPN334);
23202436 // connectで接続する先はSOCKSサーバ
23212437 memcpy(&saSockAddr, &SocksSockAddrIPv6, sizeof(SocksSockAddrIPv6));
23222438 }
@@ -2352,7 +2468,7 @@ SOCKET connectsockIPv6(char *host, int port, char *PreMsg, int *CancelCheckWork)
23522468 (Socks5GetCmdReply(sSocket, &Socks5Reply, CancelCheckWork) != FFFTP_SUCCESS) ||
23532469 (Socks5Reply.Result != SOCKS5_RES_OK))
23542470 {
2355- SetTaskMsg(MSGJPN024, Socks5Reply.Result);
2471+ SetTaskMsg(MSGJPN024, Socks5Reply.Result, MSGJPN334);
23562472 DoClose(sSocket);
23572473 sSocket = INVALID_SOCKET;
23582474 }
@@ -2360,18 +2476,18 @@ SOCKET connectsockIPv6(char *host, int port, char *PreMsg, int *CancelCheckWork)
23602476 }
23612477
23622478 if(sSocket != INVALID_SOCKET)
2363- SetTaskMsg(MSGJPN025);
2479+ SetTaskMsg(MSGJPN025, MSGJPN334);
23642480 }
23652481 else
23662482 {
23672483 //#pragma aaa
2368- SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/);
2484+ SetTaskMsg(MSGJPN026/*"接続できません(2) %x", sSocket*/, MSGJPN334);
23692485 DoClose(sSocket);
23702486 sSocket = INVALID_SOCKET;
23712487 }
23722488 }
23732489 else
2374- SetTaskMsg(MSGJPN027);
2490+ SetTaskMsg(MSGJPN027, MSGJPN334);
23752491
23762492 return(sSocket);
23772493 }
@@ -2454,7 +2570,9 @@ SOCKET GetFTPListenSocketIPv4(SOCKET ctrl_skt, int *CancelCheckWork)
24542570 (Socks4GetCmdReply(listen_skt, &Socks4Reply, CancelCheckWork) != FFFTP_SUCCESS) ||
24552571 (Socks4Reply.Result != SOCKS4_RES_OK))
24562572 {
2457- SetTaskMsg(MSGJPN028, Socks4Reply.Result);
2573+ // IPv6対応
2574+// SetTaskMsg(MSGJPN028, Socks4Reply.Result);
2575+ SetTaskMsg(MSGJPN028, Socks4Reply.Result, MSGJPN333);
24582576 DoClose(listen_skt);
24592577 listen_skt = INVALID_SOCKET;
24602578 }
@@ -2496,7 +2614,9 @@ SOCKET GetFTPListenSocketIPv4(SOCKET ctrl_skt, int *CancelCheckWork)
24962614 (Socks5GetCmdReply(listen_skt, &Socks5Reply, CancelCheckWork) != FFFTP_SUCCESS) ||
24972615 (Socks5Reply.Result != SOCKS5_RES_OK))
24982616 {
2499- SetTaskMsg(MSGJPN029, Socks5Reply.Result);
2617+ // IPv6対応
2618+// SetTaskMsg(MSGJPN029, Socks5Reply.Result);
2619+ SetTaskMsg(MSGJPN029, Socks5Reply.Result, MSGJPN333);
25002620 DoClose(listen_skt);
25012621 listen_skt = INVALID_SOCKET;
25022622 }
@@ -2556,7 +2676,9 @@ SOCKET GetFTPListenSocketIPv4(SOCKET ctrl_skt, int *CancelCheckWork)
25562676 }
25572677
25582678 if(listen_skt == INVALID_SOCKET)
2559- SetTaskMsg(MSGJPN030);
2679+ // IPv6対応
2680+// SetTaskMsg(MSGJPN030);
2681+ SetTaskMsg(MSGJPN030, MSGJPN333);
25602682 }
25612683 }
25622684 else
@@ -2573,7 +2695,9 @@ SOCKET GetFTPListenSocketIPv4(SOCKET ctrl_skt, int *CancelCheckWork)
25732695 UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]),
25742696 UC(p[0]), UC(p[1])) / 100) != FTP_COMPLETE)
25752697 {
2576- SetTaskMsg(MSGJPN031);
2698+ // IPv6対応
2699+// SetTaskMsg(MSGJPN031);
2700+ SetTaskMsg(MSGJPN031, MSGJPN333);
25772701 do_closesocket(listen_skt);
25782702 listen_skt = INVALID_SOCKET;
25792703 }
@@ -2630,7 +2754,7 @@ SOCKET GetFTPListenSocketIPv6(SOCKET ctrl_skt, int *CancelCheckWork)
26302754 (Socks5GetCmdReply(listen_skt, &Socks5Reply, CancelCheckWork) != FFFTP_SUCCESS) ||
26312755 (Socks5Reply.Result != SOCKS5_RES_OK))
26322756 {
2633- SetTaskMsg(MSGJPN029, Socks5Reply.Result);
2757+ SetTaskMsg(MSGJPN029, Socks5Reply.Result, MSGJPN334);
26342758 DoClose(listen_skt);
26352759 listen_skt = INVALID_SOCKET;
26362760 }
@@ -2690,7 +2814,7 @@ SOCKET GetFTPListenSocketIPv6(SOCKET ctrl_skt, int *CancelCheckWork)
26902814 }
26912815
26922816 if(listen_skt == INVALID_SOCKET)
2693- SetTaskMsg(MSGJPN030);
2817+ SetTaskMsg(MSGJPN030, MSGJPN334);
26942818 }
26952819 }
26962820 else
@@ -2707,7 +2831,7 @@ SOCKET GetFTPListenSocketIPv6(SOCKET ctrl_skt, int *CancelCheckWork)
27072831 AddressToStringIPv6(Adrs, a),
27082832 (UC(p[0]) << 8) | UC(p[1])) / 100) != FTP_COMPLETE)
27092833 {
2710- SetTaskMsg(MSGJPN031);
2834+ SetTaskMsg(MSGJPN031, MSGJPN334);
27112835 do_closesocket(listen_skt);
27122836 listen_skt = INVALID_SOCKET;
27132837 }
--- a/doc/eng/FFFTP.txt
+++ b/doc/eng/FFFTP.txt
@@ -62,6 +62,13 @@ Changes in Ver.1.98e
6262
6363 -- Fixed bugs of hanging on exit in some cases.
6464
65+-- Fixed bugs of hanging at accessing non-existent directories without full
66+ path.
67+
68+-- Changed behavior of Auto of network type selection.
69+ Name resolution and connection will be performed at same time on IPv4 and
70+ IPv6, and whichever finished earlier will be used.
71+
6572
6673 Outline
6774 -------
--- a/doc/eng/history.txt
+++ b/doc/eng/history.txt
@@ -34,6 +34,13 @@ Changes in Ver.1.98e
3434
3535 -- Fixed bugs of hanging on exit in some cases.
3636
37+-- Fixed bugs of hanging at accessing non-existent directories without full
38+ path.
39+
40+-- Changed behavior of Auto of network type selection.
41+ Name resolution and connection will be performed at same time on IPv4 and
42+ IPv6, and whichever finished earlier will be used.
43+
3744 Changes in Ver.1.98d
3845 --------------------
3946
--- a/doc/jpn/FFFTP.txt
+++ b/doc/jpn/FFFTP.txt
@@ -66,6 +66,13 @@ Ver 1.98e
6666
6767 EI—¹Žž‚ɃtƒŠ[ƒY‚·‚邱‚Æ‚ª‚ ‚éƒoƒO‚ðC³‚µ‚Ü‚µ‚½B
6868
69+Eƒtƒ‹ƒpƒX‚ŃAƒNƒZƒX‚µ‚È‚¢Ý’è‚Å‘¶Ý‚µ‚È‚¢ƒfƒBƒŒƒNƒgƒŠ‚ɃAƒNƒZƒX‚·‚é‚Æ
70+@ƒtƒŠ[ƒY‚·‚éƒoƒO‚ðC³‚µ‚Ü‚µ‚½B
71+
72+Eƒlƒbƒgƒ[ƒN‚ÌŽí—Þ‚ðŽ©“®‚ɐݒ肵‚Ä‚¢‚éê‡‚Ì‹““®‚ð•ÏX‚µ‚Ü‚µ‚½B
73+@IPv4‚ÆIPv6‚Ì—¼•û‚Å–¼‘O‰ðŒˆ‚Ɛڑ±‚𓯎ž‚ɍs‚¢Aæ‚ɐڑ±‚ªŠ®—¹‚µ‚½•û‚ð
74+@Žg—p‚µ‚Ü‚·B
75+
6976
7077 Ver 1.96dˆÈ‘O‚Ö–ß‚·ê‡
7178 -----------------------
--- a/doc/jpn/history.txt
+++ b/doc/jpn/history.txt
@@ -38,6 +38,13 @@ FFFTP
3838
3939 EI—¹Žž‚ɃtƒŠ[ƒY‚·‚邱‚Æ‚ª‚ ‚éƒoƒO‚ðC³‚µ‚Ü‚µ‚½B
4040
41+Eƒtƒ‹ƒpƒX‚ŃAƒNƒZƒX‚µ‚È‚¢Ý’è‚Å‘¶Ý‚µ‚È‚¢ƒfƒBƒŒƒNƒgƒŠ‚ɃAƒNƒZƒX‚·‚é‚Æ
42+@ƒtƒŠ[ƒY‚·‚éƒoƒO‚ðC³‚µ‚Ü‚µ‚½B
43+
44+Eƒlƒbƒgƒ[ƒN‚ÌŽí—Þ‚ðŽ©“®‚ɐݒ肵‚Ä‚¢‚éê‡‚Ì‹““®‚ð•ÏX‚µ‚Ü‚µ‚½B
45+@IPv4‚ÆIPv6‚Ì—¼•û‚Å–¼‘O‰ðŒˆ‚Ɛڑ±‚𓯎ž‚ɍs‚¢Aæ‚ɐڑ±‚ªŠ®—¹‚µ‚½•û‚ð
46+@Žg—p‚µ‚Ü‚·B
47+
4148 ¡Ver 1.98d
4249
4350 EMLSDƒRƒ}ƒ“ƒh‚ɑΉž‚µ‚½ƒzƒXƒg‚Å‚ÍMLSDƒRƒ}ƒ“ƒh‚ð—p‚¢‚ătƒ@ƒCƒ‹ˆê——‚ð
--- a/filelist.c
+++ b/filelist.c
@@ -798,7 +798,7 @@ static LRESULT FileListCommonWndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
798798 if(hWnd == hWndListRemote)
799799 {
800800 if(AskConnecting() == YES)
801- UpLoadDragProc(wParam);
801+ UploadDragProc(wParam);
802802 }
803803 else if(hWnd == hWndListLocal)
804804 {
@@ -1443,7 +1443,7 @@ void GetLocalDirForWnd(void)
14431443 if(DispDrives)
14441444 {
14451445 GetLogicalDriveStrings(FMAX_PATH, Scan);
1446- NoDrives = LoadHideDriveListRegistory();
1446+ NoDrives = LoadHideDriveListRegistry();
14471447
14481448 Pos = Scan;
14491449 while(*Pos != NUL)
--- a/ftpproc.c
+++ b/ftpproc.c
@@ -71,7 +71,7 @@ static INT_PTR CALLBACK MirrorNotifyCallBack(HWND hDlg, UINT iMessage, WPARAM wP
7171 static INT_PTR CALLBACK MirrorDispListCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);
7272 static void CountMirrorFiles(HWND hDlg, TRANSPACKET *Pkt);
7373 static int AskMirrorNoTrn(char *Fname, int Mode);
74-static int AskUpLoadFileAttr(char *Fname);
74+static int AskUploadFileAttr(char *Fname);
7575 // 64ビット対応
7676 //static BOOL CALLBACK UpDownAsDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);
7777 static INT_PTR CALLBACK UpDownAsDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);
@@ -140,14 +140,13 @@ static double FileSize; /* ファイル総容量 */
140140
141141 // ディレクトリ自動作成
142142 // ローカル側のパスから必要なフォルダを作成
143-int MakeDirFromLocalPath(char* LocalFile)
143+int MakeDirFromLocalPath(char* LocalFile, char* Old)
144144 {
145145 TRANSPACKET Pkt;
146146 char* pDelimiter;
147147 char* pNext;
148148 char* Cat;
149149 int Len;
150- char Tmp[FMAX_PATH+1];
151150 int Make;
152151 pDelimiter = LocalFile;
153152 Make = NO;
@@ -156,9 +155,7 @@ int MakeDirFromLocalPath(char* LocalFile)
156155 Len = pNext - LocalFile;
157156 strncpy(Pkt.LocalFile, LocalFile, Len);
158157 Pkt.LocalFile[Len] = '\0';
159- AskLocalCurDir(Tmp, FMAX_PATH);
160- SetYenTail(Tmp);
161- if(strncmp(LocalFile, Tmp, Len + 1) != 0)
158+ if(strncmp(LocalFile, Old, Len + 1) != 0)
162159 {
163160 Cat = Pkt.LocalFile + (pDelimiter - LocalFile);
164161 if(FnameCnv == FNAME_LOWER)
@@ -178,11 +175,13 @@ int MakeDirFromLocalPath(char* LocalFile)
178175 return Make;
179176 }
180177
181-void DownLoadProc(int ChName, int ForceFile, int All)
178+void DownloadProc(int ChName, int ForceFile, int All)
182179 {
183180 FILELIST *FileListBase;
184181 FILELIST *Pos;
185182 TRANSPACKET Pkt;
183+ // ディレクトリ自動作成
184+ char Tmp[FMAX_PATH+1];
186185
187186 // 同時接続対応
188187 CancelFlg = NO;
@@ -286,6 +285,8 @@ void DownLoadProc(int ChName, int ForceFile, int All)
286285 Pkt.KanjiCodeDesired = AskLocalKanjiCode();
287286 Pkt.KanaCnv = AskHostKanaCnv();
288287
288+ // ディレクトリ自動作成
289+ strcpy(Tmp, Pkt.LocalFile);
289290 Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize がセットされる */
290291 if(Pkt.Mode == EXIST_ABORT)
291292 break;
@@ -294,7 +295,7 @@ void DownLoadProc(int ChName, int ForceFile, int All)
294295 // AddTransFileList(&Pkt);
295296 {
296297 if(MakeAllDir == YES)
297- MakeDirFromLocalPath(Pkt.LocalFile);
298+ MakeDirFromLocalPath(Pkt.LocalFile, Tmp);
298299 AddTransFileList(&Pkt);
299300 }
300301 }
@@ -331,7 +332,7 @@ void DownLoadProc(int ChName, int ForceFile, int All)
331332 * なし
332333 *----------------------------------------------------------------------------*/
333334
334-void DirectDownLoadProc(char *Fname)
335+void DirectDownloadProc(char *Fname)
335336 {
336337 TRANSPACKET Pkt;
337338
@@ -434,7 +435,7 @@ void DirectDownLoadProc(char *Fname)
434435 * なし
435436 *----------------------------------------------------------------------------*/
436437
437-void InputDownLoadProc(void)
438+void InputDownloadProc(void)
438439 {
439440 char Path[FMAX_PATH+1];
440441 int Tmp;
@@ -444,7 +445,7 @@ void InputDownLoadProc(void)
444445 strcpy(Path, "");
445446 if(InputDialogBox(downname_dlg, GetMainHwnd(), NULL, Path, FMAX_PATH, &Tmp, IDH_HELP_TOPIC_0000001) == YES)
446447 {
447- DirectDownLoadProc(Path);
448+ DirectDownloadProc(Path);
448449 }
449450
450451 // EnableUserOpe();
@@ -940,7 +941,7 @@ static INT_PTR CALLBACK DownExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM
940941
941942 // ディレクトリ自動作成
942943 // リモート側のパスから必要なディレクトリを作成
943-int MakeDirFromRemotePath(char* RemoteFile, int FirstAdd)
944+int MakeDirFromRemotePath(char* RemoteFile, char* Old, int FirstAdd)
944945 {
945946 TRANSPACKET Pkt;
946947 TRANSPACKET Pkt1;
@@ -948,7 +949,6 @@ int MakeDirFromRemotePath(char* RemoteFile, int FirstAdd)
948949 char* pNext;
949950 char* Cat;
950951 int Len;
951- char Tmp[FMAX_PATH+1];
952952 int Make;
953953 pDelimiter = RemoteFile;
954954 Make = NO;
@@ -957,9 +957,7 @@ int MakeDirFromRemotePath(char* RemoteFile, int FirstAdd)
957957 Len = pNext - RemoteFile;
958958 strncpy(Pkt.RemoteFile, RemoteFile, Len);
959959 Pkt.RemoteFile[Len] = '\0';
960- AskRemoteCurDir(Tmp, FMAX_PATH);
961- SetSlashTail(Tmp);
962- if(strncmp(RemoteFile, Tmp, Len + 1) != 0)
960+ if(strncmp(RemoteFile, Old, Len + 1) != 0)
963961 {
964962 Cat = Pkt.RemoteFile + (pDelimiter - RemoteFile);
965963 if(FnameCnv == FNAME_LOWER)
@@ -1004,7 +1002,7 @@ int MakeDirFromRemotePath(char* RemoteFile, int FirstAdd)
10041002 return Make;
10051003 }
10061004
1007-void UpLoadListProc(int ChName, int All)
1005+void UploadListProc(int ChName, int All)
10081006 {
10091007 FILELIST *FileListBase;
10101008 FILELIST *Pos;
@@ -1143,7 +1141,7 @@ void UpLoadListProc(int ChName, int All)
11431141 Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());
11441142 Pkt.Size = 0;
11451143 Pkt.Time = Pos->Time;
1146- Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);
1144+ Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);
11471145 Pkt.KanjiCode = AskHostKanjiCode();
11481146 // UTF-8対応
11491147 Pkt.KanjiCodeDesired = AskLocalKanjiCode();
@@ -1153,6 +1151,8 @@ void UpLoadListProc(int ChName, int All)
11531151 CalcExtentSize(&Pkt, Pos->Size);
11541152 }
11551153 #endif
1154+ // ディレクトリ自動作成
1155+ strcpy(Tmp, Pkt.RemoteFile);
11561156 Pkt.Mode = CheckRemoteFile(&Pkt, RemoteList);
11571157 if(Pkt.Mode == EXIST_ABORT)
11581158 break;
@@ -1161,7 +1161,7 @@ void UpLoadListProc(int ChName, int All)
11611161 // ディレクトリ自動作成
11621162 if(MakeAllDir == YES)
11631163 {
1164- if(MakeDirFromRemotePath(Pkt.RemoteFile, FirstAdd) == YES)
1164+ if(MakeDirFromRemotePath(Pkt.RemoteFile, Tmp, FirstAdd) == YES)
11651165 FirstAdd = NO;
11661166 }
11671167 if((FirstAdd == YES) && (AskNoFullPathMode() == YES))
@@ -1210,7 +1210,7 @@ void UpLoadListProc(int ChName, int All)
12101210 * なし
12111211 *----------------------------------------------------------------------------*/
12121212
1213-void UpLoadDragProc(WPARAM wParam)
1213+void UploadDragProc(WPARAM wParam)
12141214 {
12151215 FILELIST *FileListBase;
12161216 FILELIST *Pos;
@@ -1316,7 +1316,7 @@ void UpLoadDragProc(WPARAM wParam)
13161316 Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());
13171317 Pkt.Size = 0;
13181318 Pkt.Time = Pos->Time;
1319- Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);
1319+ Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);
13201320 Pkt.KanjiCode = AskHostKanjiCode();
13211321 // UTF-8対応
13221322 Pkt.KanjiCodeDesired = AskLocalKanjiCode();
@@ -1327,6 +1327,8 @@ void UpLoadDragProc(WPARAM wParam)
13271327 CalcExtentSize(&Pkt, Pos->Size);
13281328 }
13291329 #endif
1330+ // ディレクトリ自動作成
1331+ strcpy(Tmp, Pkt.RemoteFile);
13301332 Pkt.Mode = CheckRemoteFile(&Pkt, RemoteList);
13311333 if(Pkt.Mode == EXIST_ABORT)
13321334 break;
@@ -1335,7 +1337,7 @@ void UpLoadDragProc(WPARAM wParam)
13351337 // ディレクトリ自動作成
13361338 if(MakeAllDir == YES)
13371339 {
1338- if(MakeDirFromRemotePath(Pkt.RemoteFile, FirstAdd) == YES)
1340+ if(MakeDirFromRemotePath(Pkt.RemoteFile, Tmp, FirstAdd) == YES)
13391341 FirstAdd = NO;
13401342 }
13411343 if((FirstAdd == YES) && (AskNoFullPathMode() == YES))
@@ -1600,7 +1602,7 @@ void MirrorUploadProc(int Notify)
16001602 Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());
16011603 Pkt.Size = 0;
16021604 Pkt.Time = LocalPos->Time;
1603- Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);
1605+ Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);
16041606 Pkt.KanjiCode = AskHostKanjiCode();
16051607 // UTF-8対応
16061608 Pkt.KanjiCodeDesired = AskLocalKanjiCode();
@@ -1973,7 +1975,7 @@ static int AskMirrorNoTrn(char *Fname, int Mode)
19731975 * int 属性 (-1=設定なし)
19741976 *----------------------------------------------------------------------------*/
19751977
1976-static int AskUpLoadFileAttr(char *Fname)
1978+static int AskUploadFileAttr(char *Fname)
19771979 {
19781980 int Ret;
19791981 int Sts;
--- a/getput.c
+++ b/getput.c
@@ -84,9 +84,9 @@ static void DispTransPacket(TRANSPACKET *Pkt);
8484 static void EraseTransFileList(void);
8585 static ULONG WINAPI TransferThread(void *Dummy);
8686 static int MakeNonFullPath(TRANSPACKET *Pkt, char *CurDir, char *Tmp);
87-static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork);
88-static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork);
89-static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork);
87+static int DownloadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork);
88+static int DownloadPassive(TRANSPACKET *Pkt, int *CancelCheckWork);
89+static int DownloadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork);
9090 static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode);
9191 // 再転送対応
9292 //static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname);
@@ -98,10 +98,10 @@ static int SetDownloadResume(TRANSPACKET *Pkt, int ProcMode, LONGLONG Size, int
9898 // 64ビット対応
9999 //static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);
100100 static INT_PTR CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);
101-static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt);
102-static int UpLoadNonPassive(TRANSPACKET *Pkt);
103-static int UpLoadPassive(TRANSPACKET *Pkt);
104-static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt);
101+static int DoUpload(SOCKET cSkt, TRANSPACKET *Pkt);
102+static int UploadNonPassive(TRANSPACKET *Pkt);
103+static int UploadPassive(TRANSPACKET *Pkt);
104+static int UploadFile(TRANSPACKET *Pkt, SOCKET dSkt);
105105 // 同時接続対応
106106 //static int TermCodeConvAndSend(TERMCODECONVINFO *tInfo, SOCKET Skt, char *Data, int Size, int Ascii);
107107 static int TermCodeConvAndSend(TERMCODECONVINFO *tInfo, SOCKET Skt, char *Data, int Size, int Ascii, int *CancelCheckWork);
@@ -182,6 +182,8 @@ extern int MirUpDelNotify;
182182 extern int MirDownDelNotify;
183183 extern int FolderAttr;
184184 extern int FolderAttrNum;
185+// 同時接続対応
186+extern int SendQuit;
185187
186188
187189 /*----- ファイル転送スレッドを起動する ----------------------------------------
@@ -791,7 +793,7 @@ static ULONG WINAPI TransferThread(void *Dummy)
791793 if(timeGetTime() - LastUsed > 60000 || NewCmdSkt == INVALID_SOCKET)
792794 {
793795 ReleaseMutex(hListAccMutex);
794- SendData(TrnSkt, "QUIT\r\n", 6, 0, &Canceled[ThreadCount]);
796+ DoQUIT(TrnSkt, &Canceled[ThreadCount]);
795797 DoClose(TrnSkt);
796798 TrnSkt = INVALID_SOCKET;
797799 // WaitForSingleObject(hListAccMutex, INFINITE);
@@ -882,11 +884,11 @@ static ULONG WINAPI TransferThread(void *Dummy)
882884 }
883885
884886 Down = YES;
885-// if(DoDownLoad(AskTrnCtrlSkt(), TransPacketBase, NO) == 429)
887+// if(DoDownload(AskTrnCtrlSkt(), TransPacketBase, NO) == 429)
886888 // {
887889 // if(ReConnectTrnSkt() == FFFTP_SUCCESS)
888-// DoDownLoad(AskTrnCtrlSkt(), TransPacketBase, NO, &Canceled);
889- DoDownLoad(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]);
890+// DoDownload(AskTrnCtrlSkt(), TransPacketBase, NO, &Canceled);
891+ DoDownload(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]);
890892 // }
891893 }
892894 }
@@ -904,11 +906,11 @@ static ULONG WINAPI TransferThread(void *Dummy)
904906 if(MakeNonFullPath(Pos, CurDir[Pos->ThreadCount], Tmp) == FFFTP_SUCCESS)
905907 {
906908 Up = YES;
907-// if(DoUpLoad(AskTrnCtrlSkt(), TransPacketBase) == 429)
909+// if(DoUpload(AskTrnCtrlSkt(), TransPacketBase) == 429)
908910 // {
909911 // if(ReConnectTrnSkt() == FFFTP_SUCCESS)
910-// DoUpLoad(AskTrnCtrlSkt(), TransPacketBase);
911- DoUpLoad(TrnSkt, Pos);
912+// DoUpload(AskTrnCtrlSkt(), TransPacketBase);
913+ DoUpload(TrnSkt, Pos);
912914 // }
913915 }
914916 // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため
@@ -1132,9 +1134,11 @@ static ULONG WINAPI TransferThread(void *Dummy)
11321134 {
11331135 for(i = 0; i < MAX_DATA_CONNECTION; i++)
11341136 Canceled[i] = YES;
1137+ if(Pos != NULL)
1138+ strcpy(Pos->Cmd, "");
1139+ Pos = NULL;
11351140 EraseTransFileList();
11361141 GoExit = YES;
1137- Pos = NULL;
11381142 }
11391143 else
11401144 {
@@ -1297,7 +1301,7 @@ static int MakeNonFullPath(TRANSPACKET *Pkt, char *Cur, char *Tmp)
12971301 * からも呼ばれる。メインのスレッドから呼ばれる時は Pkt->hWndTrans == NULL。
12981302 *----------------------------------------------------------------------------*/
12991303
1300-int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)
1304+int DoDownload(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)
13011305 {
13021306 int iRetCode;
13031307 char Reply[ERR_MSG_LEN+7];
@@ -1339,9 +1343,9 @@ int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)
13391343 else if(BackgrndMessageProc() == NO)
13401344 {
13411345 if(AskPasvMode() != YES)
1342- iRetCode = DownLoadNonPassive(Pkt, CancelCheckWork);
1346+ iRetCode = DownloadNonPassive(Pkt, CancelCheckWork);
13431347 else
1344- iRetCode = DownLoadPassive(Pkt, CancelCheckWork);
1348+ iRetCode = DownloadPassive(Pkt, CancelCheckWork);
13451349 }
13461350 else
13471351 iRetCode = 500;
@@ -1370,7 +1374,7 @@ int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork)
13701374 * int 応答コード
13711375 *----------------------------------------------------------------------------*/
13721376
1373-static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
1377+static int DownloadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
13741378 {
13751379 int iRetCode;
13761380 int iLength;
@@ -1444,16 +1448,16 @@ static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
14441448 // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため
14451449 ReleaseMutex(hListAccMutex);
14461450 // FTPS対応
1447-// iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
1451+// iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
14481452 if(IsSSLAttached(Pkt->ctrl_skt))
14491453 {
14501454 if(AttachSSL(data_socket, Pkt->ctrl_skt, CancelCheckWork))
1451- iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
1455+ iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
14521456 else
14531457 iRetCode = 500;
14541458 }
14551459 else
1456- iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
1460+ iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
14571461 // data_socket = DoClose(data_socket);
14581462 }
14591463 }
@@ -1489,7 +1493,7 @@ static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
14891493 * int 応答コード
14901494 *----------------------------------------------------------------------------*/
14911495
1492-static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
1496+static int DownloadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
14931497 {
14941498 int iRetCode;
14951499 SOCKET data_socket = INVALID_SOCKET; // data channel socket
@@ -1537,16 +1541,16 @@ static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
15371541 // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため
15381542 ReleaseMutex(hListAccMutex);
15391543 // FTPS対応
1540-// iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
1544+// iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
15411545 if(IsSSLAttached(Pkt->ctrl_skt))
15421546 {
15431547 if(AttachSSL(data_socket, Pkt->ctrl_skt, CancelCheckWork))
1544- iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
1548+ iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
15451549 else
15461550 iRetCode = 500;
15471551 }
15481552 else
1549- iRetCode = DownLoadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
1553+ iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);
15501554 // data_socket = DoClose(data_socket);
15511555 }
15521556 else
@@ -1596,7 +1600,7 @@ static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork)
15961600 * ダイアログを出さない場合、このルーチンからDispDownloadSize()を呼ぶ
15971601 *----------------------------------------------------------------------------*/
15981602
1599-static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork)
1603+static int DownloadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork)
16001604 {
16011605 int iNumBytes;
16021606 char Buf[BUFSIZE];
@@ -2563,7 +2567,7 @@ static INT_PTR CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam,
25632567 * int 応答コード
25642568 *----------------------------------------------------------------------------*/
25652569
2566-static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt)
2570+static int DoUpload(SOCKET cSkt, TRANSPACKET *Pkt)
25672571 {
25682572 int iRetCode;
25692573 char Reply[ERR_MSG_LEN+7];
@@ -2597,9 +2601,9 @@ static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt)
25972601 else if(BackgrndMessageProc() == NO)
25982602 {
25992603 if(AskPasvMode() != YES)
2600- iRetCode = UpLoadNonPassive(Pkt);
2604+ iRetCode = UploadNonPassive(Pkt);
26012605 else
2602- iRetCode = UpLoadPassive(Pkt);
2606+ iRetCode = UploadPassive(Pkt);
26032607 }
26042608 else
26052609 iRetCode = 500;
@@ -2644,7 +2648,7 @@ static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt)
26442648 * int 応答コード
26452649 *----------------------------------------------------------------------------*/
26462650
2647-static int UpLoadNonPassive(TRANSPACKET *Pkt)
2651+static int UploadNonPassive(TRANSPACKET *Pkt)
26482652 {
26492653 int iRetCode;
26502654 int iLength;
@@ -2739,16 +2743,16 @@ static int UpLoadNonPassive(TRANSPACKET *Pkt)
27392743 // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため
27402744 ReleaseMutex(hListAccMutex);
27412745 // FTPS対応
2742-// iRetCode = UpLoadFile(Pkt, data_socket);
2746+// iRetCode = UploadFile(Pkt, data_socket);
27432747 if(IsSSLAttached(Pkt->ctrl_skt))
27442748 {
27452749 if(AttachSSL(data_socket, Pkt->ctrl_skt, &Canceled[Pkt->ThreadCount]))
2746- iRetCode = UpLoadFile(Pkt, data_socket);
2750+ iRetCode = UploadFile(Pkt, data_socket);
27472751 else
27482752 iRetCode = 500;
27492753 }
27502754 else
2751- iRetCode = UpLoadFile(Pkt, data_socket);
2755+ iRetCode = UploadFile(Pkt, data_socket);
27522756 data_socket = DoClose(data_socket);
27532757 }
27542758 }
@@ -2781,7 +2785,7 @@ static int UpLoadNonPassive(TRANSPACKET *Pkt)
27812785 * int 応答コード
27822786 *----------------------------------------------------------------------------*/
27832787
2784-static int UpLoadPassive(TRANSPACKET *Pkt)
2788+static int UploadPassive(TRANSPACKET *Pkt)
27852789 {
27862790 int iRetCode;
27872791 SOCKET data_socket = INVALID_SOCKET; // data channel socket
@@ -2852,16 +2856,16 @@ static int UpLoadPassive(TRANSPACKET *Pkt)
28522856 // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため
28532857 ReleaseMutex(hListAccMutex);
28542858 // FTPS対応
2855-// iRetCode = UpLoadFile(Pkt, data_socket);
2859+// iRetCode = UploadFile(Pkt, data_socket);
28562860 if(IsSSLAttached(Pkt->ctrl_skt))
28572861 {
28582862 if(AttachSSL(data_socket, Pkt->ctrl_skt, &Canceled[Pkt->ThreadCount]))
2859- iRetCode = UpLoadFile(Pkt, data_socket);
2863+ iRetCode = UploadFile(Pkt, data_socket);
28602864 else
28612865 iRetCode = 500;
28622866 }
28632867 else
2864- iRetCode = UpLoadFile(Pkt, data_socket);
2868+ iRetCode = UploadFile(Pkt, data_socket);
28652869
28662870 data_socket = DoClose(data_socket);
28672871 }
@@ -2910,7 +2914,7 @@ static int UpLoadPassive(TRANSPACKET *Pkt)
29102914 * 転送ダイアログを出さないでアップロードすることはない
29112915 *----------------------------------------------------------------------------*/
29122916
2913-static int UpLoadFile(TRANSPACKET *Pkt, SOCKET dSkt)
2917+static int UploadFile(TRANSPACKET *Pkt, SOCKET dSkt)
29142918 {
29152919 DWORD iNumBytes;
29162920 HANDLE iFileHandle;
--- a/hostman.c
+++ b/hostman.c
@@ -127,7 +127,7 @@ int SelectHost(int Type)
127127
128128 /* ホスト設定を保存 */
129129 SetNodeLevelAll();
130- SaveRegistory();
130+ SaveRegistry();
131131
132132 return(Sts);
133133 }
--- a/main.c
+++ b/main.c
@@ -234,7 +234,7 @@ BYTE SSLRootCAFileHash[20];
234234 // ファイルアイコン表示対応
235235 int DispFileIcon = NO;
236236 // ディレクトリ自動作成
237-int MakeAllDir = YES;
237+int MakeAllDir = NO;
238238
239239
240240
@@ -452,7 +452,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
452452 /* 2010.02.01 genta マスターパスワードを入力させる
453453 -z オプションがあるときは最初だけスキップ
454454 -z オプションがないときは,デフォルトパスワードをまず試す
455- LoadRegistory()する
455+ LoadRegistry()する
456456 パスワードが不一致なら再入力するか尋ねる.
457457 (破損していた場合はさせない)
458458 */
@@ -497,7 +497,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
497497
498498 if(masterpass != 0)
499499 {
500- LoadRegistory();
500+ LoadRegistry();
501501
502502 // 暗号化通信対応
503503 SetSSLTimeoutCallback(TimeOut * 1000, SSLTimeoutCallback);
@@ -1067,42 +1067,42 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
10671067
10681068 case MENU_DOWNLOAD :
10691069 SetCurrentDirAsDirHist();
1070- DownLoadProc(NO, NO, NO);
1070+ DownloadProc(NO, NO, NO);
10711071 break;
10721072
10731073 case MENU_DOWNLOAD_AS :
10741074 SetCurrentDirAsDirHist();
1075- DownLoadProc(YES, NO, NO);
1075+ DownloadProc(YES, NO, NO);
10761076 break;
10771077
10781078 case MENU_DOWNLOAD_AS_FILE :
10791079 SetCurrentDirAsDirHist();
1080- DownLoadProc(NO, YES, NO);
1080+ DownloadProc(NO, YES, NO);
10811081 break;
10821082
10831083 case MENU_DOWNLOAD_ALL :
10841084 SetCurrentDirAsDirHist();
1085- DownLoadProc(NO, NO, YES);
1085+ DownloadProc(NO, NO, YES);
10861086 break;
10871087
10881088 case MENU_DOWNLOAD_NAME :
10891089 SetCurrentDirAsDirHist();
1090- InputDownLoadProc();
1090+ InputDownloadProc();
10911091 break;
10921092
10931093 case MENU_UPLOAD :
10941094 SetCurrentDirAsDirHist();
1095- UpLoadListProc(NO, NO);
1095+ UploadListProc(NO, NO);
10961096 break;
10971097
10981098 case MENU_UPLOAD_AS :
10991099 SetCurrentDirAsDirHist();
1100- UpLoadListProc(YES, NO);
1100+ UploadListProc(YES, NO);
11011101 break;
11021102
11031103 case MENU_UPLOAD_ALL :
11041104 SetCurrentDirAsDirHist();
1105- UpLoadListProc(NO, YES);
1105+ UploadListProc(NO, YES);
11061106 break;
11071107
11081108 case MENU_MIRROR_UPLOAD :
@@ -1363,7 +1363,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
13631363
13641364 case MENU_REGSAVE :
13651365 GetListTabWidth();
1366- SaveRegistory();
1366+ SaveRegistry();
13671367 SaveSettingsToFile();
13681368 break;
13691369
@@ -1379,7 +1379,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
13791379 case MENU_REGINIT :
13801380 if(DialogBox(hInstFtp, MAKEINTRESOURCE(reginit_dlg), hWnd, ExeEscDialogProc) == YES)
13811381 {
1382- ClearRegistory();
1382+ ClearRegistry();
13831383 SaveExit = NO;
13841384 PostMessage(hWnd, WM_CLOSE, 0, 0L);
13851385 }
@@ -2086,7 +2086,7 @@ static void ExitProc(HWND hWnd)
20862086 if(SaveExit == YES)
20872087 {
20882088 GetListTabWidth();
2089- SaveRegistory();
2089+ SaveRegistry();
20902090
20912091 if((CacheEntry > 0) && (CacheSave == YES))
20922092 SaveCache();
@@ -2226,12 +2226,12 @@ void DoubleClickProc(int Win, int Mode, int App)
22262226 /* 不正なパスを検出 */
22272227 if(CheckPathViolation(&MainTransPkt) == NO)
22282228 {
2229-// if((Sts = DoDownLoad(AskCmdCtrlSkt(), &MainTransPkt, NO)) == 429)
2229+// if((Sts = DoDownload(AskCmdCtrlSkt(), &MainTransPkt, NO)) == 429)
22302230 // {
22312231 // ReConnectCmdSkt();
22322232 // 同時接続対応
22332233 CancelFlg = NO;
2234- Sts = DoDownLoad(AskCmdCtrlSkt(), &MainTransPkt, NO, &CancelFlg);
2234+ Sts = DoDownload(AskCmdCtrlSkt(), &MainTransPkt, NO, &CancelFlg);
22352235 // }
22362236 }
22372237
--- a/mesg-eng.h
+++ b/mesg-eng.h
@@ -14,22 +14,22 @@
1414 #define MSGJPN013 _Tu8("SHA-1 used.", "SHA-1 used.")
1515 #define MSGJPN014 _Tu8("MD4(S/KEY) used.", "MD4(S/KEY) used.")
1616 #define MSGJPN015 _Tu8("Can't process One-time Password.", "Can't process One-time Password.")
17-#define MSGJPN016 _Tu8("Searching host %s.", "Searching host %s.")
18-#define MSGJPN017 _Tu8("Connecting %sto host %s (%s (%d)).", "Connecting %sto host %s (%s (%d)).")
19-#define MSGJPN018 _Tu8("Connecting %sto host %s (%d).", "Connecting %sto host %s (%d).")
20-#define MSGJPN019 _Tu8("Host %s not found.", "Host %s not found.")
21-#define MSGJPN020 _Tu8("Connecting %sto host %s (%d).", "Connecting %sto host %s (%d).")
22-#define MSGJPN021 _Tu8("SOCKS server %s not found.", "SOCKS server %s not found.")
23-#define MSGJPN022 _Tu8("Connecting to SOCKS server %s (%d).", "Connecting to SOCKS server %s (%d).")
24-#define MSGJPN023 _Tu8("Can't connect to SOCKS server. (Err=%d)", "Can't connect to SOCKS server. (Err=%d)")
25-#define MSGJPN024 _Tu8("Can't connect to SOCKS server. (Err=%d)", "Can't connect to SOCKS server. (Err=%d)")
26-#define MSGJPN025 _Tu8("Connected.", "Connected.")
27-#define MSGJPN026 _Tu8("Can't connected.", "Can't connected.")
28-#define MSGJPN027 _Tu8("Can't create socket.", "Can't create socket.")
29-#define MSGJPN028 _Tu8("Can't connect to SOCKS server. (Err=%d)", "Can't connect to SOCKS server. (Err=%d)")
30-#define MSGJPN029 _Tu8("Can't connect to SOCKS server. (Err=%d)", "Can't connect to SOCKS server. (Err=%d)")
31-#define MSGJPN030 _Tu8("Can't create listen socket.", "Can't create listen socket.")
32-#define MSGJPN031 _Tu8("PORT command not accepted", "PORT command not accepted")
17+#define MSGJPN016 _Tu8("Searching host %s. (%s)", "Searching host %s. (%s)")
18+#define MSGJPN017 _Tu8("Connecting %sto host %s (%s (%d)). (%s)", "Connecting %sto host %s (%s (%d)). (%s)")
19+#define MSGJPN018 _Tu8("Connecting %sto host %s (%d). (%s)", "Connecting %sto host %s (%d). (%s)")
20+#define MSGJPN019 _Tu8("Host %s not found. (%s)", "Host %s not found. (%s)")
21+#define MSGJPN020 _Tu8("Connecting %sto host %s (%d). (%s)", "Connecting %sto host %s (%d). (%s)")
22+#define MSGJPN021 _Tu8("SOCKS server %s not found. (%s)", "SOCKS server %s not found. (%s)")
23+#define MSGJPN022 _Tu8("Connecting to SOCKS server %s (%d). (%s)", "Connecting to SOCKS server %s (%d). (%s)")
24+#define MSGJPN023 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")
25+#define MSGJPN024 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")
26+#define MSGJPN025 _Tu8("Connected. (%s)", "Connected. (%s)")
27+#define MSGJPN026 _Tu8("Can't connected. (%s)", "Can't connected. (%s)")
28+#define MSGJPN027 _Tu8("Can't create socket. (%s)", "Can't create socket. (%s)")
29+#define MSGJPN028 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")
30+#define MSGJPN029 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")
31+#define MSGJPN030 _Tu8("Can't create listen socket. (%s)", "Can't create listen socket. (%s)")
32+#define MSGJPN031 _Tu8("PORT command not accepted. (%s)", "PORT command not accepted. (%s)")
3333 #define MSGJPN032 _Tu8("Connection is cancelled by user.", "Connection is cancelled by user.")
3434 #define MSGJPN033 _Tu8("Can't send SOCKS command. (Cmd = %04X)", "Can't send SOCKS command. (Cmd = %04X)")
3535 #define MSGJPN034 _Tu8("Can't receive SOCKS5 reply.", "Can't receive SOCKS5 reply.")
--- a/mesg-jpn.h
+++ b/mesg-jpn.h
@@ -14,22 +14,22 @@
1414 #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.")
1515 #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.")
1616 #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")
17-#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.")
18-#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.")
19-#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.")
20-#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.")
21-#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.")
22-#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.")
23-#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")
24-#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)")
25-#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)")
26-#define MSGJPN025 _Tu8("接続しました.", "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.")
27-#define MSGJPN026 _Tu8("接続できません.", "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.")
28-#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.")
29-#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)")
30-#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)")
31-#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.")
32-#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.")
17+#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)")
18+#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)")
19+#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)")
20+#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)")
21+#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)")
22+#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)")
23+#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)")
24+#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)")
25+#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)")
26+#define MSGJPN025 _Tu8("接続しました. (%s)", "\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F. (%s)")
27+#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)")
28+#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)")
29+#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)")
30+#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)")
31+#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)")
32+#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)")
3333 #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.")
3434 #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)")
3535 #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")
--- a/msgutil.c
+++ /dev/null
@@ -1,110 +0,0 @@
1-
2-#include <windows.h>
3-
4-/**
5- * アドレス固定のWide文字列とそれに対応するUTF-8文字列を格納する構造体
6- */
7-typedef struct {
8- const wchar_t *ws;
9- char *u8s;
10- size_t u8size;
11-} StrPair;
12-
13-static BOOL g_initialized = FALSE;
14-static CRITICAL_SECTION g_msgUtilLLock;
15-
16-// Wide文字列 - UTF-8文字列 対応Map
17-static StrPair *pStrMap = NULL;
18-
19-//! 現在有効なStrPairの数
20-static int strMapCount = 0;
21-
22-//! 確保済みのStrPairの領域数
23-static int strMapMaxCount = 0;
24-
25-/**
26- * staticなWide文字列に対応するUTF-8バイナリ文字列領域を確保し、その先頭アドレスを返す
27- */
28-const char* const MessageUtil_GetUTF8StaticBinaryBlock(const wchar_t* const ws, size_t ws_area_length)
29-{
30- int i = 0;
31- int wcsCount = 0;
32- int newSize = 0;
33- const char *pResult = NULL;
34- if (!g_initialized)
35- {
36- InitializeCriticalSection(&g_msgUtilLLock);
37- g_initialized = TRUE;
38- }
39- EnterCriticalSection(&g_msgUtilLLock);
40- for (i = 0; i < strMapCount; i++)
41- {
42- if (pStrMap[i].ws == ws)
43- {
44- pResult = pStrMap[i].u8s;
45- break;
46- }
47- }
48- if (pResult == NULL)
49- {
50- if (strMapMaxCount < strMapCount + 1)
51- {
52- // 領域が足りなくなったので追加する
53- if (strMapMaxCount == 0)
54- {
55- strMapMaxCount = 100;
56- pStrMap = (StrPair*)malloc(sizeof(StrPair) * strMapMaxCount);
57- }
58- else
59- {
60- strMapMaxCount += 100;
61- pStrMap = (StrPair*)realloc(pStrMap, sizeof(StrPair) * strMapMaxCount);
62- }
63- }
64- newSize = WideCharToMultiByte(CP_UTF8, 0, ws, ws_area_length, 0, 0, NULL, NULL);
65- if (newSize > 0)
66- {
67- int index = strMapCount;
68- char *beginPos = 0;
69- int postSize = 0;
70- strMapCount++;
71- pStrMap[index].ws = ws;
72- pStrMap[index].u8size = newSize;
73- beginPos = (char*)malloc(newSize);
74- pStrMap[index].u8s = beginPos;
75- postSize = WideCharToMultiByte(CP_UTF8, 0, ws, ws_area_length, beginPos, newSize, NULL, NULL);
76- pResult = beginPos;
77- }
78- else
79- {
80- static char sEmpty[] = "";
81- pResult = sEmpty;
82- }
83- }
84- LeaveCriticalSection(&g_msgUtilLLock);
85- return pResult;
86-}
87-
88-/**
89- * MessageUtil_GetUTF8StaticBinaryBlock() で確保した領域をすべて破棄する
90- */
91-void MessageUtil_FreeUTF8StaticBinaryBlocks()
92-{
93- int i = 0;
94- if (!g_initialized)
95- {
96- InitializeCriticalSection(&g_msgUtilLLock);
97- g_initialized = TRUE;
98- }
99- EnterCriticalSection(&g_msgUtilLLock);
100- for (i = 0; i < strMapCount; i++)
101- {
102- free(pStrMap[i].u8s);
103- }
104- if (pStrMap)
105- {
106- free(pStrMap);
107- pStrMap = (StrPair*)NULL;
108- }
109- LeaveCriticalSection(&g_msgUtilLLock);
110-}
--- a/msgutil.h
+++ /dev/null
@@ -1,21 +0,0 @@
1-
2-// 指定した文字列の UTF-8 バイナリ文字列の先頭アドレスを取得する u8("文字列リテラル") の形で呼び出す
3-#define u8(x) MessageUtil_GetUTF8StaticBinaryBlock(L ## x, sizeof(L ## x) / sizeof(wchar_t))
4-
5-/**
6- * UTF-8文字列バイナリを取得する。取得した文字列のアドレスはアプリケーション終了まで有効。
7- * 失敗した場合は "" が返る。
8- * 必ず u8マクロと組み合わせて、u8("文字列リテラル") の形で呼び出す。引数に文字列変数を渡した場合の動作は不定。
9- *
10- * @param[in] ws 文字列
11- * @param[in] ws_area_length 文字列の長さ。終端NULL文字を含んだ値であること。ws: "" のとき、countof_ws: 1
12- * @return wsで表される文字列のUTF8バイナリの先頭アドレス
13- */
14-const char* const MessageUtil_GetUTF8StaticBinaryBlock(const wchar_t* const ws, size_t ws_area_length);
15-
16-/**
17- * UTF-8文字列群の文字領域を破棄する.
18- *
19- * MessageUtil_GetUTF8StaticBinaryBlock()で確保した文字列領域をすべて開放する。アプリケーション終了時に呼び出すこと.
20- */
21-void MessageUtil_FreeUTF8StaticBinaryBlocks();
--- a/option.c
+++ b/option.c
@@ -168,6 +168,8 @@ extern int FolderAttr;
168168 extern int FolderAttrNum;
169169 // ファイルアイコン表示対応
170170 extern int DispFileIcon;
171+// ディレクトリ自動作成
172+extern int MakeAllDir;
171173
172174
173175 /*----- オプションのプロパティシート ------------------------------------------
@@ -406,6 +408,8 @@ static INT_PTR CALLBACK Trmode1SettingProc(HWND hDlg, UINT message, WPARAM wPara
406408 SendDlgItemMessage(hDlg, TRMODE_TIME, BM_SETCHECK, SaveTimeStamp, 0);
407409 SendDlgItemMessage(hDlg, TRMODE_EOF, BM_SETCHECK, RmEOF, 0);
408410 SendDlgItemMessage(hDlg, TRMODE_SEMICOLON, BM_SETCHECK, VaxSemicolon, 0);
411+ // ディレクトリ自動作成
412+ SendDlgItemMessage(hDlg, TRMODE_MAKEDIR, BM_SETCHECK, MakeAllDir, 0);
409413
410414 SendMessage(hDlg, WM_COMMAND, MAKEWPARAM(TRMODE_EXT_LIST, 0), 0);
411415
@@ -422,6 +426,8 @@ static INT_PTR CALLBACK Trmode1SettingProc(HWND hDlg, UINT message, WPARAM wPara
422426 SaveTimeStamp = SendDlgItemMessage(hDlg, TRMODE_TIME, BM_GETCHECK, 0, 0);
423427 RmEOF = SendDlgItemMessage(hDlg, TRMODE_EOF, BM_GETCHECK, 0, 0);
424428 VaxSemicolon = SendDlgItemMessage(hDlg, TRMODE_SEMICOLON, BM_GETCHECK, 0, 0);
429+ // ディレクトリ自動作成
430+ MakeAllDir = SendDlgItemMessage(hDlg, TRMODE_MAKEDIR, BM_GETCHECK, 0, 0);
425431 break;
426432
427433 case PSN_RESET :
--- a/registry.c
+++ b/registry.c
@@ -195,6 +195,8 @@ extern BYTE CertificateCacheHash[MAX_CERT_CACHE_HASH][20];
195195 extern BYTE SSLRootCAFileHash[20];
196196 // ファイルアイコン表示対応
197197 extern int DispFileIcon;
198+// ディレクトリ自動作成
199+extern int MakeAllDir;
198200
199201 /*----- マスタパスワードの設定 ----------------------------------------------
200202 *
@@ -293,7 +295,7 @@ int ValidateMasterPassword(void)
293295 * なし
294296 *----------------------------------------------------------------------------*/
295297
296-void SaveRegistory(void)
298+void SaveRegistry(void)
297299 {
298300 void *hKey3;
299301 void *hKey4;
@@ -615,6 +617,8 @@ void SaveRegistory(void)
615617 WriteStringToReg(hKey4, "RootCertHash", Str);
616618 // ファイルアイコン表示対応
617619 WriteIntValueToReg(hKey4, "ListIcon", DispFileIcon);
620+ // ディレクトリ自動作成
621+ WriteIntValueToReg(hKey4, "MakeDir", MakeAllDir);
618622 }
619623 CloseSubKey(hKey4);
620624 }
@@ -635,7 +639,7 @@ void SaveRegistory(void)
635639 * NO: 読み出し失敗(設定無し)
636640 *----------------------------------------------------------------------------*/
637641
638-int LoadRegistory(void)
642+int LoadRegistry(void)
639643 {
640644 void *hKey3;
641645 void *hKey4;
@@ -992,6 +996,8 @@ int LoadRegistory(void)
992996 StrReadIn(Buf, sizeof(SSLRootCAFileHash), (char*)&SSLRootCAFileHash);
993997 // ファイルアイコン表示対応
994998 ReadIntValueFromReg(hKey4, "ListIcon", &DispFileIcon);
999+ // ディレクトリ自動作成
1000+ ReadIntValueFromReg(hKey4, "MakeDir", &MakeAllDir);
9951001
9961002 CloseSubKey(hKey4);
9971003 }
@@ -1033,7 +1039,7 @@ int LoadRegistory(void)
10331039 * YES/NO=設定無し
10341040 *----------------------------------------------------------------------------*/
10351041
1036-DWORD LoadHideDriveListRegistory(void)
1042+DWORD LoadHideDriveListRegistry(void)
10371043 {
10381044 HKEY hKey1;
10391045 HKEY hKey2;
@@ -1085,7 +1091,7 @@ DWORD LoadHideDriveListRegistory(void)
10851091 * なし
10861092 *----------------------------------------------------------------------------*/
10871093
1088-void ClearRegistory(void)
1094+void ClearRegistry(void)
10891095 {
10901096 HKEY hKey2;
10911097 HKEY hKey3;
@@ -1980,7 +1986,7 @@ static int CloseReg(void *Handle)
19801986 if(WriteOutRegToFile(Handle) == TRUE)
19811987 {
19821988 // /* レジストリをクリア */
1983-// ClearRegistory();
1989+// ClearRegistry();
19841990 }
19851991 }
19861992 /* テーブルを削除 */
--- a/remote.c
+++ b/remote.c
@@ -523,7 +523,9 @@ SOCKET DoClose(SOCKET Sock)
523523 * int 応答コードの1桁目
524524 *----------------------------------------------------------------------------*/
525525
526-int DoQUIT(SOCKET ctrl_skt)
526+// 同時接続対応
527+//int DoQUIT(SOCKET ctrl_skt)
528+int DoQUIT(SOCKET ctrl_skt, int *CancelCheckWork)
527529 {
528530 int Ret;
529531
@@ -531,7 +533,7 @@ int DoQUIT(SOCKET ctrl_skt)
531533 if(SendQuit == YES)
532534 // 同時接続対応
533535 // Ret = command(ctrl_skt, NULL, &CheckCancelFlg, "QUIT") / 100;
534- Ret = command(ctrl_skt, NULL, &CancelFlg, "QUIT") / 100;
536+ Ret = command(ctrl_skt, NULL, CancelCheckWork, "QUIT") / 100;
535537
536538 return(Ret);
537539 }
@@ -637,7 +639,7 @@ static int DoDirList(HWND hWnd, SOCKET cSkt, char *AddOpt, char *Path, int Num,
637639 MainTransPkt.hWndTrans = hWnd;
638640 MainTransPkt.Next = NULL;
639641
640- Sts = DoDownLoad(cSkt, &MainTransPkt, YES, CancelCheckWork);
642+ Sts = DoDownload(cSkt, &MainTransPkt, YES, CancelCheckWork);
641643
642644 //#pragma aaa
643645 //DoPrintf("===== DoDirList Done.");
--- a/socket.c
+++ b/socket.c
@@ -91,10 +91,10 @@ typedef struct {
9191 static LRESULT CALLBACK SocketWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
9292 static int AskAsyncDone(SOCKET s, int *Error, int Mask);
9393 static int AskAsyncDoneDbase(HANDLE Async, int *Error);
94-static int RegistAsyncTable(SOCKET s);
95-static int RegistAsyncTableDbase(HANDLE Async);
96-static int UnRegistAsyncTable(SOCKET s);
97-static int UnRegistAsyncTableDbase(HANDLE Async);
94+static int RegisterAsyncTable(SOCKET s);
95+static int RegisterAsyncTableDbase(HANDLE Async);
96+static int UnregisterAsyncTable(SOCKET s);
97+static int UnregisterAsyncTableDbase(HANDLE Async);
9898
9999
100100 /*===== 外部参照 =====*/
@@ -275,7 +275,7 @@ static LRESULT CALLBACK SocketWndProc(HWND hWnd, UINT message, WPARAM wParam, LP
275275
276276 case WM_ASYNC_DBASE :
277277 // APIの仕様上ハンドルが登録される前にウィンドウメッセージが呼び出される可能性あり
278- RegistAsyncTableDbase((HANDLE)wParam);
278+ RegisterAsyncTableDbase((HANDLE)wParam);
279279 // スレッド衝突のバグ修正
280280 WaitForSingleObject(hAsyncTblAccMutex, INFINITE);
281281 for(Pos = 0; Pos < MAX_SIGNAL_ENTRY_DBASE; Pos++)
@@ -450,7 +450,7 @@ static int AskAsyncDoneDbase(HANDLE Async, int *Error)
450450 *
451451 *----------------------------------------------------------------------------*/
452452
453-static int RegistAsyncTable(SOCKET s)
453+static int RegisterAsyncTable(SOCKET s)
454454 {
455455 int Sts;
456456 int Pos;
@@ -516,7 +516,7 @@ static int RegistAsyncTable(SOCKET s)
516516 *
517517 *----------------------------------------------------------------------------*/
518518
519-static int RegistAsyncTableDbase(HANDLE Async)
519+static int RegisterAsyncTableDbase(HANDLE Async)
520520 {
521521 int Sts;
522522 int Pos;
@@ -578,7 +578,7 @@ static int RegistAsyncTableDbase(HANDLE Async)
578578 *
579579 *----------------------------------------------------------------------------*/
580580
581-static int UnRegistAsyncTable(SOCKET s)
581+static int UnregisterAsyncTable(SOCKET s)
582582 {
583583 int Sts;
584584 int Pos;
@@ -613,7 +613,7 @@ static int UnRegistAsyncTable(SOCKET s)
613613 *
614614 *----------------------------------------------------------------------------*/
615615
616-static int UnRegistAsyncTableDbase(HANDLE Async)
616+static int UnregisterAsyncTableDbase(HANDLE Async)
617617 {
618618 int Sts;
619619 int Pos;
@@ -666,7 +666,7 @@ struct hostent *do_gethostbynameIPv4(const char *Name, char *Buf, int Len, int *
666666 hAsync = WSAAsyncGetHostByNameM(hWndSocket, WM_ASYNC_DBASE, Name, Buf, Len);
667667 if(hAsync != NULL)
668668 {
669- RegistAsyncTableDbase(hAsync);
669+ RegisterAsyncTableDbase(hAsync);
670670 while((*CancelCheckWork == NO) && (AskAsyncDoneDbase(hAsync, &Error) != YES))
671671 {
672672 Sleep(1);
@@ -682,7 +682,7 @@ struct hostent *do_gethostbynameIPv4(const char *Name, char *Buf, int Len, int *
682682 {
683683 Ret = (struct hostent *)Buf;
684684 }
685- UnRegistAsyncTableDbase(hAsync);
685+ UnregisterAsyncTableDbase(hAsync);
686686 }
687687 return(Ret);
688688 #else
@@ -710,7 +710,7 @@ struct hostent *do_gethostbynameIPv6(const char *Name, char *Buf, int Len, int *
710710 hAsync = WSAAsyncGetHostByNameIPv6M(hWndSocket, WM_ASYNC_DBASE, Name, Buf, Len, AF_INET6);
711711 if(hAsync != NULL)
712712 {
713- RegistAsyncTableDbase(hAsync);
713+ RegisterAsyncTableDbase(hAsync);
714714 while((*CancelCheckWork == NO) && (AskAsyncDoneDbase(hAsync, &Error) != YES))
715715 {
716716 Sleep(1);
@@ -726,7 +726,7 @@ struct hostent *do_gethostbynameIPv6(const char *Name, char *Buf, int Len, int *
726726 {
727727 Ret = (struct hostent *)Buf;
728728 }
729- UnRegistAsyncTableDbase(hAsync);
729+ UnregisterAsyncTableDbase(hAsync);
730730 }
731731 return(Ret);
732732 #else
@@ -745,7 +745,7 @@ SOCKET do_socket(int af, int type, int protocol)
745745 Ret = socket(af, type, protocol);
746746 if(Ret != INVALID_SOCKET)
747747 {
748- RegistAsyncTable(Ret);
748+ RegisterAsyncTable(Ret);
749749 }
750750 #if DBG_MSG
751751 DoPrintf("# do_socket (S=%x)", Ret);
@@ -769,7 +769,7 @@ int do_closesocket(SOCKET s)
769769
770770 // スレッド衝突のバグ修正
771771 WSAAsyncSelect(s, hWndSocket, WM_ASYNC_SOCKET, 0);
772- UnRegistAsyncTable(s);
772+ UnregisterAsyncTable(s);
773773 // FTPS対応
774774 // Ret = closesocket(s);
775775 Ret = FTPS_closesocket(s);
@@ -792,7 +792,7 @@ int do_closesocket(SOCKET s)
792792 if(BackgrndMessageProc() == YES)
793793 CancelCheckWork = YES;
794794 // スレッド衝突のバグ修正
795-// UnRegistAsyncTable(s);
795+// UnregisterAsyncTable(s);
796796
797797 #if DBG_MSG
798798 DoPrintf("# Exit close");
@@ -929,7 +929,7 @@ SOCKET do_accept(SOCKET s, struct sockaddr *addr, int *addrlen)
929929 DoPrintf("## do_sccept (S=%x)", Ret2);
930930 DoPrintf("## Async set: FD_CONNECT|FD_CLOSE|FD_ACCEPT|FD_READ|FD_WRITE");
931931 #endif
932- RegistAsyncTable(Ret2);
932+ RegisterAsyncTable(Ret2);
933933 // 高速化のためFD_READとFD_WRITEを使用しない
934934 // if(WSAAsyncSelect(Ret2, hWndSocket, WM_ASYNC_SOCKET, FD_CONNECT | FD_CLOSE | FD_ACCEPT | FD_READ | FD_WRITE) == SOCKET_ERROR)
935935 if(WSAAsyncSelect(Ret2, hWndSocket, WM_ASYNC_SOCKET, FD_CONNECT | FD_CLOSE | FD_ACCEPT) == SOCKET_ERROR)
--- a/socketwrapper.c
+++ b/socketwrapper.c
@@ -717,10 +717,11 @@ DWORD WINAPI WSAAsyncGetHostByNameIPv6ThreadProc(LPVOID lpParameter)
717717 }
718718 else
719719 PostMessage(pData->hWnd, pData->wMsg, (WPARAM)pData->h, (LPARAM)(ERROR_INVALID_FUNCTION << 16));
720- free(pData->name);
721- free(pData);
722720 // CreateThreadが返すハンドルが重複するのを回避
723721 Sleep(10000);
722+ CloseHandle(pData->h);
723+ free(pData->name);
724+ free(pData);
724725 return 0;
725726 }
726727
--- a/toolmenu.c
+++ b/toolmenu.c
@@ -315,7 +315,7 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst)
315315
316316 /* ドライブ名をセットしておく */
317317 GetLogicalDriveStrings(FMAX_PATH, Tmp);
318- NoDrives = LoadHideDriveListRegistory();
318+ NoDrives = LoadHideDriveListRegistry();
319319 Pos = Tmp;
320320 while(*Pos != NUL)
321321 {