OSDN Git Service

Add support for retaining time stamps on uploading files.
[ffftp/ffftp.git] / registry.c
index b4bfa43..95fada4 100644 (file)
@@ -193,6 +193,10 @@ extern int FolderAttrNum;
 // 暗号化通信対応\r
 extern BYTE CertificateCacheHash[MAX_CERT_CACHE_HASH][20];\r
 extern BYTE SSLRootCAFileHash[20];\r
+// ファイルアイコン表示対応\r
+extern int DispFileIcon;\r
+// ディレクトリ自動作成\r
+extern int MakeAllDir;\r
 \r
 /*----- マスタパスワードの設定 ----------------------------------------------\r
 *\r
@@ -291,7 +295,7 @@ int ValidateMasterPassword(void)
 *              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
-void SaveRegistory(void)\r
+void SaveRegistry(void)\r
 {\r
        void *hKey3;\r
        void *hKey4;\r
@@ -422,7 +426,10 @@ void SaveRegistory(void)
 \r
                                WriteMultiStringToReg(hKey4, "DefAttr", DefAttrList);\r
 \r
-                               GetTempPath(FMAX_PATH, Str);\r
+                               // 環境依存の不具合対策\r
+//                             GetTempPath(FMAX_PATH, Str);\r
+                               GetAppTempPath(Str);\r
+                               SetYenTail(Str);\r
                                SaveStr(hKey4, "Tmp", TmpPath, Str);\r
 \r
                                WriteBinaryToReg(hKey4, "Hdlg", &HostDlgSize, sizeof(SIZE));\r
@@ -490,7 +497,12 @@ void SaveRegistory(void)
                                                        // MLSD対応\r
                                                        SaveIntNum(hKey5, "MLSD", Hist.UseMLSD, DefaultHist.UseMLSD);\r
                                                        // IPv6対応\r
-                                                       SaveIntNum(hKey5, "IPv6", Hist.UseIPv6, DefaultHist.UseIPv6);\r
+                                                       SaveIntNum(hKey5, "NetType", Hist.NetType, DefaultHist.NetType);\r
+                                                       // 自動切断対策\r
+                                                       SaveIntNum(hKey5, "Noop", Hist.NoopInterval, DefaultHist.NoopInterval);\r
+                                                       // 再転送対応\r
+                                                       SaveIntNum(hKey5, "ErrMode", Hist.TransferErrorMode, DefaultHist.TransferErrorMode);\r
+                                                       SaveIntNum(hKey5, "ErrNotify", Hist.TransferErrorNotify, DefaultHist.TransferErrorNotify);\r
 \r
                                                        CloseSubKey(hKey5);\r
                                                        n++;\r
@@ -572,7 +584,12 @@ void SaveRegistory(void)
                                                        // MLSD対応\r
                                                        SaveIntNum(hKey5, "MLSD", Host.UseMLSD, DefaultHost.UseMLSD);\r
                                                        // IPv6対応\r
-                                                       SaveIntNum(hKey5, "IPv6", Host.UseIPv6, DefaultHost.UseIPv6);\r
+                                                       SaveIntNum(hKey5, "NetType", Host.NetType, DefaultHost.NetType);\r
+                                                       // 自動切断対策\r
+                                                       SaveIntNum(hKey5, "Noop", Host.NoopInterval, DefaultHost.NoopInterval);\r
+                                                       // 再転送対応\r
+                                                       SaveIntNum(hKey5, "ErrMode", Host.TransferErrorMode, DefaultHost.TransferErrorMode);\r
+                                                       SaveIntNum(hKey5, "ErrNotify", Host.TransferErrorNotify, DefaultHost.TransferErrorNotify);\r
                                                }\r
                                                CloseSubKey(hKey5);\r
                                        }\r
@@ -598,6 +615,10 @@ void SaveRegistory(void)
                                StrCatOut((char*)&SSLRootCAFileHash, sizeof(SSLRootCAFileHash), Buf);\r
                                EncodePassword(Buf, Str);\r
                                WriteStringToReg(hKey4, "RootCertHash", Str);\r
+                               // ファイルアイコン表示対応\r
+                               WriteIntValueToReg(hKey4, "ListIcon", DispFileIcon);\r
+                               // ディレクトリ自動作成\r
+                               WriteIntValueToReg(hKey4, "MakeDir", MakeAllDir);\r
                        }\r
                        CloseSubKey(hKey4);\r
                }\r
@@ -618,7 +639,7 @@ void SaveRegistory(void)
 *              NO:  読み出し失敗(設定無し)\r
 *----------------------------------------------------------------------------*/\r
 \r
