FFFTPのソースコードです。
Revision | 564d244d7a0347b127bc0549cd31206a29f25d8f (tree) |
---|---|
Time | 2012-02-23 00:56:27 |
Author | s_kawamoto <s_kawamoto@user...> |
Commiter | s_kawamoto |
Add support for importing settings from registry.
@@ -1423,6 +1423,16 @@ BEGIN | ||
1423 | 1423 | PUSHBUTTON "中止(&S)",UPDOWNAS_STOP,101,66,50,14 |
1424 | 1424 | END |
1425 | 1425 | |
1426 | +ini_from_reg_dlg DIALOG 0, 0, 211, 64 | |
1427 | +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | |
1428 | +CAPTION "レジストリの設定のインポート" | |
1429 | +FONT 9, "MS Shell Dlg" | |
1430 | +BEGIN | |
1431 | + LTEXT "INIファイルを使用するように設定されていますが、INIファイルではなくレジストリに設定が存在することを検出しました。\r\nレジストリの設定をインポートしますか。",-1,7,7,196,36 | |
1432 | + DEFPUSHBUTTON "はい",IDOK,48,42,50,14 | |
1433 | + PUSHBUTTON "いいえ",IDCANCEL,112,42,50,14 | |
1434 | +END | |
1435 | + | |
1426 | 1436 | |
1427 | 1437 | ///////////////////////////////////////////////////////////////////////////// |
1428 | 1438 | // |
@@ -1578,9 +1588,9 @@ BEGIN | ||
1578 | 1588 | forcepasschange_dlg, DIALOG |
1579 | 1589 | BEGIN |
1580 | 1590 | LEFTMARGIN, 7 |
1581 | - RIGHTMARGIN, 139 | |
1591 | + RIGHTMARGIN, 204 | |
1582 | 1592 | TOPMARGIN, 7 |
1583 | - BOTTOMMARGIN, 43 | |
1593 | + BOTTOMMARGIN, 57 | |
1584 | 1594 | END |
1585 | 1595 | |
1586 | 1596 | opt_trmode2_dlg, DIALOG |
@@ -2066,9 +2076,9 @@ BEGIN | ||
2066 | 2076 | updatesslroot_dlg, DIALOG |
2067 | 2077 | BEGIN |
2068 | 2078 | LEFTMARGIN, 7 |
2069 | - RIGHTMARGIN, 139 | |
2079 | + RIGHTMARGIN, 204 | |
2070 | 2080 | TOPMARGIN, 7 |
2071 | - BOTTOMMARGIN, 43 | |
2081 | + BOTTOMMARGIN, 57 | |
2072 | 2082 | END |
2073 | 2083 | |
2074 | 2084 | updown_as_with_ext_dlg, DIALOG |
@@ -2076,7 +2086,15 @@ BEGIN | ||
2076 | 2086 | LEFTMARGIN, 7 |
2077 | 2087 | RIGHTMARGIN, 180 |
2078 | 2088 | TOPMARGIN, 7 |
2079 | - BOTTOMMARGIN, 87 | |
2089 | + BOTTOMMARGIN, 82 | |
2090 | + END | |
2091 | + | |
2092 | + ini_from_reg_dlg, DIALOG | |
2093 | + BEGIN | |
2094 | + LEFTMARGIN, 7 | |
2095 | + RIGHTMARGIN, 204 | |
2096 | + TOPMARGIN, 7 | |
2097 | + BOTTOMMARGIN, 57 | |
2080 | 2098 | END |
2081 | 2099 | END |
2082 | 2100 | #endif // APSTUDIO_INVOKED |
@@ -114,6 +114,7 @@ | ||
114 | 114 | #define savecrypt_dlg 191 |
115 | 115 | #define updatesslroot_dlg 192 |
116 | 116 | #define updown_as_with_ext_dlg 193 |
117 | +#define ini_from_reg_dlg 194 | |
117 | 118 | #define TRANS_TIME_BAR 1002 |
118 | 119 | #define TRANS_TEXT 1003 |
119 | 120 | #define TRANS_REMOTE 1003 |
@@ -629,7 +630,7 @@ | ||
629 | 630 | // |
630 | 631 | #ifdef APSTUDIO_INVOKED |
631 | 632 | #ifndef APSTUDIO_READONLY_SYMBOLS |
632 | -#define _APS_NEXT_RESOURCE_VALUE 193 | |
633 | +#define _APS_NEXT_RESOURCE_VALUE 195 | |
633 | 634 | #define _APS_NEXT_COMMAND_VALUE 40177 |
634 | 635 | #define _APS_NEXT_CONTROL_VALUE 1213 |
635 | 636 | #define _APS_NEXT_SYMED_VALUE 101 |
@@ -1452,6 +1452,16 @@ BEGIN | ||
1452 | 1452 | PUSHBUTTON "Cancel",UPDOWNAS_STOP,101,66,50,14 |
1453 | 1453 | END |
1454 | 1454 | |
1455 | +ini_from_reg_dlg DIALOG 0, 0, 211, 64 | |
1456 | +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | |
1457 | +CAPTION "Import settings from registry" | |
1458 | +FONT 9, "MS Shell Dlg" | |
1459 | +BEGIN | |
1460 | + 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 | |
1461 | + DEFPUSHBUTTON "Yes",IDOK,48,42,50,14 | |
1462 | + PUSHBUTTON "No",IDCANCEL,112,42,50,14 | |
1463 | +END | |
1464 | + | |
1455 | 1465 | |
1456 | 1466 | ///////////////////////////////////////////////////////////////////////////// |
1457 | 1467 | // |
@@ -1607,9 +1617,9 @@ BEGIN | ||
1607 | 1617 | forcepasschange_dlg, DIALOG |
1608 | 1618 | BEGIN |
1609 | 1619 | LEFTMARGIN, 7 |
1610 | - RIGHTMARGIN, 139 | |
1620 | + RIGHTMARGIN, 204 | |
1611 | 1621 | TOPMARGIN, 7 |
1612 | - BOTTOMMARGIN, 43 | |
1622 | + BOTTOMMARGIN, 57 | |
1613 | 1623 | END |
1614 | 1624 | |
1615 | 1625 | opt_trmode2_dlg, DIALOG |
@@ -2092,9 +2102,9 @@ BEGIN | ||
2092 | 2102 | updatesslroot_dlg, DIALOG |
2093 | 2103 | BEGIN |
2094 | 2104 | LEFTMARGIN, 7 |
2095 | - RIGHTMARGIN, 139 | |
2105 | + RIGHTMARGIN, 204 | |
2096 | 2106 | TOPMARGIN, 7 |
2097 | - BOTTOMMARGIN, 43 | |
2107 | + BOTTOMMARGIN, 57 | |
2098 | 2108 | END |
2099 | 2109 | |
2100 | 2110 | updown_as_with_ext_dlg, DIALOG |
@@ -2102,7 +2112,15 @@ BEGIN | ||
2102 | 2112 | LEFTMARGIN, 7 |
2103 | 2113 | RIGHTMARGIN, 180 |
2104 | 2114 | TOPMARGIN, 7 |
2105 | - BOTTOMMARGIN, 87 | |
2115 | + BOTTOMMARGIN, 82 | |
2116 | + END | |
2117 | + | |
2118 | + ini_from_reg_dlg, DIALOG | |
2119 | + BEGIN | |
2120 | + LEFTMARGIN, 7 | |
2121 | + RIGHTMARGIN, 204 | |
2122 | + TOPMARGIN, 7 | |
2123 | + BOTTOMMARGIN, 57 | |
2106 | 2124 | END |
2107 | 2125 | END |
2108 | 2126 | #endif // APSTUDIO_INVOKED |
@@ -114,6 +114,7 @@ | ||
114 | 114 | #define savecrypt_dlg 191 |
115 | 115 | #define updatesslroot_dlg 192 |
116 | 116 | #define updown_as_with_ext_dlg 193 |
117 | +#define ini_from_reg_dlg 194 | |
117 | 118 | #define TRANS_TIME_BAR 1002 |
118 | 119 | #define TRANS_TEXT 1003 |
119 | 120 | #define TRANS_REMOTE 1003 |
@@ -629,7 +630,7 @@ | ||
629 | 630 | // |
630 | 631 | #ifdef APSTUDIO_INVOKED |
631 | 632 | #ifndef APSTUDIO_READONLY_SYMBOLS |
632 | -#define _APS_NEXT_RESOURCE_VALUE 193 | |
633 | +#define _APS_NEXT_RESOURCE_VALUE 195 | |
633 | 634 | #define _APS_NEXT_COMMAND_VALUE 40177 |
634 | 635 | #define _APS_NEXT_CONTROL_VALUE 1213 |
635 | 636 | #define _APS_NEXT_SYMED_VALUE 101 |
@@ -1704,12 +1704,17 @@ int CheckFname(char *str, char *regexp); | ||
1704 | 1704 | void SaveRegistry(void); |
1705 | 1705 | int LoadRegistry(void); |
1706 | 1706 | void ClearRegistry(void); |
1707 | +// ポータブル版判定 | |
1708 | +void ClearIni(void); | |
1707 | 1709 | void SetMasterPassword( const char* ); |
1708 | 1710 | int GetMasterPasswordStatus(void); |
1709 | 1711 | int ValidateMasterPassword(void); |
1710 | 1712 | DWORD LoadHideDriveListRegistry(void); |
1711 | 1713 | void SaveSettingsToFile(void); |
1712 | 1714 | int LoadSettingsFromFile(void); |
1715 | +// ポータブル版判定 | |
1716 | +int IsRegAvailable(); | |
1717 | +int IsIniAvailable(); | |
1713 | 1718 | |
1714 | 1719 | /*===== lvtips.c =====*/ |
1715 | 1720 |
@@ -407,6 +407,8 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow) | ||
407 | 407 | char PwdBuf[FMAX_PATH+1]; |
408 | 408 | int useDefautPassword = 0; /* 警告文表示用 */ |
409 | 409 | int masterpass; |
410 | + // ポータブル版判定 | |
411 | + int ImportPortable; | |
410 | 412 | |
411 | 413 | sts = FFFTP_FAIL; |
412 | 414 |
@@ -448,10 +450,20 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow) | ||
448 | 450 | GetModuleFileName(NULL, PortableFilePath, FMAX_PATH); |
449 | 451 | strcpy(GetFileName(PortableFilePath), "portable"); |
450 | 452 | CheckPortableVersion(); |
453 | + ImportPortable = NO; | |
451 | 454 | if(PortableVersion == YES) |
452 | 455 | { |
453 | 456 | ForceIni = YES; |
454 | 457 | RegType = REGTYPE_INI; |
458 | + if(IsRegAvailable() == YES && IsIniAvailable() == NO) | |
459 | + { | |
460 | + if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(ini_from_reg_dlg), GetMainHwnd(), ExeEscDialogProc) == YES) | |
461 | + { | |
462 | + ImportPortable = YES; | |
463 | + ForceIni = NO; | |
464 | + RegType = REGTYPE_REG; | |
465 | + } | |
466 | + } | |
455 | 467 | } |
456 | 468 | |
457 | 469 | // AllocConsole(); |
@@ -506,6 +518,13 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow) | ||
506 | 518 | { |
507 | 519 | LoadRegistry(); |
508 | 520 | |
521 | + // ポータブル版判定 | |
522 | + if(ImportPortable == YES) | |
523 | + { | |
524 | + ForceIni = YES; | |
525 | + RegType = REGTYPE_INI; | |
526 | + } | |
527 | + | |
509 | 528 | // 暗号化通信対応 |
510 | 529 | SetSSLTimeoutCallback(TimeOut * 1000, SSLTimeoutCallback); |
511 | 530 | SetSSLConfirmCallback(SSLConfirmCallback); |
@@ -1387,6 +1406,8 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA | ||
1387 | 1406 | if(DialogBox(hInstFtp, MAKEINTRESOURCE(reginit_dlg), hWnd, ExeEscDialogProc) == YES) |
1388 | 1407 | { |
1389 | 1408 | ClearRegistry(); |
1409 | + // ポータブル版判定 | |
1410 | + ClearIni(); | |
1390 | 1411 | SaveExit = NO; |
1391 | 1412 | PostMessage(hWnd, WM_CLOSE, 0, 0L); |
1392 | 1413 | } |
@@ -2094,6 +2115,9 @@ static void ExitProc(HWND hWnd) | ||
2094 | 2115 | { |
2095 | 2116 | GetListTabWidth(); |
2096 | 2117 | SaveRegistry(); |
2118 | + // ポータブル版判定 | |
2119 | + if(RegType == REGTYPE_REG) | |
2120 | + ClearIni(); | |
2097 | 2121 | |
2098 | 2122 | if((CacheEntry > 0) && (CacheSave == YES)) |
2099 | 2123 | SaveCache(); |
@@ -2156,6 +2156,18 @@ END_ROUTINE | ||
2156 | 2156 | return r; |
2157 | 2157 | } |
2158 | 2158 | |
2159 | +BOOL DeleteFileM(LPCSTR lpFileName) | |
2160 | +{ | |
2161 | + BOOL r = FALSE; | |
2162 | + wchar_t* pw0 = NULL; | |
2163 | +START_ROUTINE | |
2164 | + pw0 = DuplicateMtoW(lpFileName, -1); | |
2165 | + r = DeleteFileW(pw0); | |
2166 | +END_ROUTINE | |
2167 | + FreeDuplicatedString(pw0); | |
2168 | + return r; | |
2169 | +} | |
2170 | + | |
2159 | 2171 | int mkdirM(const char * _Path) |
2160 | 2172 | { |
2161 | 2173 | int r = -1; |
@@ -176,6 +176,9 @@ BOOL CopyFileM(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, BOOL bFailIfExis | ||
176 | 176 | #undef MoveFile |
177 | 177 | #define MoveFile MoveFileM |
178 | 178 | BOOL MoveFileM(LPCSTR lpExistingFileName, LPCSTR lpNewFileName); |
179 | +#undef DeleteFile | |
180 | +#define DeleteFile DeleteFileM | |
181 | +BOOL DeleteFileM(LPCSTR lpFileName); | |
179 | 182 | #undef mkdir |
180 | 183 | #define mkdir _mkdirM |
181 | 184 | int mkdirM(const char * _Path); |
@@ -1130,6 +1130,20 @@ void ClearRegistry(void) | ||
1130 | 1130 | } |
1131 | 1131 | |
1132 | 1132 | |
1133 | +// ポータブル版判定 | |
1134 | +void ClearIni(void) | |
1135 | +{ | |
1136 | +// FILE *Strm; | |
1137 | +// if((Strm = fopen(AskIniFilePath(), "rt")) != NULL) | |
1138 | +// { | |
1139 | +// fclose(Strm); | |
1140 | +// MoveFileToTrashCan(AskIniFilePath()); | |
1141 | +// } | |
1142 | + DeleteFile(AskIniFilePath()); | |
1143 | + return; | |
1144 | +} | |
1145 | + | |
1146 | + | |
1133 | 1147 | /*----- 設定をファイルに保存 -------------------------------------------------- |
1134 | 1148 | * |
1135 | 1149 | * Parameter |
@@ -1966,18 +1980,20 @@ static int CloseReg(void *Handle) | ||
1966 | 1980 | { |
1967 | 1981 | REGDATATBL *Pos; |
1968 | 1982 | REGDATATBL *Next; |
1969 | - FILE *Strm; | |
1983 | + // ポータブル版判定 | |
1984 | +// FILE *Strm; | |
1970 | 1985 | |
1971 | 1986 | if(TmpRegType == REGTYPE_REG) |
1972 | 1987 | { |
1973 | 1988 | RegCloseKey(Handle); |
1974 | 1989 | |
1975 | 1990 | /* INIファイルを削除 */ |
1976 | - if((Strm = fopen(AskIniFilePath(), "rt")) != NULL) | |
1977 | - { | |
1978 | - fclose(Strm); | |
1979 | - MoveFileToTrashCan(AskIniFilePath()); | |
1980 | - } | |
1991 | + // ポータブル版判定 | |
1992 | +// if((Strm = fopen(AskIniFilePath(), "rt")) != NULL) | |
1993 | +// { | |
1994 | +// fclose(Strm); | |
1995 | +// MoveFileToTrashCan(AskIniFilePath()); | |
1996 | +// } | |
1981 | 1997 | } |
1982 | 1998 | else |
1983 | 1999 | { |
@@ -2927,3 +2943,33 @@ DWORD GetRandamDWRODValue(void) | ||
2927 | 2943 | } |
2928 | 2944 | return rndValue; |
2929 | 2945 | } |
2946 | + | |
2947 | +// ポータブル版判定 | |
2948 | +int IsRegAvailable() | |
2949 | +{ | |
2950 | + int Sts; | |
2951 | + void* h; | |
2952 | + Sts = NO; | |
2953 | + SetRegType(REGTYPE_REG); | |
2954 | + if(OpenReg("FFFTP", &h) == FFFTP_SUCCESS) | |
2955 | + { | |
2956 | + CloseReg(h); | |
2957 | + Sts = YES; | |
2958 | + } | |
2959 | + return Sts; | |
2960 | +} | |
2961 | + | |
2962 | +int IsIniAvailable() | |
2963 | +{ | |
2964 | + int Sts; | |
2965 | + void* h; | |
2966 | + Sts = NO; | |
2967 | + SetRegType(REGTYPE_INI); | |
2968 | + if(OpenReg("FFFTP", &h) == FFFTP_SUCCESS) | |
2969 | + { | |
2970 | + CloseReg(h); | |
2971 | + Sts = YES; | |
2972 | + } | |
2973 | + return Sts; | |
2974 | +} | |
2975 | + |