OSDN Git Service

Update to 66d24c0aad0c81cae0fb0630e91257f7acd819e2 (1.98e).
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Thu, 23 Feb 2012 08:38:28 +0000 (17:38 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Thu, 23 Feb 2012 08:38:28 +0000 (17:38 +0900)
22 files changed:
FFFTP_Eng_Release/FFFTP.exe
FFFTP_Eng_Release_64/FFFTP.exe
Package/installer_config.bat
Package/make_installer_pre.bat
Release/FFFTP.exe
Release_64/FFFTP.exe
Resource/FFFTP.rc
Resource/resource.h
Resource_eng/FFFTP-eng.rc
Resource_eng/resource.h
common.h
doc/eng/FFFTP.txt
doc/eng/history.txt
doc/jpn/FFFTP.txt
doc/jpn/history.txt
filelist.c
ftpproc.c
main.c
mbswrapper.c
mbswrapper.h
option.c
registry.c

index 4298092..245590b 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index b419e96..b0a6478 100644 (file)
Binary files a/FFFTP_Eng_Release_64/FFFTP.exe and b/FFFTP_Eng_Release_64/FFFTP.exe differ
index c34d000..9683510 100644 (file)
@@ -17,6 +17,7 @@ set ENG_INST=EXEpress\eng\ffftp.exe
 set HTMLHELP=..\htmlhelp\FFFTP.CHM\r
 set BIN_JPN=..\Release\FFFTP.exe\r
 set BIN_ENG=..\FFFTP_Eng_Release\FFFTP.exe\r
+set PORTABLE_FILE=portable\r
 \r
 set DIR_JPN_DOC=..\doc\jpn\r
 set DIR_ENG_DOC=..\doc\eng\r
index d075c96..08c65bd 100644 (file)
@@ -27,4 +27,8 @@ REM; copy to installer working directory
 copy /Y %DIR_JPN%\*.* %DIR_JPN_INST%\r
 copy /Y %DIR_ENG%\*.* %DIR_ENG_INST%\r
 \r
+REM; copy a portable indicator file\r
+copy /Y %PORTABLE_FILE% %DIR_JPN%\r
+copy /Y %PORTABLE_FILE% %DIR_ENG%\r
+\r
 pause\r
index e208a6c..aace87a 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 492343e..24a0d29 100644 (file)
Binary files a/Release_64/FFFTP.exe and b/Release_64/FFFTP.exe differ
index 7e1f8e6..c315d41 100644 (file)
@@ -1423,6 +1423,16 @@ BEGIN
     PUSHBUTTON      "\92\86\8e~(&S)",UPDOWNAS_STOP,101,66,50,14\r
 END\r
 \r
+ini_from_reg_dlg DIALOG  0, 0, 211, 64\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION\r
+CAPTION "\83\8c\83W\83X\83g\83\8a\82Ì\90Ý\92è\82Ì\83C\83\93\83|\81[\83g"\r
+FONT 9, "MS Shell Dlg"\r
+BEGIN\r
+    LTEXT           "INI\83t\83@\83C\83\8b\82ð\8eg\97p\82·\82é\82æ\82¤\82É\90Ý\92è\82³\82ê\82Ä\82¢\82Ü\82·\82ª\81AINI\83t\83@\83C\83\8b\82Å\82Í\82È\82­\83\8c\83W\83X\83g\83\8a\82É\90Ý\92è\82ª\91\8dÝ\82·\82é\82±\82Æ\82ð\8c\9f\8fo\82µ\82Ü\82µ\82½\81B\r\n\83\8c\83W\83X\83g\83\8a\82Ì\90Ý\92è\82ð\83C\83\93\83|\81[\83g\82µ\82Ü\82·\82©\81B",-1,7,7,196,36\r
+    DEFPUSHBUTTON   "\82Í\82¢",IDOK,48,42,50,14\r
+    PUSHBUTTON      "\82¢\82¢\82¦",IDCANCEL,112,42,50,14\r
+END\r
+\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 //\r
@@ -1578,9 +1588,9 @@ BEGIN
     forcepasschange_dlg, DIALOG\r
     BEGIN\r
         LEFTMARGIN, 7\r
-        RIGHTMARGIN, 139\r
+        RIGHTMARGIN, 204\r
         TOPMARGIN, 7\r
-        BOTTOMMARGIN, 43\r
+        BOTTOMMARGIN, 57\r
     END\r
 \r
     opt_trmode2_dlg, DIALOG\r
@@ -2066,9 +2076,9 @@ BEGIN
     updatesslroot_dlg, DIALOG\r
     BEGIN\r
         LEFTMARGIN, 7\r
-        RIGHTMARGIN, 139\r
+        RIGHTMARGIN, 204\r
         TOPMARGIN, 7\r
-        BOTTOMMARGIN, 43\r
+        BOTTOMMARGIN, 57\r
     END\r
 \r
     updown_as_with_ext_dlg, DIALOG\r
@@ -2076,7 +2086,15 @@ BEGIN
         LEFTMARGIN, 7\r
         RIGHTMARGIN, 180\r
         TOPMARGIN, 7\r
-        BOTTOMMARGIN, 87\r
+        BOTTOMMARGIN, 82\r
+    END\r
+\r
+    ini_from_reg_dlg, DIALOG\r
+    BEGIN\r
+        LEFTMARGIN, 7\r
+        RIGHTMARGIN, 204\r
+        TOPMARGIN, 7\r
+        BOTTOMMARGIN, 57\r
     END\r
 END\r
 #endif    // APSTUDIO_INVOKED\r
index 1df3b2c..fc204e5 100644 (file)
 #define savecrypt_dlg                   191\r
 #define updatesslroot_dlg               192\r
 #define updown_as_with_ext_dlg          193\r
+#define ini_from_reg_dlg                194\r
 #define TRANS_TIME_BAR                  1002\r
 #define TRANS_TEXT                      1003\r
 #define TRANS_REMOTE                    1003\r
 // \r
 #ifdef APSTUDIO_INVOKED\r
 #ifndef APSTUDIO_READONLY_SYMBOLS\r
-#define _APS_NEXT_RESOURCE_VALUE        193\r
+#define _APS_NEXT_RESOURCE_VALUE        195\r
 #define _APS_NEXT_COMMAND_VALUE         40177\r
 #define _APS_NEXT_CONTROL_VALUE         1213\r
 #define _APS_NEXT_SYMED_VALUE           101\r
index d031279..09cf5e1 100644 (file)
@@ -1452,6 +1452,16 @@ BEGIN
     PUSHBUTTON      "Cancel",UPDOWNAS_STOP,101,66,50,14\r
 END\r
 \r
+ini_from_reg_dlg DIALOG  0, 0, 211, 64\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION\r
+CAPTION "Import settings from registry"\r
+FONT 9, "MS Shell Dlg"\r
+BEGIN\r
+    LTEXT           "The INI file that will be used was not found, but settings are detected in the registry.\r\nImport settings from the registry to the INI file?",-1,7,7,196,36\r
+    DEFPUSHBUTTON   "Yes",IDOK,48,42,50,14\r
+    PUSHBUTTON      "No",IDCANCEL,112,42,50,14\r
+END\r
+\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 //\r
@@ -1607,9 +1617,9 @@ BEGIN
     forcepasschange_dlg, DIALOG\r
     BEGIN\r
         LEFTMARGIN, 7\r
-        RIGHTMARGIN, 139\r
+        RIGHTMARGIN, 204\r
         TOPMARGIN, 7\r
-        BOTTOMMARGIN, 43\r
+        BOTTOMMARGIN, 57\r
     END\r
 \r
     opt_trmode2_dlg, DIALOG\r
@@ -2092,9 +2102,9 @@ BEGIN
     updatesslroot_dlg, DIALOG\r
     BEGIN\r
         LEFTMARGIN, 7\r
-        RIGHTMARGIN, 139\r
+        RIGHTMARGIN, 204\r
         TOPMARGIN, 7\r
-        BOTTOMMARGIN, 43\r
+        BOTTOMMARGIN, 57\r
     END\r
 \r
     updown_as_with_ext_dlg, DIALOG\r
@@ -2102,7 +2112,15 @@ BEGIN
         LEFTMARGIN, 7\r
         RIGHTMARGIN, 180\r
         TOPMARGIN, 7\r
-        BOTTOMMARGIN, 87\r
+        BOTTOMMARGIN, 82\r
+    END\r
+\r
+    ini_from_reg_dlg, DIALOG\r
+    BEGIN\r
+        LEFTMARGIN, 7\r
+        RIGHTMARGIN, 204\r
+        TOPMARGIN, 7\r
+        BOTTOMMARGIN, 57\r
     END\r
 END\r
 #endif    // APSTUDIO_INVOKED\r
index 5cecea9..ebc89f5 100644 (file)
 #define savecrypt_dlg                   191\r
 #define updatesslroot_dlg               192\r
 #define updown_as_with_ext_dlg          193\r
+#define ini_from_reg_dlg                194\r
 #define TRANS_TIME_BAR                  1002\r
 #define TRANS_TEXT                      1003\r
 #define TRANS_REMOTE                    1003\r
 // \r
 #ifdef APSTUDIO_INVOKED\r
 #ifndef APSTUDIO_READONLY_SYMBOLS\r
-#define _APS_NEXT_RESOURCE_VALUE        193\r
+#define _APS_NEXT_RESOURCE_VALUE        195\r
 #define _APS_NEXT_COMMAND_VALUE         40177\r
 #define _APS_NEXT_CONTROL_VALUE         1213\r
 #define _APS_NEXT_SYMED_VALUE           101\r
index 853472d..6b16dd2 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1308,6 +1308,9 @@ BOOL LoadSSLRootCAFile();
 BOOL IsMainThread();\r
 // ファイルアイコン表示対応\r
 int AskDispFileIcon(void);\r
+// ポータブル版判定\r
+void CheckPortableVersion();\r
+int AskPortableVersion(void);\r
 \r
 /*===== filelist.c =====*/\r
 \r
@@ -1701,12 +1704,17 @@ int CheckFname(char *str, char *regexp);
 void SaveRegistry(void);\r
 int LoadRegistry(void);\r
 void ClearRegistry(void);\r
+// ポータブル版判定\r
+void ClearIni(void);\r
 void SetMasterPassword( const char* );\r
 int GetMasterPasswordStatus(void);\r
 int ValidateMasterPassword(void);\r
 DWORD LoadHideDriveListRegistry(void);\r
 void SaveSettingsToFile(void);\r
 int LoadSettingsFromFile(void);\r
+// ポータブル版判定\r
+int IsRegAvailable();\r
+int IsIniAvailable();\r
 \r
 /*===== lvtips.c =====*/\r
 \r
index e7c955c..e2c5a1d 100644 (file)
@@ -69,6 +69,13 @@ Changes in Ver.1.98e
    Name resolution and connection will be performed at same time on IPv4 and\r
    IPv6, and whichever finished earlier will be used.\r
 \r
+-- Disabled saving settings in the registry about ZIP version copies.\r
+   To save in the registry, please remove "portable" the file.\r
+\r
+-- Fix bugs of corruption of the extensions columns.\r
+\r
+-- Added support for some MLSD responses that do not conform to RFC 3659.\r
+\r
 \r
 Outline\r
 -------\r
index dd7f828..c533849 100644 (file)
@@ -41,6 +41,13 @@ Changes in Ver.1.98e
    Name resolution and connection will be performed at same time on IPv4 and\r
    IPv6, and whichever finished earlier will be used.\r
 \r
+-- Disabled saving settings in the registry about ZIP version copies.\r
+   To save in the registry, please remove "portable" the file.\r
+\r
+-- Fix bugs of corruption of the extensions columns.\r
+\r
+-- Added support for some MLSD responses that do not conform to RFC 3659.\r
+\r
 Changes in Ver.1.98d\r
 --------------------\r
 \r
index 0eeed49..6fe03df 100644 (file)
@@ -61,7 +61,7 @@ Ver 1.98e
 \81@\81i\88È\91O\82Ì\90Ý\92è\82ª\91\8dÝ\82µ\81A\93¯\8e\9e\90Ú\91±\90\94\82ª1\82æ\82è\91å\82«\82¢\8fê\8d\87\82Í\82»\82Ì\90Ý\92è\82ª\93K\97p\r
 \81@\82³\82ê\82Ü\82·\81j\81B\r
 \r
-\81E\83A\83b\83v\83\8d\81[\83h\8e\9e\82É\83z\83X\83g\82ª\96¼\91O\82ð\95t\82¯\82½\8fê\8d\87\82É\82·\82Å\82É\91\8dÝ\82·\82é\83t\83@\83C\83\8b\82Ì\r
+\81E\83A\83b\83v\83\8d\81[\83h\8e\9e\82É\83z\83X\83g\82ª\96¼\91O\82ð\95t\82¯\82½\8fê\8d\87\82É\8c³\82Ì\83t\83@\83C\83\8b\96¼\82Ì\83t\83@\83C\83\8b\82Ì\r
 \81@\91®\90«\82ª\95Ï\8dX\82³\82ê\82é\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\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
@@ -73,6 +73,13 @@ Ver 1.98e
 \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
+\81EZIP\94Å\82Å\82Í\83\8c\83W\83X\83g\83\8a\82É\90Ý\92è\82ð\88ê\90Ø\95Û\91\82µ\82È\82¢\82æ\82¤\82É\95Ï\8dX\82µ\82Ü\82µ\82½\81B\r
+\81@\83\8c\83W\83X\83g\83\8a\82ð\8eg\97p\82·\82é\82É\82Í\83t\83@\83C\83\8b"portable"\82ð\8dí\8f\9c\82µ\82Ä\82­\82¾\82³\82¢\81B\r
+\r
+\81E\83t\83@\83C\83\8b\88ê\97\97\82Ì\8eí\97Þ\82Ì\97ñ\82ª\90³\82µ\82­\95\\8e¦\82³\82ê\82È\82¢\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
+\r
+\81E\88ê\95\94\82ÌRFC 3659\82É\8f\80\8b\92\82µ\82È\82¢MLSD\83R\83}\83\93\83h\82Ì\89\9e\93\9a\82É\91Î\89\9e\82µ\82Ü\82µ\82½\81B\r
+\r
 \r
 Ver 1.96d\88È\91O\82Ö\96ß\82·\8fê\8d\87\r
 -----------------------\r
index 2518dfb..83c2baf 100644 (file)
@@ -45,6 +45,13 @@ FFFTP
 \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
+\81EZIP\94Å\82Å\82Í\83\8c\83W\83X\83g\83\8a\82É\90Ý\92è\82ð\88ê\90Ø\95Û\91\82µ\82È\82¢\82æ\82¤\82É\95Ï\8dX\82µ\82Ü\82µ\82½\81B\r
+\81@\83\8c\83W\83X\83g\83\8a\82ð\8eg\97p\82·\82é\82É\82Í\83t\83@\83C\83\8b"portable"\82ð\8dí\8f\9c\82µ\82Ä\82­\82¾\82³\82¢\81B\r
+\r
+\81E\83t\83@\83C\83\8b\88ê\97\97\82Ì\8eí\97Þ\82Ì\97ñ\82ª\90³\82µ\82­\95\\8e¦\82³\82ê\82È\82¢\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
+\r
+\81E\88ê\95\94\82ÌRFC 3659\82É\8f\80\8b\92\82µ\82È\82¢MLSD\83R\83}\83\93\83h\82Ì\89\9e\93\9a\82É\91Î\89\9e\82µ\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
index b3e1da2..c990d85 100644 (file)
@@ -1525,20 +1525,36 @@ static void AddDispFileList(FLISTANCHOR *Anchor, char *Name, FILETIME *Time, LON
 \r
                        if((Sort & SORT_GET_ORD) == SORT_ASCENT)\r
                        {\r
-                               if((((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
-                                       ((Cmp = _mbsicmp(GetFileExt(Name), GetFileExt(Pos->File))) < 0)) ||\r
+                               // 読みにくいのでリファクタリング\r
+//                             if((((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
+//                                     ((Cmp = _mbsicmp(GetFileExt(Name), GetFileExt(Pos->File))) < 0)) ||\r
+//#if defined(HAVE_TANDEM)\r
+//                                ((AskHostType() == HTYPE_TANDEM) &&\r
+//                                 ((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
+//                                     ((Cmp = Attr - Pos->Attr) < 0)) ||\r
+//#endif\r
+//                                (((Sort & SORT_MASK_ORD) == SORT_SIZE) &&\r
+//                                     ((Cmp = Size - Pos->Size) < 0)) ||\r
+//                                (((Sort & SORT_MASK_ORD) == SORT_DATE) &&\r
+//                                     ((Cmp = CompareFileTime(Time, &Pos->Time)) < 0)))\r
+//                             {\r
+//                                     break;\r
+//                             }\r
+                               if(((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
+                                       ((Cmp = _mbsicmp(GetFileExt(Name), GetFileExt(Pos->File))) < 0))\r
+                                       break;\r
 #if defined(HAVE_TANDEM)\r
-                                  ((AskHostType() == HTYPE_TANDEM) &&\r
-                                   ((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
-                                       ((Cmp = Attr - Pos->Attr) < 0)) ||\r
+                               if((AskHostType() == HTYPE_TANDEM) &&\r
+                                       ((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
+                                       ((Cmp = Attr - Pos->Attr) < 0))\r
+                                       break;\r
 #endif\r
-                                  (((Sort & SORT_MASK_ORD) == SORT_SIZE) &&\r
-                                       ((Cmp = Size - Pos->Size) < 0)) ||\r
-                                  (((Sort & SORT_MASK_ORD) == SORT_DATE) &&\r
-                                       ((Cmp = CompareFileTime(Time, &Pos->Time)) < 0)))\r
-                               {\r
+                               if(((Sort & SORT_MASK_ORD) == SORT_SIZE) &&\r
+                                       ((Cmp = Size - Pos->Size) < 0))\r
+                                       break;\r
+                               if(((Sort & SORT_MASK_ORD) == SORT_DATE) &&\r
+                                       ((Cmp = CompareFileTime(Time, &Pos->Time)) < 0))\r
                                        break;\r
-                               }\r
 \r
                                if(((Sort & SORT_MASK_ORD) == SORT_NAME) || (Cmp == 0))\r
                                {\r
index e13bc7d..01f2303 100644 (file)
--- a/ftpproc.c
+++ b/ftpproc.c
@@ -335,6 +335,8 @@ void DownloadProc(int ChName, int ForceFile, int All)
 void DirectDownloadProc(char *Fname)\r
 {\r
        TRANSPACKET Pkt;\r
+       // ディレクトリ自動作成\r
+       char Tmp[FMAX_PATH+1];\r
 \r
        // 同時接続対応\r
        CancelFlg = NO;\r
@@ -400,9 +402,17 @@ void DirectDownloadProc(char *Fname)
                                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) && (Pkt.Mode != EXIST_IGNORE))\r
+                               // ディレクトリ自動作成\r
+//                                     AddTransFileList(&Pkt);\r
+                               {\r
+                                       if(MakeAllDir == YES)\r
+                                               MakeDirFromLocalPath(Pkt.LocalFile, Tmp);\r
                                        AddTransFileList(&Pkt);\r
+                               }\r
                        }\r
                }\r
 \r
diff --git a/main.c b/main.c
index 89c8089..af2dd2f 100644 (file)
--- a/main.c
+++ b/main.c
@@ -136,6 +136,9 @@ static DWORD dwCookie;
 static char SSLRootCAFilePath[FMAX_PATH+1];\r
 // マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
 static DWORD MainThreadId;\r
+// ポータブル版判定\r
+static char PortableFilePath[FMAX_PATH+1];\r
+int PortableVersion;\r
 \r
 \r
 /*===== グローバルなワーク =====*/\r
@@ -409,6 +412,8 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
        char PwdBuf[FMAX_PATH+1];\r
        int useDefautPassword = 0; /* 警告文表示用 */\r
        int masterpass;\r
+       // ポータブル版判定\r
+       int ImportPortable;\r
 \r
        sts = FFFTP_FAIL;\r
 \r
@@ -446,6 +451,25 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                        ForceIni = YES;\r
                        RegType = REGTYPE_INI;\r
                }\r
+               // ポータブル版判定\r
+               GetModuleFileName(NULL, PortableFilePath, FMAX_PATH);\r
+               strcpy(GetFileName(PortableFilePath), "portable");\r
+               CheckPortableVersion();\r
+               ImportPortable = NO;\r
+               if(PortableVersion == YES)\r
+               {\r
+                       ForceIni = YES;\r
+                       RegType = REGTYPE_INI;\r
+                       if(IsRegAvailable() == YES && IsIniAvailable() == NO)\r
+                       {\r
+                               if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(ini_from_reg_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
+                               {\r
+                                       ImportPortable = YES;\r
+                                       ForceIni = NO;\r
+                                       RegType = REGTYPE_REG;\r
+                               }\r
+                       }\r
+               }\r
 \r
 //             AllocConsole();\r
 \r
@@ -499,6 +523,13 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                {\r
                        LoadRegistry();\r
 \r
+                       // ポータブル版判定\r
+                       if(ImportPortable == YES)\r
+                       {\r
+                               ForceIni = YES;\r
+                               RegType = REGTYPE_INI;\r
+                       }\r
+\r
                        // 暗号化通信対応\r
                        SetSSLTimeoutCallback(TimeOut * 1000, SSLTimeoutCallback);\r
                        SetSSLConfirmCallback(SSLConfirmCallback);\r
@@ -1380,6 +1411,8 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                        if(DialogBox(hInstFtp, MAKEINTRESOURCE(reginit_dlg), hWnd, ExeEscDialogProc) == YES)\r
                                        {\r
                                                ClearRegistry();\r
+                                               // ポータブル版判定\r
+                                               ClearIni();\r
                                                SaveExit = NO;\r
                                                PostMessage(hWnd, WM_CLOSE, 0, 0L);\r
                                        }\r
@@ -2087,6 +2120,9 @@ static void ExitProc(HWND hWnd)
        {\r
                GetListTabWidth();\r
                SaveRegistry();\r
+               // ポータブル版判定\r
+               if(RegType == REGTYPE_REG)\r
+                       ClearIni();\r
 \r
                if((CacheEntry > 0) && (CacheSave == YES))\r
                        SaveCache();\r
@@ -3098,7 +3134,7 @@ BOOL LoadSSLRootCAFile()
                                for(i = 0; i < 5; i++)\r
                                        Hash[i] = _byteswap_ulong(Hash[i]);\r
                                // 同梱する"ssl.pem"に合わせてSHA1ハッシュ値を変更すること\r
-                               if(memcmp(&Hash, &SSLRootCAFileHash, 20) == 0 || memcmp(&Hash, "\xF0\x1B\x48\x26\x67\x44\x3A\xFF\x0A\x16\xD3\xBB\x8A\x33\xEB\x70\x6D\x75\xA6\x0D", 20) == 0\r
+                               if(memcmp(&Hash, &SSLRootCAFileHash, 20) == 0 || memcmp(&Hash, "\x63\xAC\x6C\x43\xCE\xD6\x5B\xCF\x33\xB9\x45\x70\xC3\x9B\x8C\x91\x19\x0D\xEF\xE6", 20) == 0\r
                                        || DialogBox(GetFtpInst(), MAKEINTRESOURCE(updatesslroot_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
                                {\r
                                        memcpy(&SSLRootCAFileHash, &Hash, 20);\r
@@ -3127,3 +3163,21 @@ int AskDispFileIcon(void)
        return(DispFileIcon);\r
 }\r
 \r
+// ポータブル版判定\r
+void CheckPortableVersion()\r
+{\r
+       HANDLE hFile;\r
+       if((hFile = CreateFile(PortableFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)\r
+       {\r
+               PortableVersion = YES;\r
+               CloseHandle(hFile);\r
+       }\r
+       else\r
+               PortableVersion = NO;\r
+}\r
+\r
+int AskPortableVersion(void)\r
+{\r
+       return(PortableVersion);\r
+}\r
+\r
index 86a1b21..0128606 100644 (file)
@@ -427,14 +427,19 @@ DWORD GetNextCharM(LPCSTR lpString, LPCSTR* ppNext)
        }\r
        else\r
                i = -1;\r
-       lpString++;\r
-       while((*lpString & 0xc0) == 0x80)\r
+       if(*lpString != 0x00)\r
        {\r
-               i--;\r
-               Code = Code << 6;\r
-               Code |= (DWORD)*lpString & 0x3f;\r
                lpString++;\r
+               while((*lpString & 0xc0) == 0x80)\r
+               {\r
+                       i--;\r
+                       Code = Code << 6;\r
+                       Code |= (DWORD)*lpString & 0x3f;\r
+                       lpString++;\r
+               }\r
        }\r
+       else\r
+               lpString++;\r
        if(i != 0)\r
                Code = 0x80000000;\r
        if(ppNext)\r
@@ -2156,6 +2161,18 @@ END_ROUTINE
        return r;\r
 }\r
 \r
+BOOL DeleteFileM(LPCSTR lpFileName)\r
+{\r
+       BOOL r = FALSE;\r
+       wchar_t* pw0 = NULL;\r
+START_ROUTINE\r
+       pw0 = DuplicateMtoW(lpFileName, -1);\r
+       r = DeleteFileW(pw0);\r
+END_ROUTINE\r
+       FreeDuplicatedString(pw0);\r
+       return r;\r
+}\r
+\r
 int mkdirM(const char * _Path)\r
 {\r
        int r = -1;\r
index 9d134e1..84ffc36 100644 (file)
@@ -176,6 +176,9 @@ BOOL CopyFileM(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, BOOL bFailIfExis
 #undef MoveFile\r
 #define MoveFile MoveFileM\r
 BOOL MoveFileM(LPCSTR lpExistingFileName, LPCSTR lpNewFileName);\r
+#undef DeleteFile\r
+#define DeleteFile DeleteFileM\r
+BOOL DeleteFileM(LPCSTR lpFileName);\r
 #undef mkdir\r
 #define mkdir _mkdirM\r
 int mkdirM(const char * _Path);\r
index ba2c340..025128e 100644 (file)
--- a/option.c
+++ b/option.c
@@ -1481,6 +1481,9 @@ static INT_PTR CALLBACK MiscSettingProc(HWND hDlg, UINT message, WPARAM wParam,
                        SendDlgItemMessage(hDlg, MISC_WINPOS, BM_SETCHECK, SaveWinPos, 0);\r
                        SendDlgItemMessage(hDlg, MISC_DEBUG, BM_SETCHECK, DebugConsole, 0);\r
                        SendDlgItemMessage(hDlg, MISC_REGTYPE, BM_SETCHECK, RegType, 0);\r
+                       // ポータブル版判定\r
+                       if(AskForceIni() == YES)\r
+                               EnableWindow(GetDlgItem(hDlg, MISC_REGTYPE), FALSE);\r
 \r
                        SendDlgItemMessage(hDlg, MISC_CACHE_SAVE, BM_SETCHECK, CacheSave, 0);\r
                        SendDlgItemMessage(hDlg, MISC_BUFNUM, EM_LIMITTEXT, (WPARAM)2, 0);\r
@@ -1510,7 +1513,10 @@ static INT_PTR CALLBACK MiscSettingProc(HWND hDlg, UINT message, WPARAM wParam,
                                case PSN_APPLY :\r
                                        SaveWinPos = SendDlgItemMessage(hDlg, MISC_WINPOS, BM_GETCHECK, 0, 0);\r
                                        DebugConsole = SendDlgItemMessage(hDlg, MISC_DEBUG, BM_GETCHECK, 0, 0);\r
-                                       RegType = SendDlgItemMessage(hDlg, MISC_REGTYPE, BM_GETCHECK, 0, 0);\r
+                                       // ポータブル版判定\r
+//                                     RegType = SendDlgItemMessage(hDlg, MISC_REGTYPE, BM_GETCHECK, 0, 0);\r
+                                       if(AskForceIni() == NO)\r
+                                               RegType = SendDlgItemMessage(hDlg, MISC_REGTYPE, BM_GETCHECK, 0, 0);\r
 \r
                                        CacheSave = SendDlgItemMessage(hDlg, MISC_CACHE_SAVE, BM_GETCHECK, 0, 0);\r
                                        CacheEntry = GetDecimalText(hDlg, MISC_BUFNUM);\r
index 4fa8352..95fada4 100644 (file)
@@ -1130,6 +1130,20 @@ void ClearRegistry(void)
 }\r
 \r
 \r
+// ポータブル版判定\r
+void ClearIni(void)\r
+{\r
+//     FILE *Strm;\r
+//     if((Strm = fopen(AskIniFilePath(), "rt")) != NULL)\r
+//     {\r
+//             fclose(Strm);\r
+//             MoveFileToTrashCan(AskIniFilePath());\r
+//     }\r
+       DeleteFile(AskIniFilePath());\r
+       return;\r
+}\r
+\r
+\r
 /*----- 設定をファイルに保存 --------------------------------------------------\r
 *\r
 *      Parameter\r
@@ -1966,18 +1980,20 @@ static int CloseReg(void *Handle)
 {\r
        REGDATATBL *Pos;\r
        REGDATATBL *Next;\r
-       FILE *Strm;\r
+       // ポータブル版判定\r
+//     FILE *Strm;\r
 \r
        if(TmpRegType == REGTYPE_REG)\r
        {\r
                RegCloseKey(Handle);\r
 \r
                /* INIファイルを削除 */\r
-               if((Strm = fopen(AskIniFilePath(), "rt")) != NULL)\r
-               {\r
-                       fclose(Strm);\r
-                       MoveFileToTrashCan(AskIniFilePath());\r
-               }\r
+               // ポータブル版判定\r
+//             if((Strm = fopen(AskIniFilePath(), "rt")) != NULL)\r
+//             {\r
+//                     fclose(Strm);\r
+//                     MoveFileToTrashCan(AskIniFilePath());\r
+//             }\r
        }\r
        else\r
        {\r
@@ -2927,3 +2943,33 @@ DWORD GetRandamDWRODValue(void)
        }\r
        return rndValue;\r
 }\r
+\r
+// ポータブル版判定\r
+int IsRegAvailable()\r
+{\r
+       int Sts;\r
+       void* h;\r
+       Sts = NO;\r
+       SetRegType(REGTYPE_REG);\r
+       if(OpenReg("FFFTP", &h) == FFFTP_SUCCESS)\r
+       {\r
+               CloseReg(h);\r
+               Sts = YES;\r
+       }\r
+       return Sts;\r
+}\r
+\r
+int IsIniAvailable()\r
+{\r
+       int Sts;\r
+       void* h;\r
+       Sts = NO;\r
+       SetRegType(REGTYPE_INI);\r
+       if(OpenReg("FFFTP", &h) == FFFTP_SUCCESS)\r
+       {\r
+               CloseReg(h);\r
+               Sts = YES;\r
+       }\r
+       return Sts;\r
+}\r
+\r