-int LoadRegistory(void)\r
+int LoadRegistry(void)\r
 {\r
        void *hKey3;\r
        void *hKey4;\r
@@ -850,7 +871,12 @@ int LoadRegistory(void)
                                        // MLSD対応\r
                                        ReadIntValueFromReg(hKey5, "MLSD", &Hist.UseMLSD);\r
                                        // IPv6対応\r
-                                       ReadIntValueFromReg(hKey5, "IPv6", &Hist.UseIPv6);\r
+                                       ReadIntValueFromReg(hKey5, "NetType", &Hist.NetType);\r
+                                       // 自動切断対策\r
+                                       ReadIntValueFromReg(hKey5, "Noop", &Hist.NoopInterval);\r
+                                       // 再転送対応\r
+                                       ReadIntValueFromReg(hKey5, "ErrMode", &Hist.TransferErrorMode);\r
+                                       ReadIntValueFromReg(hKey5, "ErrNotify", &Hist.TransferErrorNotify);\r
 \r
                                        CloseSubKey(hKey5);\r
                                        AddHistoryToHistory(&Hist);\r
@@ -938,10 +964,21 @@ int LoadRegistory(void)
                                        // 同時接続対応\r
                                        ReadIntValueFromReg(hKey5, "ThreadCount", &Host.MaxThreadCount);\r
                                        ReadIntValueFromReg(hKey5, "ReuseCmdSkt", &Host.ReuseCmdSkt);\r
+                                       // 1.98d以前で同時接続数が1より大きい場合はソケットの再利用なし\r
+                                       if(Version < 1985)\r
+                                       {\r
+                                               if(Host.MaxThreadCount > 1)\r
+                                                       Host.ReuseCmdSkt = NO;\r
+                                       }\r
                                        // MLSD対応\r
                                        ReadIntValueFromReg(hKey5, "MLSD", &Host.UseMLSD);\r
                                        // IPv6対応\r
-                                       ReadIntValueFromReg(hKey5, "IPv6", &Host.UseIPv6);\r
+                                       ReadIntValueFromReg(hKey5, "NetType", &Host.NetType);\r
+                                       // 自動切断対策\r
+                                       ReadIntValueFromReg(hKey5, "Noop", &Host.NoopInterval);\r
+                                       // 再転送対応\r
+                                       ReadIntValueFromReg(hKey5, "ErrMode", &Host.TransferErrorMode);\r
+                                       ReadIntValueFromReg(hKey5, "ErrNotify", &Host.TransferErrorNotify);\r
 \r
                                        CloseSubKey(hKey5);\r
 \r
@@ -957,6 +994,10 @@ int LoadRegistory(void)
                        ReadStringFromReg(hKey4, "RootCertHash", Str, PRIVATE_KEY_LEN*4+1);\r
                        DecodePassword(Str, Buf);\r
                        StrReadIn(Buf, sizeof(SSLRootCAFileHash), (char*)&SSLRootCAFileHash);\r
+                       // ファイルアイコン表示対応\r
+                       ReadIntValueFromReg(hKey4, "ListIcon", &DispFileIcon);\r
+                       // ディレクトリ自動作成\r
+                       ReadIntValueFromReg(hKey4, "MakeDir", &MakeAllDir);\r
 \r
                        CloseSubKey(hKey4);\r
                }\r
@@ -998,7 +1039,7 @@ int LoadRegistory(void)
 *                      YES/NO=設定無し\r
 *----------------------------------------------------------------------------*/\r
 \r
-DWORD LoadHideDriveListRegistory(void)\r
+DWORD LoadHideDriveListRegistry(void)\r
 {\r
        HKEY hKey1;\r
        HKEY hKey2;\r
@@ -1050,7 +1091,7 @@ DWORD LoadHideDriveListRegistory(void)
 *              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
-void ClearRegistory(void)\r
+void ClearRegistry(void)\r
 {\r
        HKEY hKey2;\r
        HKEY hKey3;\r
@@ -1089,6 +1130,20 @@ void ClearRegistory(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
@@ -1925,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
@@ -1945,7 +2002,7 @@ static int CloseReg(void *Handle)
                        if(WriteOutRegToFile(Handle) == TRUE)\r
                        {\r
 //                             /* レジストリをクリア */\r
-//                             ClearRegistory();\r
+//                             ClearRegistry();\r
                        }\r
                }\r
                /* テーブルを削除 */\r
@@ -2470,9 +2527,10 @@ static int ReadMultiStringFromReg(void *Handle, char *Name, char *Str, DWORD Siz
                        switch(IniKanjiCode)\r
                        {\r
                        case KANJI_NOCNV:\r
-                               TempSize = min1(Size-1, strlen(Pos));\r
+                               TempSize = min1(Size - 2, strlen(Pos));\r
                                TempSize = StrReadIn(Pos, TempSize, Str);\r
                                *(Str + TempSize) = NUL;\r
+                               *(Str + TempSize + 1) = NUL;\r
                                Sts = FFFTP_SUCCESS;\r
                                if(!CheckMultiStringM(Str))\r
                                        break;\r
@@ -2885,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